docs: update frontend api handoff docs
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# Demo 前端测试指南
|
||||
|
||||
本文档用于本地演示和前后端联调。前端页面覆盖当前第一版 Demo 的完整训练闭环。
|
||||
|
||||
## 1. 启动服务
|
||||
|
||||
后端:
|
||||
@@ -17,7 +19,7 @@ cd D:\Code\newfounder\medical-consultation-agent\frontend
|
||||
npm.cmd run dev -- --host 127.0.0.1 --port 5173
|
||||
```
|
||||
|
||||
浏览器访问:
|
||||
访问:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:5173
|
||||
@@ -30,49 +32,11 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
.\.venv\Scripts\python.exe scripts\migrate_to_new_schema.py
|
||||
```
|
||||
|
||||
当前数据库为 `medical_consultation_agent`。核心表为 `case_base`、`traditional_case`、`teaching_case`、`scoring_rule`、`case_exam_item`、`training_session`、`training_order`、`training_submission`、`training_record`。
|
||||
当前数据库为 `medical_consultation_agent`。
|
||||
|
||||
## 3. 导入接口解析后的病例 SQL
|
||||
## 3. 入口页测试
|
||||
|
||||
接口提供的 SQL dump 先走安全检查,不直接执行原始 SQL:
|
||||
|
||||
```powershell
|
||||
cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
.\.venv\Scripts\python.exe scripts\import_source_case_sql.py "C:\path\to\case.sql"
|
||||
```
|
||||
|
||||
检查通过后再写入当前库:
|
||||
|
||||
```powershell
|
||||
.\.venv\Scripts\python.exe scripts\import_source_case_sql.py "C:\path\to\case.sql" --apply
|
||||
```
|
||||
|
||||
导入脚本规则:
|
||||
|
||||
- 忽略源 SQL 中的 `DROP TABLE`、`CREATE TABLE`、`ALTER TABLE`、`LOCK TABLES`。
|
||||
- 按字段名映射导入 `case_base`、`traditional_case`、`teaching_case`、`scoring_rule`。
|
||||
- 源 SQL 缺少 `case_exam_item` 时,根据病例描述生成基础检查项目。
|
||||
- 源 SQL 缺少 `teaching_case` 时,只影响教学互动模式入口,不影响练习模式。
|
||||
- 源 SQL 存在乱码、字段数量不匹配或损坏字符串时拒绝导入。
|
||||
|
||||
前端上传测试:
|
||||
|
||||
1. 进入 `http://127.0.0.1:5173/#/import`。
|
||||
2. 选择接口解析后的 `.sql` 文件。
|
||||
3. 点击“解析检查”。
|
||||
4. 查看识别到的表、病例预览、警告和错误。
|
||||
5. `can_import=true` 后点击“确认导入”。
|
||||
6. 导入成功后点击“刷新病例库”,或直接进入病例页查看新增病例。
|
||||
|
||||
预期结果:
|
||||
- 预检阶段不写数据库。
|
||||
- 确认导入阶段写入 `case_base`、`traditional_case`、`teaching_case`、`scoring_rule`,并自动补齐基础检查项目。
|
||||
- 新增病例出现在病例列表中,可继续创建训练会话。
|
||||
- 损坏 SQL 会显示错误,不会写入任何表。
|
||||
|
||||
## 4. 入口页测试
|
||||
|
||||
1. 打开入口页。
|
||||
1. 打开前端首页。
|
||||
2. 确认 `user_id` 为 `demo_user_001`。
|
||||
3. 确认 API Base 为 `http://127.0.0.1:8000/api/v1`。
|
||||
4. 点击连接或进入 Agent。
|
||||
@@ -80,22 +44,67 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
预期结果:
|
||||
|
||||
- 页面显示后端地址、当前 user_id、入口场景和最近连接时间。
|
||||
- “已连接”只在 `GET /api/v1/agent/hello` 成功返回后显示。
|
||||
- “已连接”只在 `GET /api/v1/agent/hello` 成功后显示。
|
||||
- 功能卡片显示流式问诊、PDF 导出、知识检索、评分类型、LLM mock/fallback 状态。
|
||||
|
||||
## 5. 病例库测试
|
||||
## 4. 病例 SQL 导入测试
|
||||
|
||||
进入:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:5173/#/import
|
||||
```
|
||||
|
||||
步骤:
|
||||
|
||||
1. 选择接口解析后的 `.sql` 文件。
|
||||
2. 点击“解析检查”。
|
||||
3. 查看识别到的表、病例预览、警告和错误。
|
||||
4. `can_import=true` 后点击“确认导入”。
|
||||
5. 导入成功后刷新病例库。
|
||||
|
||||
预期结果:
|
||||
|
||||
- 预检阶段不写数据库。
|
||||
- 后端只解析 `case_base`、`traditional_case`、`teaching_case`、`scoring_rule`。
|
||||
- 源 SQL 中的 `DROP TABLE`、`CREATE TABLE`、`ALTER TABLE`、`LOCK TABLES` 不会执行。
|
||||
- 缺少 `case_exam_item` 时,后端按当前业务规则生成基础检查项。
|
||||
- 新病例出现在病例列表中,可继续创建训练会话。
|
||||
|
||||
## 5. 病例列表与详情测试
|
||||
|
||||
1. 进入病例页。
|
||||
2. 点击“支气管肺炎 - 6岁男性患儿”病例卡片。
|
||||
2. 点击病例卡片。
|
||||
3. 查看病例详情。
|
||||
4. 点击“开始训练”。
|
||||
|
||||
预期结果:
|
||||
|
||||
- 点击病例卡片只展开详情,不直接创建会话。
|
||||
- 详情展示科室、年龄、性别、主诉、训练类型、检查项目数量和是否有教学知识。
|
||||
- 点击病例卡片只选中病例,不直接创建会话。
|
||||
- 详情展示科室、年龄、性别、主诉、训练类型、教学资源和可申请检查类型。
|
||||
- 详情不展示标准答案、隐藏病史和评分细则。
|
||||
|
||||
## 6. 创建会话
|
||||
## 6. 删除病例测试
|
||||
|
||||
该功能用于联调阶段清理导入错误或不再需要的病例。
|
||||
|
||||
步骤:
|
||||
|
||||
1. 在病例详情中点击“删除病例”。
|
||||
2. 弹窗中查看删除影响范围。
|
||||
3. 输入 `确认删除`。
|
||||
4. 点击“确认删除”。
|
||||
5. 删除成功后刷新病例列表。
|
||||
|
||||
预期结果:
|
||||
|
||||
- 前端先调用 `GET /api/v1/cases/{case_id}/delete-preview`。
|
||||
- 确认后调用 `DELETE /api/v1/cases/{case_id}`。
|
||||
- 后端删除病例主表、扩展表、评分规则、检查项、训练会话、检查申请、提交内容和训练评价记录。
|
||||
- `audit_logs` 只记录删除操作,不被反删。
|
||||
- 删除后访问病例详情返回 `CASE_NOT_FOUND`。
|
||||
|
||||
## 7. 创建训练会话
|
||||
|
||||
1. 选择训练模式:`练习模式` 或 `教学互动模式`。
|
||||
2. 选择评分类型:`百分制` 或 `五分制`。
|
||||
@@ -104,14 +113,10 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
预期结果:
|
||||
|
||||
- 后端创建 `training_session`。
|
||||
- Redis/进程内 memory 生成 `memory_key`。
|
||||
- Chat 页面显示 AI 病人首句。
|
||||
- Redis 或进程内 memory 生成短期记忆。
|
||||
- Chat 页显示 AI 病人开场白。
|
||||
|
||||
## 7. 多轮问诊
|
||||
|
||||
1. 在 Chat 输入框提问。
|
||||
2. 保持流式开关开启。
|
||||
3. 点击“发送问诊”。
|
||||
## 8. 多轮问诊测试
|
||||
|
||||
推荐问题:
|
||||
|
||||
@@ -125,23 +130,23 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
|
||||
预期结果:
|
||||
|
||||
- 前端显示流式增量内容。
|
||||
- 流式模式下逐步显示 AI 病人回复。
|
||||
- 收到 `message_done` 后停止“正在生成”。
|
||||
- 出错时显示错误,不会无限 pending。
|
||||
|
||||
## 8. 查看提示
|
||||
## 9. 查看提示测试
|
||||
|
||||
练习模式中点击“查看提示”。
|
||||
|
||||
预期结果:
|
||||
|
||||
- 调用 `POST /api/v1/sessions/{session_id}/hints`。
|
||||
- 显示缺失问诊维度、下一步可问问题、推荐检查。
|
||||
- 展示缺失问诊维度、下一步问题和推荐检查。
|
||||
- 提示不自动弹出,不写入长期历史。
|
||||
|
||||
## 9. 检查/检验申请
|
||||
## 10. 检查/检验申请测试
|
||||
|
||||
在检查面板依次申请:
|
||||
建议申请:
|
||||
|
||||
- 血常规
|
||||
- CRP
|
||||
@@ -152,18 +157,18 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
预期结果:
|
||||
|
||||
- 检查结果来自 `case_exam_item`。
|
||||
- 同一检查重复点击不重复写入,只显示“已申请”。
|
||||
- 页面提示“该检查结果已写入本次会话上下文和评分依据”。
|
||||
- 同一 `item_code` 重复点击不会重复写入。
|
||||
- 页面提示检查结果已写入本次会话上下文和评分依据。
|
||||
|
||||
## 10. 诊断与治疗提交
|
||||
## 11. 诊断与治疗提交测试
|
||||
|
||||
1. 点击“完成问诊”。
|
||||
2. 在提交页填写诊断。
|
||||
2. 填写诊断。
|
||||
3. 点击“提交诊断”。
|
||||
4. 填写治疗方案。
|
||||
5. 点击“提交治疗方案”。
|
||||
|
||||
演示模板可通过“填入演示模板”按钮填充,默认表单为空。
|
||||
演示时可以点击“填入演示模板”,正常测试时表单默认为空。
|
||||
|
||||
预期结果:
|
||||
|
||||
@@ -171,7 +176,7 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
- 诊断提交后进入治疗阶段。
|
||||
- 治疗提交后进入评价阶段。
|
||||
|
||||
## 11. 评价、PDF 与历史
|
||||
## 12. 评价、PDF 与历史记录测试
|
||||
|
||||
1. 点击“生成 AI 评价报告”。
|
||||
2. 查看维度评分、证据摘要、扣分点和改进计划。
|
||||
@@ -185,7 +190,7 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
- PDF 路径写入 `training_record.pdf_file_path`。
|
||||
- 历史记录按当前 `user_id` 查询。
|
||||
|
||||
## 12. LLM 测试
|
||||
## 13. LLM 测试
|
||||
|
||||
进入 LLM 测试页:
|
||||
|
||||
@@ -195,16 +200,16 @@ cd D:\Code\newfounder\medical-consultation-agent\backend
|
||||
预期结果:
|
||||
|
||||
- 页面展示模型名、总耗时、是否流式、是否 mock、是否 fallback。
|
||||
- 真实模型异常时显示错误,不静默伪装为真实回复。
|
||||
- 真实模型异常时显示错误,不静默伪装为真实响应。
|
||||
|
||||
## 13. 常见问题
|
||||
## 14. 常见问题
|
||||
|
||||
| 问题 | 排查 |
|
||||
|---|---|
|
||||
| 页面显示未连接 | 检查后端是否在 `127.0.0.1:8000` 启动 |
|
||||
| 缺少 `X-User-Id` | 入口页填写 user_id 后重新进入 |
|
||||
| 病例为空 | 运行 `scripts\migrate_to_new_schema.py` |
|
||||
| Chat 卡在生成中 | 查看浏览器控制台 SSE 是否收到 `message_done` 或 `error` |
|
||||
| 检查重复出现 | 刷新页面后复测,同一 `item_code` 应只出现一次 |
|
||||
| 评价无法生成 | 确认已完成问诊、提交诊断、提交治疗 |
|
||||
| Redis 中有 TTL | 正常行为,短期 memory 使用 TTL 自动过期 |
|
||||
| 页面显示未连接 | 检查后端是否在 `127.0.0.1:8000` 启动。 |
|
||||
| 缺少 `X-User-Id` | 入口页填写 user_id 后重新进入。 |
|
||||
| 病例为空 | 运行 `scripts\migrate_to_new_schema.py` 或导入病例 SQL。 |
|
||||
| Chat 卡在生成中 | 查看浏览器控制台 SSE 是否收到 `message_done` 或 `error`。 |
|
||||
| 检查重复出现 | 刷新页面后复测,同一 `item_code` 应只出现一次。 |
|
||||
| 评价无法生成 | 确认已完成问诊、提交诊断、提交治疗。 |
|
||||
| Redis 中有 TTL | 正常行为,短期 memory 使用 TTL 自动过期。 |
|
||||
|
||||
Reference in New Issue
Block a user