fix: clear resolved evidence gaps after a successful scoring retry

This commit is contained in:
2026-10-17 20:19:37 +08:00
parent ef5c3ecab2
commit 9a1afd5020
2 changed files with 5 additions and 0 deletions
+4
View File
@@ -607,6 +607,9 @@ def test_scoring_retry_carries_target_contract_and_specific_repair_feedback(sqli
"description": "实现方法", "required_evidence": ["实验数据", "实现方法"]}
created = services.create_batch(SimpleNamespace(course_version_id=1, rubric_version_id=1), db)
batch = db.get(ScoringBatch, created["id"])
db.add(CriterionScore(batch_id=batch.id, project_id=item.id, criterion_id=criterion["criterion_id"],
status="needs_review", evidence_gaps=[{"target_id": "t1", "reason": "上次未命中正文"}]))
db.commit()
class Client:
calls = 0
def json_call(self, prompt, payload, *args, **kwargs):
@@ -626,6 +629,7 @@ def test_scoring_retry_carries_target_contract_and_specific_repair_feedback(sqli
score = _score_criterion(db, batch, item, criterion, client,
retriever=lambda *args, **kwargs: [], multi_retriever=selected)
assert score.status == "scored" and client.calls == 2
assert score.evidence_gaps == []
@pytest.mark.parametrize("version", [None, 1])
+1
View File
@@ -263,6 +263,7 @@ def _score_criterion(db, batch, project, criterion, client, *, retriever, multi_
gap["reason"] = result.reason
else:
score.status, score.error = STATUS_SCORED, ""
score.evidence_gaps = []
for evidence in db.scalars(select(ScoreEvidence).where(ScoreEvidence.score_id == score.id)).all():
db.delete(evidence)
by_id = {chunk["chunk_id"]: chunk for chunk in chunks}