Files
SuperBizAgent-java/openspec/changes/archive/2026-06-30-confidence-feedback/specs/functional-spec.md
T

45 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Functional Spec: 置信度评分与用户反馈机制
## REQ-1:置信度 LLM 自评
- Agent 对话(executeChat / executeChatComplex)成功后,异步调用 EvaluationService。
- EvaluationService 构造 Prompt,调用 ChatModel,要求输出纯 JSON:`{"confidence": 0-100, "reasoning": "...", "source": "llm"}`。
- 若 JSON 解析成功,写入 `DiagnosisSession.selfEvaluation`。
- 若调用失败或解析失败,转入规则兜底(REQ-2)。
- 验收:对话结束后数秒内,DB `diagnosis_session.self_evaluation` 非 null,且 `source` 字段存在。
## REQ-2:置信度规则兜底
- 触发条件:LLM 自评失败(任何异常)。
- 规则:基础分 60 + toolCallCount×5(上限+20)+ (stepCount<=3 ? +10 : 0),status=FAILED 则直接 0。
- 结果写入 `selfEvaluation`,含 `"source": "rule"`。
- 验收:LLM 自评失败时,self_evaluation 仍有值(非 null),且 source=rule。
## REQ-3:反馈接收 API
- 接口:`POST /api/feedback`
- 入参:`{ "sessionId": "xxx", "feedback": "useful" | "not_useful" }`
- 出参:`{ "success": true/false, "message": "...", "caseId": "uuid 或 null" }`
- 校验:sessionId 不能为空;feedback 只能是 useful 或 not_useful,否则返回 400。
- 验收:接口返回 200,DB 对应行 feedback 字段有值。
## REQ-4:useful → 案例沉淀
- 触发条件:feedback = "useful"。
- 操作:在 case_library 插入一条记录,caseId=UUID,sourceType=AUTO,faultCategory=GENERAL,
title=query 前 100 字,rootCause/solution 来自最后一步 agent_step.thought。
- 响应中返回 caseId。
- 验收:提交 useful 后,case_library 表新增一行,diagnosis_id = sessionId。
## REQ-5:not_useful → BAD_CASE 标记
- 触发条件:feedback = "not_useful"。
- 操作:feedback 字段本身即为标记,不修改 status 字段(status 保持执行状态语义)。
- 查询 BadCase 使用:`WHERE feedback = 'not_useful'`。
- 验收:提交 not_useful 后,DB diagnosis_session.feedback = "not_useful",status 不变。
## REQ-6:幂等性
- 同一 sessionId 重复提交 feedback,覆盖写入(不报错,不重复创建 CaseLibrary)。
- 已有 case_library 记录时(diagnosisId 已存在),跳过插入并返回已有 caseId。