feat: expose knowledge type priority traces
This commit is contained in:
@@ -14,6 +14,7 @@ from app.models.admin import Admin
|
||||
from app.models.knowledge import (
|
||||
HumanAttentionHistory,
|
||||
HumanAttentionRecord,
|
||||
Knowledge,
|
||||
KnowledgeRetrievalCandidate,
|
||||
KnowledgeRetrievalLog,
|
||||
)
|
||||
@@ -113,11 +114,19 @@ def retrieval_detail(
|
||||
.where(KnowledgeRetrievalCandidate.retrieval_log_id == log.id)
|
||||
.order_by(KnowledgeRetrievalCandidate.selected.desc(), KnowledgeRetrievalCandidate.id)
|
||||
).all()
|
||||
knowledge_ids = {item.knowledge_id for item in candidates}
|
||||
knowledge_map = {
|
||||
item.id: item
|
||||
for item in db.scalars(select(Knowledge).where(Knowledge.id.in_(knowledge_ids))).all()
|
||||
} if knowledge_ids else {}
|
||||
data = _retrieval_dict(log, detail=True)
|
||||
data["candidates"] = [
|
||||
{
|
||||
"id": item.id,
|
||||
"knowledgeId": item.knowledge_id,
|
||||
"knowledgeName": knowledge_map[item.knowledge_id].name if item.knowledge_id in knowledge_map else "",
|
||||
"knowledgeType": knowledge_map[item.knowledge_id].knowledge_type if item.knowledge_id in knowledge_map else "general",
|
||||
"knowledgeTypeLabel": _knowledge_type_label(knowledge_map[item.knowledge_id].knowledge_type if item.knowledge_id in knowledge_map else "general"),
|
||||
"versionId": item.version_id,
|
||||
"chunkId": item.chunk_id,
|
||||
"sectionId": item.section_id,
|
||||
@@ -131,6 +140,15 @@ def retrieval_detail(
|
||||
return api_success(data)
|
||||
|
||||
|
||||
def _knowledge_type_label(value: str) -> str:
|
||||
return {
|
||||
"fixed": "固定信息类·最高优先级",
|
||||
"course": "课程知识库",
|
||||
"qa": "答疑知识库",
|
||||
"general": "通用知识库",
|
||||
}.get(value, value or "通用知识库")
|
||||
|
||||
|
||||
@router.get("/attention/list")
|
||||
def attention_list(
|
||||
priority: str = Query(default=""),
|
||||
|
||||
Reference in New Issue
Block a user