fix: clear resolved evidence gaps after a successful scoring retry
This commit is contained in:
@@ -607,6 +607,9 @@ def test_scoring_retry_carries_target_contract_and_specific_repair_feedback(sqli
|
|||||||
"description": "实现方法", "required_evidence": ["实验数据", "实现方法"]}
|
"description": "实现方法", "required_evidence": ["实验数据", "实现方法"]}
|
||||||
created = services.create_batch(SimpleNamespace(course_version_id=1, rubric_version_id=1), db)
|
created = services.create_batch(SimpleNamespace(course_version_id=1, rubric_version_id=1), db)
|
||||||
batch = db.get(ScoringBatch, created["id"])
|
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:
|
class Client:
|
||||||
calls = 0
|
calls = 0
|
||||||
def json_call(self, prompt, payload, *args, **kwargs):
|
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,
|
score = _score_criterion(db, batch, item, criterion, client,
|
||||||
retriever=lambda *args, **kwargs: [], multi_retriever=selected)
|
retriever=lambda *args, **kwargs: [], multi_retriever=selected)
|
||||||
assert score.status == "scored" and client.calls == 2
|
assert score.status == "scored" and client.calls == 2
|
||||||
|
assert score.evidence_gaps == []
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("version", [None, 1])
|
@pytest.mark.parametrize("version", [None, 1])
|
||||||
|
|||||||
@@ -263,6 +263,7 @@ def _score_criterion(db, batch, project, criterion, client, *, retriever, multi_
|
|||||||
gap["reason"] = result.reason
|
gap["reason"] = result.reason
|
||||||
else:
|
else:
|
||||||
score.status, score.error = STATUS_SCORED, ""
|
score.status, score.error = STATUS_SCORED, ""
|
||||||
|
score.evidence_gaps = []
|
||||||
for evidence in db.scalars(select(ScoreEvidence).where(ScoreEvidence.score_id == score.id)).all():
|
for evidence in db.scalars(select(ScoreEvidence).where(ScoreEvidence.score_id == score.id)).all():
|
||||||
db.delete(evidence)
|
db.delete(evidence)
|
||||||
by_id = {chunk["chunk_id"]: chunk for chunk in chunks}
|
by_id = {chunk["chunk_id"]: chunk for chunk in chunks}
|
||||||
|
|||||||
Reference in New Issue
Block a user