Files

65 lines
3.1 KiB
Markdown
Raw Permalink 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.
# acceptance.md — confidence-feedback
## 实现清单
| 任务 | 文件 | 状态 |
|---|---|---|
| T0:Flyway V008 + answer 字段 | `V008__add_answer_to_diagnosis_session.sql`、`DiagnosisSession.java` | 完成 |
| T1:EvaluationService(规则引擎) | `EvaluationService.java` | 完成 |
| T2:ChatService 后置调用 | `ChatService.java` | 完成 |
| T3:FeedbackController + FeedbackService | `FeedbackController.java`、`FeedbackService.java`、`FeedbackRequest.java`、`FeedbackResponse.java` | 完成 |
| T4:CaseLibraryService | `CaseLibraryService.java` | 完成 |
| T5:AsyncConfig | `AsyncConfig.java` | 完成 |
## 验证记录
### 静态验证(已通过)
- `mvn compile` BUILD SUCCESS(2026-06-30)
- 无新增 ERROR,存量 WARNING 与本次改动无关
- import 完整性人工检查通过
### 脚本验证(已通过,2026-06-30)
验证工具:`scripts/query_mysql.py`(本次新建)
| 步骤 | 操作 | 结果 |
|---|---|---|
| 1 | POST /api/chat 发送问题 | 200,answer 有值 |
| 2 | 等 5 秒查 diagnosis_session | self_evaluation 写入规则引擎结果,answer 写入完整回答 |
| 3 | POST /api/feedback useful | 200,返回 caseId;case_library 新增一行,feedback=useful,status=SUCCESS |
| 4 | POST /api/feedback not_useful | 200,feedback=not_useful,status 仍为 SUCCESS(未被改写) |
| 5(边界)| 重复提交 useful | 返回同一 caseId,case_library 无重复插入 |
| 6(边界)| 非法 feedback 值 | HTTP 400 |
### Flyway V008 迁移
- 服务启动后 diagnosis_session 表存在 answer 列,验证通过(步骤 2 能写入 answer)
### 浏览器/人工验证(已通过,2026-06-30)
| 步骤 | 操作 | 结果 |
|---|---|---|
| 1 | 发送"今天天气怎么样" | AI 回复下方出现"有用/无用"按钮 |
| 2 | 点击"有用" | 按钮区域替换为"已标记为有用" |
| 3 | 网络请求确认 | POST /api/feedback 返回 HTTP 200,`success: true` |
### 前端反馈按钮(追加,2026-06-30)
**改动文件**:`app.js`、`styles.css`
关键设计:
- `ChatResult` record 新增(`ChatService`),`ChatResponse` 增加 `sessionId` 字段(`ChatController`)
- `sendQuickMessage` 读取 `chatResponse.sessionId` 存为 `this.lastSessionId`
- `createFeedbackBar(sessionId)` 闭包绑定 sessionId,避免多轮对话时 sessionId 错位
- `submitFeedback(feedback, barElement, sessionId)` 直接用传入参数,不依赖全局状态
- 流式模式(`/api/chat_stream`)反馈按钮会渲染,但 sessionId 为空,点击不生效(已知限制)
## 已知限制
- 非检索工具(DateTimeTools 等)不写 tool_invocation,evidence_score = 0(已接受,符合"证据充分度"定义)
- `@Async` 失败时 selfEvaluation 为 null,前端需处理 null(已接受)
- CaseLibrary 的 faultCategory 固定为 GENERAL,需人工补充(已接受,Phase 2 优化)
- LLM 观点层未实现,selfEvaluation JSON 预留 llm_opinion 扩展位(Phase 2)
- 流式模式反馈按钮 sessionId 缺失,暂不处理(已知,后续处理流式接口时一并解决)