[bug] 费用单审批:加签会签全部同意后流程未流转到下一审批节点(实例空转)

现象

费用单审批流程(workflows.costSheetsApproval)中,加签节点(会签)的全部审批人均已同意,单据仍为「审批中」,但:

  • 审批历史不再出现下一审批节点任务
  • 流程实例状态仍为进行中(instanceStatus = 1)
  • 业务上表现为「流程断了」:无人待办、也无法继续往下批

同流程、同样「双人加签」的其他费用单在相近时间可正常进入后续审批并结束,当前仅发现个别实例卡死。

正常路径(对照)

发起 → 加签(多人会签)→ 审批节点 A → 审批节点 B → 结束(+ 抄送)

异常路径(问题单)

发起 → 加签人1同意 → 加签人2同意 → ✗ 未创建下一审批节点待办(空转)

运行时证据(脱敏)

项 值
模型 models.costSheets
工作流 workflows.costSheetsApproval
单据状态 审批中
流程实例 进行中,无下一节点
加签节点 nGFVHP(审批人取自成员字段,会签 approveRule.checked=1)
预期下一节点 tCmHeZ(角色审批)
访问日志 末次同意 WorkflowSvc/doHandle HTTP 200,无 5xx
应用日志 对应时段 无 Traceback;同意当日上午的详细 server.log 已轮转,无法还原 doHandle 内部栈
复操作 卡住后再次对同一审批页执行 doHandle 仍 HTTP 200,流程仍不前进

配置隐患(可能相关,非本单独有充分条件)

workflows/costSheetsApproval/config.json 连线 fromPort 存在命名错误(与历史销售订单审批「同意后到不了结束」同类问题):

连线 当前 fromPort 疑似应为
nGFVHP → tCmHeZ bottom-tCmHeZ bottom-nGFVHP
LzjFTe → EndNode bottom-tCmHeZ bottom-LzjFTe

说明:多数同配置单据仍能从加签进入 tCmHeZ,故 fromPort 更像隐患/偶发诱因;本单直接表现是「会签完成后未生成下一节点」。

影响

  • 卡死实例无法自愈;改配置不会自动修复已卡住实例
  • 业务侧目前只能:撤销实例后重新发起(加签需重批)

期望

  1. 会签全部同意后,稳定创建下一节点待办并继续流转
  2. 明确 fromPort 写错时引擎行为(严格匹配 / 单出边回退),并给出配置校验或设计器纠错
  3. 提供卡死实例的运维手段(强制推进 / 安全重放下一节点),避免只能整单撤销重提
  4. 建议保留或加长工作流 doHandle 关键路径的详细日志,便于事后定位

验收建议

  • 双人(或多于 2 人)加签会签全部同意后,历史中必出现下一审批节点,且存在对应待办
  • 修连线并 build 后,新发起单据不再出现同类空转
  • 对已卡死实例有文档化修复步骤

收到,近期修复 等待发布