nuocuhz Claude Sonnet 4.6 commited on
Commit
ea99c33
1 Parent(s): 17248c5

Add meta-review tab, decision field, rebuild bundle with metareview/decision

Browse files
Files changed (3) hide show
  1. app.py +28 -16
  2. bundle.json.gz +2 -2
  3. fetcher.py +2 -0
app.py CHANGED
@@ -16,15 +16,23 @@ def _get_api_key(user_key: str) -> str:
16
  def load_paper(paper_id: str):
17
  paper_id = (paper_id or "").strip()
18
  if not paper_id:
19
- return gr.update(choices=[], value=None), "Please enter a paper ID.", ""
20
  try:
21
  paper = fetch_paper_reviews(paper_id)
22
  _paper_cache[paper_id] = paper
23
  reviewers = [r["reviewer_id"] for r in paper["reviews"]]
24
- info = f"**{paper.get('title', paper_id)}**\n\n{paper.get('conference', '')} 路 {len(reviewers)} reviewer(s)"
25
- return gr.update(choices=reviewers, value=reviewers[0] if reviewers else None), info, ""
 
 
 
 
 
 
 
 
26
  except Exception as e:
27
- return gr.update(choices=[], value=None), f"Error: {e}", ""
28
 
29
 
30
  def show_review(paper_id: str, reviewer_id: str):
@@ -113,24 +121,28 @@ with gr.Blocks(title="Review AI Rater", theme=gr.themes.Soft()) as demo:
113
  with gr.Row():
114
  paper_id_box = gr.Textbox(
115
  label="OpenReview Paper ID",
116
- placeholder="e.g. B1e3OlStPB (1000 Re虏 test papers available offline)",
117
  scale=3,
118
  )
119
  load_btn = gr.Button("Load Paper", variant="primary", scale=1)
120
 
121
  paper_info = gr.Markdown("")
122
 
123
- with gr.Row():
124
- reviewer_dd = gr.Dropdown(choices=[], label="Select Reviewer", interactive=True, scale=2)
125
- rate_one_btn = gr.Button("AI Rate This Reviewer", variant="primary", scale=1)
126
- rate_all_btn = gr.Button("AI Rate All Reviewers", variant="secondary", scale=1)
127
-
128
- review_display = gr.Markdown("")
129
- gr.Markdown("---")
130
- gr.Markdown("### Rating Results")
131
- result_display = gr.Markdown("")
132
-
133
- load_btn.click(load_paper, [paper_id_box], [reviewer_dd, paper_info, result_display])
 
 
 
 
134
  reviewer_dd.change(show_review, [paper_id_box, reviewer_dd], [review_display])
135
  rate_one_btn.click(run_rating, [paper_id_box, reviewer_dd, api_key_box], [result_display])
136
  rate_all_btn.click(run_rating_all, [paper_id_box, api_key_box], [result_display])
 
16
  def load_paper(paper_id: str):
17
  paper_id = (paper_id or "").strip()
18
  if not paper_id:
19
+ return gr.update(choices=[], value=None), "Please enter a paper ID.", "", ""
20
  try:
21
  paper = fetch_paper_reviews(paper_id)
22
  _paper_cache[paper_id] = paper
23
  reviewers = [r["reviewer_id"] for r in paper["reviews"]]
24
+ decision = paper.get("decision", "")
25
+ info = f"**{paper.get('title', paper_id)}**\n\n{paper.get('conference', '')}"
26
+ if decision:
27
+ info += f" 路 **Decision:** {decision}"
28
+ info += f" 路 {len(reviewers)} reviewer(s)"
29
+
30
+ metareview = paper.get("metareview", "")
31
+ meta_md = f"**Area Chair Meta-Review:**\n\n{metareview}" if metareview else "*No meta-review available.*"
32
+
33
+ return gr.update(choices=reviewers, value=reviewers[0] if reviewers else None), info, meta_md, ""
34
  except Exception as e:
35
+ return gr.update(choices=[], value=None), f"Error: {e}", "", ""
36
 
37
 
38
  def show_review(paper_id: str, reviewer_id: str):
 
121
  with gr.Row():
122
  paper_id_box = gr.Textbox(
123
  label="OpenReview Paper ID",
124
+ placeholder="e.g. B1e3OlStPB",
125
  scale=3,
126
  )
127
  load_btn = gr.Button("Load Paper", variant="primary", scale=1)
128
 
129
  paper_info = gr.Markdown("")
130
 
131
+ with gr.Tabs():
132
+ with gr.Tab("Reviews"):
133
+ with gr.Row():
134
+ reviewer_dd = gr.Dropdown(choices=[], label="Select Reviewer", interactive=True, scale=2)
135
+ rate_one_btn = gr.Button("AI Rate This Reviewer", variant="primary", scale=1)
136
+ rate_all_btn = gr.Button("AI Rate All Reviewers", variant="secondary", scale=1)
137
+ review_display = gr.Markdown("")
138
+ gr.Markdown("---")
139
+ gr.Markdown("### Rating Results")
140
+ result_display = gr.Markdown("")
141
+
142
+ with gr.Tab("Meta-Review"):
143
+ meta_display = gr.Markdown("*Load a paper to see the meta-review.*")
144
+
145
+ load_btn.click(load_paper, [paper_id_box], [reviewer_dd, paper_info, meta_display, result_display])
146
  reviewer_dd.change(show_review, [paper_id_box, reviewer_dd], [review_display])
147
  rate_one_btn.click(run_rating, [paper_id_box, reviewer_dd, api_key_box], [result_display])
148
  rate_all_btn.click(run_rating_all, [paper_id_box, api_key_box], [result_display])
bundle.json.gz CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:8ae808201850b7abfd52f6a31354f51b40a8b82f3fc8f1a99535abde2088be9e
3
- size 93361107
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7e8d1c3d6bb3539a50da345f4f3010ece935d3d1a0ece0aaa985c58523cdd931
3
+ size 102679294
fetcher.py CHANGED
@@ -85,6 +85,8 @@ def _load_bundle():
85
  _bundle[pid] = {
86
  "title": p.get("title", pid),
87
  "conference": p.get("conf", ""),
 
 
88
  "reviews": [
89
  {
90
  "reviewer_id": r["r"],
 
85
  _bundle[pid] = {
86
  "title": p.get("title", pid),
87
  "conference": p.get("conf", ""),
88
+ "metareview": p.get("metareview", ""),
89
+ "decision": p.get("decision", ""),
90
  "reviews": [
91
  {
92
  "reviewer_id": r["r"],