feat(sign): 补齐医护端与患者端签署流程

This commit is contained in:
xy
2026-09-28 19:57:57 +08:00
parent a25716c861
commit 8024075439
22 changed files with 1082 additions and 163 deletions
+9 -1
View File
@@ -8,7 +8,8 @@
- `clinical-web`:医护端布局、工作台、签署任务、文书库、报表和设置页面;
- `patient-h5`:签署入口、文书确认、签署人信息、手写签名和结果页面;
- 默认仍使用演示数据,但医护端已按 MEDISIGN 接口文档接入登录、患者/就诊、模板、签署任务、文件产物、投递、用户组织和模板权限等真实接口;患者 H5 已接入一次性 Token 消费和签名上传请求;
- 默认仍使用演示数据。真实签署流程中,医护端创建任务时提交模板表单答案和实际签署人;患者 H5 消费一次性 Token 后读取服务端固化的患者、签署人和文书上下文,再上传签名 PNG;
- 真实签署通道目前限于后端已定义的 SMS 与 PAD。短信接口只确认投递意图已排队;短信供应商、微信公众号和 iPad 设备适配仍需后端/集成服务接入;
- `packages` 目录暂时保留,等接口和公共类型稳定后再接入共享包。
## 项目定位
@@ -87,6 +88,13 @@ medical-sign/
- 前端不负责最终权限和签署有效性判断,后端必须重新校验;
- 患者 H5 不在 URL 中暴露身份证号、完整病历等敏感信息。
## 签署接口契约
- 模板版本的 `formFields` 保存文书字段定义,`signatureFields` 单独保存患者签名在 PDF 中的页码、坐标、宽高和坐标系;编辑器中的坐标单位为 PDF point。发布模板前必须配置 `signature` 字段的位置。
- `GET /api/v1/templates/available-versions` 返回 `formFields` 和 `needConfirm`。创建任务时将人工填写值放入 `staffAnswers`,并传入 `signerType`、`signerName`、`signerRelation`;患者、性别、年龄、就诊号和电话等已知字段仍由后端快照覆盖。
- H5 先调用 `POST /api/v1/sign-deliveries/token/consume`,再用返回的 `taskId`、`deliveryId`、`uploadToken` 调用 `POST /api/v1/sign-deliveries/token/context`。上传使用 `POST /api/v1/sign-deliveries/{taskId}/signature` multipart,包含 `file`、`metadata` 和 `signer` JSON 部分,并复用 `Idempotency-Key` 安全重试。
- 患者签署后,任务可能处于 `GENERATING`、`WAITING_CONFIRM` 或 `SIGNED`。刷新结果页时 H5 使用只读 context 查询恢复服务端状态,不能将这些状态退回为可重复签署。
## 构建与部署规划
两个应用分别构建为 `dist`: