feat: unify scoring and chat evidence pages
This commit is contained in:
@@ -9,6 +9,7 @@ from sqlalchemy import select
|
||||
|
||||
from .actions import prepare, require_scope
|
||||
from .exports import batch_projects, project_result
|
||||
from .knowledge_pages import page_links
|
||||
from .models import (Conversation, Course, CourseVersion, IndexTask, KnowledgeDocument,
|
||||
Project, RubricVersion, ScoringBatch, Student, SubmissionFile)
|
||||
from .rag import retrieve
|
||||
@@ -206,12 +207,11 @@ def _search(db, version_id, project_id, query, *, public_only=False):
|
||||
citations = []
|
||||
for chunk in chunks:
|
||||
doc = db.get(KnowledgeDocument, chunk["document_id"])
|
||||
file_id = doc.submission_file_id if doc else None
|
||||
links = page_links(db, chunk["document_id"], chunk["page"])
|
||||
citations.append({"chunk_id": chunk["chunk_id"], "document_id": chunk["document_id"],
|
||||
"title": doc.title if doc else "资料", "page": chunk["page"],
|
||||
"quote": chunk["text"][:500], "project_id": chunk["project_id"],
|
||||
"url": f"/api/knowledge/documents/{chunk['document_id']}/pages/{chunk['page']}",
|
||||
"image_url": f"/api/assets/{file_id}/{chunk['page']}" if file_id else None})
|
||||
**links})
|
||||
return {"citations": citations, "found": bool(citations)}
|
||||
|
||||
|
||||
@@ -283,11 +283,10 @@ def scores(db, convo, args, _user):
|
||||
for ev in row["evidence"][:2]]} for row in rows]})
|
||||
for row in rows:
|
||||
for evidence in row["evidence"][:2]:
|
||||
links = page_links(db, evidence.get("document_id"), evidence["page"])
|
||||
citations.append({"title": str(evidence["document"])[:200], "page": evidence["page"],
|
||||
"quote": evidence["quote"][:320],
|
||||
"url": url, "image_url": evidence["image_url"],
|
||||
"text_url": f"/api/knowledge/documents/{evidence['document_id']}/pages/{evidence['page']}"
|
||||
if evidence.get("document_id") else None})
|
||||
"quote": evidence["quote"][:320], "document_id": evidence.get("document_id"),
|
||||
**links, "score_url": 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),
|
||||
|
||||
Reference in New Issue
Block a user