133 lines
6.3 KiB
Markdown
133 lines
6.3 KiB
Markdown
# 文档库管理 —— 真实接口验证报告
|
||
|
||
- 验证日期:2026-09-17
|
||
- 验证对象:`clinical-web` 文档库管理(`/management/documents`)
|
||
- 数据来源:MEDISIGN 后端 `https://ipad.shenynet.com`(真实接口,`VITE_MOCK_DOCUMENTS=false`)
|
||
- 验证方式:真实浏览器(Chrome headless + CDP)驱动真实页面,非静态审查
|
||
|
||
## 1. 结论
|
||
|
||
**文档库管理在真实接口下功能完整、闭环可用。**
|
||
|
||
从「新增文书」到「发布」再到「发起签署」的完整链路全部走通,
|
||
每一步后端均返回 200,页面运行时错误 0 条。
|
||
|
||
此前记录的「后端模板写接口作废(`POST /v1/templates` 稳定 500、列表恒 0 条)」**已不成立**,
|
||
写接口已恢复正常。
|
||
|
||
## 2. 只读功能验证
|
||
|
||
| 功能 | 结果 | 说明 |
|
||
|---|---|---|
|
||
| 列表加载 | 通过 | 真实模板正确渲染,科室三级分组(科室 → 分类 → 文书)正常 |
|
||
| 科室页签 | 通过 | 按实际科室归类,无科室的模板归入「未指定科室」 |
|
||
| 状态页签 | 通过 | 按后端原始状态过滤,`PENDING_REVIEW` 与 `REJECTED` 未合并 |
|
||
| 搜索 | 通过 | 按名称/编号/科室过滤正确 |
|
||
| 预览弹窗 | 通过 | **正文真实取回**(列表接口只给哈希,已正确补穿透版本详情) |
|
||
| 预览 - 签署预览页签 | 通过 | 占位符按演示患者填充,渲染正常 |
|
||
| 编辑弹窗 | 通过 | 名称/编号/说明/正文全部正确带出 |
|
||
| 新增弹窗 | 通过 | 空表单;院区取真实 UUID;版本号显示「由后端按 vN 自动生成」 |
|
||
| 加载态/错误态 | 通过 | 有独立加载态与错误态,未把失败降级成空态 |
|
||
|
||
## 3. 写操作与版本工作流验证
|
||
|
||
新建测试文书「【自动化测试】签署链路验证」(编号 `AUTO-TEST-800004`)后逐步执行:
|
||
|
||
| 步骤 | 卡片动作 | 后端接口 | 状态变化 |
|
||
|---|---|---|---|
|
||
| 1 | 保存文书 | `POST /v1/templates` + `POST /v1/templates/{id}/versions` | (新建)→ 草稿 |
|
||
| 2 | 提交审核 | `POST .../versions/{vid}/submit-review` | 草稿 → 待审核 |
|
||
| 3 | 驳回 | `POST .../versions/{vid}/reject` | 待审核 → 已驳回 |
|
||
| 4 | 重新提交 | `POST .../versions/{vid}/submit-review` | 已驳回 → 待审核 |
|
||
| 5 | 审核通过 | `POST .../versions/{vid}/approve` | 待审核 → 审核通过 |
|
||
| 6 | 发布 | `POST .../versions/{vid}/publish` | 审核通过 → 已发布 |
|
||
| 7 | 发起 | `GET .../versions/{vid}`(取真实正文) | 打开「新增签署任务」,模板已自动选中 |
|
||
|
||
驳回意见经 `reject` 的 `comment` 参数提交,用于留痕。
|
||
|
||
### 3.1 动作按钮文案随状态变化
|
||
|
||
前端按后端状态计算卡片主动作,文案**不是固定值**:
|
||
|
||
| 后端状态 | 卡片动作 |
|
||
|---|---|
|
||
| `DRAFT` | 提交审核 |
|
||
| `PENDING_REVIEW` | 审核通过 / 驳回 |
|
||
| `REJECTED` | 重新提交 |
|
||
| `APPROVED` | 发布 |
|
||
| `PUBLISHED` | 发起 |
|
||
| `DISABLED` | 重新启用 |
|
||
|
||
写自动化脚本或写测试用例时若写死「提交审核」,在后续步骤会全部点空。
|
||
|
||
### 3.2 工作流确认框的确认按钮文案
|
||
|
||
确认框的确认按钮文案**等于动作名本身**(「提交审核」「发布」「确认驳回」),
|
||
不是「确定」。按 `/确定|确认/` 匹配文字会点不到,应按 `.el-button--primary` 定位。
|
||
|
||
## 4. 接口调用清单(本次验证实际打到)
|
||
|
||
```
|
||
GET /api/v1/auth/me
|
||
GET /api/v1/campuses
|
||
GET /api/v1/departments
|
||
GET /api/v1/templates 列表(分页拉全量)
|
||
GET /api/v1/templates/{id} 模板详情
|
||
GET /api/v1/templates/{id}/versions 版本列表
|
||
GET /api/v1/templates/{id}/versions/{vid} 版本详情(正文来源)
|
||
POST /api/v1/templates 新建模板
|
||
POST /api/v1/templates/{id}/versions 新建版本
|
||
POST /api/v1/templates/{id}/versions/{vid}/submit-review
|
||
POST /api/v1/templates/{id}/versions/{vid}/reject
|
||
POST /api/v1/templates/{id}/versions/{vid}/approve
|
||
POST /api/v1/templates/{id}/versions/{vid}/publish
|
||
```
|
||
|
||
全部 200。
|
||
|
||
## 5. 已知限制与未覆盖项
|
||
|
||
### 5.1 入口未开放(既有设计,非本次回归)
|
||
|
||
- **版本历史**:`getTemplateVersions` 与 `DocumentVersionDialog` 均已实现,
|
||
但卡片上没有「版本」按钮(`DocumentTemplateCard` 中 `showVersionAction = false`),
|
||
用户无法从 UI 进入。
|
||
- **下架 / 归档**:同样没有按钮(`showRemoveAction = false`)。
|
||
因此本次测试创建的文书**无法通过 UI 清理**,只能走接口归档。
|
||
|
||
### 5.2 混合模式下的模板树
|
||
|
||
当前本地配置为「文档库真实 + 签署工作台演示数据」。此配置下点「发起」,
|
||
「新增签署任务」弹窗左侧的模板树**仍为演示数据**(含后端不存在的文书),
|
||
仅从文档库带入的那一份是真实的。
|
||
|
||
原因:该弹窗调用 `getSigningTemplates()`,它读的是 `mockFlags.signing`。
|
||
将签署端也切到真实接口后,该模板树才会只显示后端真实模板。
|
||
|
||
### 5.3 未验证项
|
||
|
||
- 手写板设备桥接、线上签署回调、打印服务(后端尚未提供,前端为占位)
|
||
- 模板包导出(`showExportMessage` 为占位提示,后端无对应接口)
|
||
|
||
## 6. 验证环境注意事项
|
||
|
||
供后续复现参考:
|
||
|
||
1. **请求头是 `X-Token`,不是 `Authorization: Bearer`**(见 `utils/request.ts`)。
|
||
用 curl 直连后端调试时写错会得到 `40100 请先登录`,容易误判成 token 失效。
|
||
2. **后端会话实际存活约 10 分钟**,而登录响应里的 `expiresAt` 声明 2 小时。
|
||
登录与验证必须串在同一条命令里执行(`node scripts/login.cjs <code> && node <verify>.cjs`),
|
||
否则必然被踢回 `/login`,表现为「页面上找不到按钮」。
|
||
3. 文档库的弹窗是自定义 `.dialog-mask`,**不是 Element Plus 的 `.el-dialog`**。
|
||
关闭要点 `.dialog-mask .close-button`(预览 / Word 编辑器)或 `.dialog-close`(版本弹窗)。
|
||
关不掉会导致下一个弹窗因 `visible` 未变化而不触发重置,造出「状态没重置」的假象。
|
||
|
||
## 7. 遗留测试数据
|
||
|
||
测试文书「【自动化测试】签署链路验证」(编号 `AUTO-TEST-800004`)当前为**已发布**状态,
|
||
保留在联调环境以便继续验证发起签署。不需要时归档即可:
|
||
|
||
```
|
||
POST /api/v1/templates/{templateId}/versions/{versionId}/archive
|
||
```
|