adddrett commited on
Commit
0d354cf
·
1 Parent(s): fb1b4d2
Files changed (1) hide show
  1. app.py +10 -12
app.py CHANGED
@@ -75,16 +75,18 @@ def handle_load(source, c_type, c_id, model):
75
  json.dumps({})
76
  ]
77
 
 
78
  def handle_qa_select(selection, qa_json):
79
  if not selection or not qa_json:
80
- return [""] * 8
 
81
  try:
82
  qas = json.loads(qa_json)
83
  idx = int(selection.split(":")[0][1:]) - 1
84
  curr = qas[idx]
85
- return [curr['id'], curr['q'], curr['a'], "correct", "无", "", "", ""]
86
  except:
87
- return [""] * 8
88
 
89
  # ============== UI 布局 ==============
90
  def create_ui():
@@ -122,7 +124,6 @@ def create_ui():
122
  a_disp = gr.Text(label="标准答案")
123
  status_opt = gr.Radio(
124
  label="审核结论",
125
- # 【修正】将 "modified" 改为 "needs_modification" 匹配 DataManager 内部逻辑
126
  choices=[("正确", "correct"), ("错误", "incorrect"), ("优化", "needs_modification")],
127
  value="correct"
128
  )
@@ -130,7 +131,6 @@ def create_ui():
130
 
131
  comment = gr.Text(label="审核备注")
132
 
133
- # 【新增】状态提示框,用于反馈保存成功与否
134
  save_status = gr.Text(label="操作反馈", interactive=False)
135
  save_btn = gr.Button("💾 提交单条审核", variant="primary")
136
 
@@ -139,7 +139,6 @@ def create_ui():
139
  next_btn = gr.Button("➡️ 下一个图表")
140
 
141
  gr.Markdown("---")
142
- # 【新增】下载区
143
  with gr.Row():
144
  export_btn = gr.Button("📥 导出并下载审核记录", variant="secondary")
145
  download_file = gr.File(label="下载文件", visible=False)
@@ -157,10 +156,11 @@ def create_ui():
157
  id_dd.change(handle_load, inputs=[src_dd, typ_dd, id_dd, mdl_dd], outputs=load_event_outputs)
158
  mdl_dd.change(handle_load, inputs=[src_dd, typ_dd, id_dd, mdl_dd], outputs=load_event_outputs)
159
 
 
160
  qa_radio.change(
161
  handle_qa_select,
162
  inputs=[qa_radio, qa_store],
163
- outputs=[curr_qid, q_disp, a_disp, status_opt, err_type, gr.State(), gr.State(), comment]
164
  )
165
 
166
  # 导航逻辑
@@ -172,14 +172,14 @@ def create_ui():
172
  gr.update(value=target['chart_type']),
173
  gr.update(value=target['chart_id']),
174
  gr.update(value=target['model']),
175
- gr.update(value="") # 切换时清空状态
176
  ]
177
  return [gr.update()] * 4 + [gr.update()]
178
 
179
  prev_btn.click(lambda: navigate(-1), outputs=[src_dd, typ_dd, id_dd, mdl_dd, save_status])
180
  next_btn.click(lambda: navigate(1), outputs=[src_dd, typ_dd, id_dd, mdl_dd, save_status])
181
 
182
- # 【修复与增强】保存逻辑
183
  def quick_save(qid, cid, src, status, cmt):
184
  if not qid:
185
  return "⚠️ 无效操作:未选择题目", gr.update()
@@ -189,7 +189,6 @@ def create_ui():
189
  "status": status, "comment": cmt
190
  })
191
 
192
- # 【增强】保存后立刻刷新全局统计信息
193
  stats = data_manager.get_review_stats()
194
  stats_str = f"✅{stats['correct']} | ❌{stats['incorrect']} | 总{stats['total']}"
195
 
@@ -198,11 +197,10 @@ def create_ui():
198
  save_btn.click(
199
  quick_save,
200
  inputs=[curr_qid, id_dd, src_dd, status_opt, comment],
201
- # 【修复】将结果输出到已经实例化的组件上
202
  outputs=[save_status, stats_txt]
203
  )
