fix: label citation links by their actual target

This commit is contained in:
2026-09-27 16:41:03 +08:00
parent e5bf1cf250
commit 92906c82bc
6 changed files with 50 additions and 13 deletions
+6 -1
View File
@@ -83,7 +83,8 @@ def test_get_scores_pages_projects_and_criteria(db, monkeypatch):
"rows": [{"criterion": {"criterion_id": f"C{index}", "name": f"评分项{index}", "max_score": 10},
"score_id": index, "model_score": 8, "teacher_score": None, "final_score": 8,
"status": "scored", "error": "", "evidence": [{"page": index + 1,
"quote": "证据" * 200, "document": "报告.pdf", "image_url": None}]}
"quote": "证据" * 200, "document": "报告.pdf",
"image_url": f"/api/assets/{item.id}/1" if index == 0 else None}]}
for index in range(14)]}
monkeypatch.setattr(agent_tools, "project_result", result)
@@ -92,6 +93,10 @@ def test_get_scores_pages_projects_and_criteria(db, monkeypatch):
assert first_page["results"][0]["project_id"] == first.id
assert len(first_page["results"][0]["rows"]) == 6
assert first_page["next_criterion_offset"] == 6 and first_page["next_project_offset"] == 1
assert first_page["citations"][0]["url"] == f"/?page=scores&batch_id={created['id']}&project_id={first.id}"
assert first_page["citations"][0]["image_url"] == f"/api/assets/{first.id}/1"
assert first_page["citations"][1]["url"] == first_page["citations"][0]["url"]
assert first_page["citations"][1]["image_url"] is None
assert len(json.dumps(first_page, ensure_ascii=False)) < 12000
later = execute(db, conversation, "get_scores", {"batch_id": created["id"],
"project_offset": 1, "criterion_offset": 12}, "")
+1 -1
View File
@@ -285,7 +285,7 @@ def scores(db, convo, args, _user):
for evidence in row["evidence"][:2]:
citations.append({"title": str(evidence["document"])[:200], "page": evidence["page"],
"quote": evidence["quote"][:320],
"url": evidence["image_url"] or url})
"url": url, "image_url": evidence["image_url"]})
next_criterion_offset = args.criterion_offset + 6 if page and args.criterion_offset + 6 < len(page[0][1]["rows"]) else None
next_project_offset = args.project_offset + 1 if args.project_offset + 1 < len(results) else None
return {"batch_id": batch.id, "status_filter": args.status, "count": len(results),