feat(签署任务): 新增「待科室确认」节点整条链路

原型 V10.2 的 needConfirm:检验 / 基因检测 / 自费类文书要求患者签完之后
由科室再复核签章,避免漏签补签。此前仓库完全没有这个节点,现在补全。

状态模型
- SigningTaskStatus 增加 confirming(待科室确认),BackendSigningTaskStatus 增加
  WAITING_CONFIRM;文档侧 DocumentRecord / TemplateResponseDto / SigningTemplate /
  CreateSigningTaskInput 增加 needConfirm。
- normalizeTaskStatus、mapSigningTask、mapDocument、toBackendTaskQuery 的 statusMap、
  mapAvailableTemplate、readLocalSigningTemplates 同步;needConfirm 取不到一律按 false,
  不凭空给任务多插一道人工节点。

流转
- completeSigningTask 按 needConfirm 决定落 confirming 还是 signed;
  新增 confirmDepartmentSigning(科室复核签章 → 已签署)。
  真实模式暂未接入(后端要重做),如实提示"待接入",不前端自己改状态。
- 任务事件与记录页事件补「已推送至 X 确认队列」「科室复核签章完成,文档归档」两条留痕。

工作台
- 列表徽标走 .task-status--confirming(原型 tg-cfm 橙),状态筛选加「待科室确认」。
- 详情动作按原型给:🏛 科室复核签章(确认完成)+ 催办 + 在线预览 + 下载已签 PDF;
  该状态下不给「作废」(原型只在待签署/已超时给)。
- 新增「科室确认节点」卡(待患者签署后 / 待科室确认 / ✓ 已确认三分支)——
  原型放在文书签名区那一格,这里做成紧跟文书的独立卡,真实模板与回退纸样都能显示。
- confirming 时文书只读(患者已签完,不该再改填写项)。
- 签署完成提示语按 needConfirm 分流:需科室确认的说「已流转至科室确认节点」,
  否则说「签署完成,文档已归档」—— 一律说"完成"会让人以为可以关页面了。
- 新增权限码 sign:task:confirm / sign:task:remind。

记录查询与报表
- 记录查询状态筛选与演示数据加该状态(2 条样本)。
- 报表 STATUS_LABELS / STATUS_COLUMNS / ReportStatusCounts / ReportGroupRow 加这一栏,
  单独成列不并进「已签署」——并进去会让已签署虚高,科室复核本来就是这类文书的卡点。
- 时效样本按「有签署用时」取,待科室确认同样计入;总览统计块加一块。

演示数据
- 工作台补 task-009(confirming + needConfirm),否则该状态的徽标、动作、
  筛选、报表栏在演示环境里一次都走不到。
- 注意:演示文库的麻精同意书**没有** needConfirm(原型里也确实没有),
  所以「新建任务 → 签署 → 落待科室确认」这条流转靠探针夹具验证,没有改产品种子。

验证:probe-dept-confirm.cjs(新建)36/36 PASS,含真实落笔签署后落待科室确认;
回归 probe-new-task 104/104、probe-method-domain 14/14、probe-workbench-lib 42/42、
probe-report-analytics 92/92(断言按七状态更新);vue-tsc 与 eslint 0 错。
This commit is contained in:
yelan
2026-09-26 20:09:00 +08:00
parent 82acc03442
commit 8c70f01e2e
25 changed files with 516 additions and 38 deletions
@@ -114,6 +114,9 @@ function mapDocument(dto: TemplateResponseDto): DocumentRecord {
// 现在取不到就是 undefined,卡片不渲染对应标签,不伪造取值
examType: dto.examType ?? undefined,
projectCodes: dto.projectCodes ?? undefined,
// 需科室确认:后端没给就是 false(走原路直接归档),
// 不能默认成 true —— 那会给所有文书凭空多插一道人工节点
needConfirm: dto.needConfirm ?? false,
}
}