204
 
205
- # 【新增】导出下载逻辑
206
  def handle_export():
207
  file_path = data_manager.export_reviews()
208
  return gr.update(value=file_path, visible=True)
 
75
  json.dumps({})
76
  ]
77
 
78
+ # 【修复处 1】移除冗余返回值,只返回需要更新的 6 个 UI 状态
79
  def handle_qa_select(selection, qa_json):
80
  if not selection or not qa_json:
81
+ # curr_qid, q_disp, a_disp, status_opt, err_type, comment
82
+ return ["", "", "", "correct", "无", ""]
83
  try:
84
  qas = json.loads(qa_json)
85
  idx = int(selection.split(":")[0][1:]) - 1
86
  curr = qas[idx]
87
+ return [curr['id'], curr['q'], curr['a'], "correct", "无", ""]
88
  except:
89
+ return ["", "", "", "correct", "无", ""]
90
 
91
  # ============== UI 布局 ==============
92
  def create_ui():
 
124
  a_disp = gr.Text(label="标准答案")
125
  status_opt = gr.Radio(
126
  label="审核结论",
 
127
  choices=[("正确", "correct"), ("错误", "incorrect"), ("优化", "needs_modification")],
128
  value="correct"
129
  )
 
131
 
132
  comment = gr.Text(label="审核备注")
133
 
 
134
  save_status = gr.Text(label="操作反馈", interactive=False)
135
  save_btn = gr.Button("💾 提交单条审核", variant="primary")
136
 
 
139
  next_btn = gr.Button("➡️ 下一个图表")
140
 
141
  gr.Markdown("---")
 
142
  with gr.Row():
143
  export_btn = gr.Button("📥 导出并下载审核记录", variant="secondary")
144
  download_file = gr.File(label="下载文件", visible=False)
 
156
  id_dd.change(handle_load, inputs=[src_dd, typ_dd, id_dd, mdl_dd], outputs=load_event_outputs)
157
  mdl_dd.change(handle_load, inputs=[src_dd, typ_dd, id_dd, mdl_dd], outputs=load_event_outputs)
158
 
159
+ # 【修复处 2】移除这里 outputs 里的 gr.State(),使其与上方返回的 6 个值严格对齐
160
  qa_radio.change(
161
  handle_qa_select,
162
  inputs=[qa_radio, qa_store],
163
+ outputs=[curr_qid, q_disp, a_disp, status_opt, err_type, comment]
164
  )
165
 
166
  # 导航逻辑
 
172
  gr.update(value=target['chart_type']),
173
  gr.update(value=target['chart_id']),
174
  gr.update(value=target['model']),
175
+ gr.update(value="") # 切换时清空反馈状态
176
  ]
177
  return [gr.update()] * 4 + [gr.update()]
178
 
179
  prev_btn.click(lambda: navigate(-1), outputs=[src_dd, typ_dd, id_dd, mdl_dd, save_status])
180
  next_btn.click(lambda: navigate(1), outputs=[src_dd, typ_dd, id_dd, mdl_dd, save_status])
181
 
182
+ # 保存逻辑
183
  def quick_save(qid, cid, src, status, cmt):
184
  if not qid:
185
  return "⚠️ 无效操作:未选择题目", gr.update()
 
189
  "status": status, "comment": cmt
190
  })
191
 
 
192
  stats = data_manager.get_review_stats()
193
  stats_str = f"✅{stats['correct']} | ❌{stats['incorrect']} | 总{stats['total']}"
194
 
 
197
  save_btn.click(
198
  quick_save,
199
  inputs=[curr_qid, id_dd, src_dd, status_opt, comment],
 
200
  outputs=[save_status, stats_txt]
201
  )
202
 
203
+ # 导出下载逻辑
204
  def handle_export():
205
  file_path = data_manager.export_reviews()
206
  return gr.update(value=file_path, visible=True)