fix: restore chat citations and tool details
This commit is contained in:
@@ -9,7 +9,7 @@ from fastapi import HTTPException
|
||||
from fastapi.testclient import TestClient
|
||||
from sqlalchemy import select
|
||||
|
||||
from wisegrade import chat_api, services
|
||||
from wisegrade import agent_tools, chat_api, services
|
||||
from wisegrade.actions import confirm, prepare
|
||||
from wisegrade.agent_tools import execute
|
||||
from wisegrade.db import get_db
|
||||
@@ -70,6 +70,36 @@ def test_tool_scope_snapshots_and_project_citations(db):
|
||||
assert rules["source"] == "batch_snapshot"
|
||||
|
||||
|
||||
def test_get_scores_pages_projects_and_criteria(db, monkeypatch):
|
||||
first = add_project(db, "123450010")
|
||||
second = add_project(db, "123450011")
|
||||
created = services.create_batch(SimpleNamespace(course_version_id=1, rubric_version_id=1), db)
|
||||
conversation = Conversation(title="分页评分", batch_id=created["id"])
|
||||
db.add(conversation)
|
||||
db.commit()
|
||||
|
||||
def result(_db, _batch, item):
|
||||
return {"student_no": f"{item.id}", "name": "学生", "totals": {"overall": 80},
|
||||
"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}]}
|
||||
for index in range(14)]}
|
||||
|
||||
monkeypatch.setattr(agent_tools, "project_result", result)
|
||||
first_page = execute(db, conversation, "get_scores", {"batch_id": created["id"]}, "")
|
||||
assert first_page["count"] == 2 and len(first_page["results"]) == 1
|
||||
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 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}, "")
|
||||
assert later["results"][0]["project_id"] == second.id
|
||||
assert [row["criterion_id"] for row in later["results"][0]["rows"]] == ["C12", "C13"]
|
||||
assert later["next_project_offset"] is None and later["next_criterion_offset"] is None
|
||||
|
||||
|
||||
def test_import_confirmation_hash_change_index_and_idempotency(environment, db, monkeypatch, session_factory):
|
||||
folder = environment / "inbox" / "batch" / "123450003_张三_机器人"
|
||||
folder.mkdir(parents=True)
|
||||
|
||||
Reference in New Issue
Block a user