云
2026-09-29 a0d62d13f1d537e84e13d8ee4d8b37b27439fa00
docs/project-business/mermaid/09-data-flow.mmd
@@ -80,7 +80,7 @@
  RBM -->|submit 带 id 与 processDefinitionKey 走 query| RBS
  RBS -.->|BPM 监听器结果回写 通过20 驳回35 取消退回0| RBM
  RBA -.->|上传与保存分离·禁在业务表存文件地址| PDFARCH
  FINNOTE[独立模块·销售采购链条任意单据均不生成报销单·报销单亦不回写任何外部单据] -.-> RBM
  FINNOTE[独立模块·销售采购链条任意单据均不生成报销单·报销单亦不回写任何外部单据·唯一例外是课题经费拨付] -.-> RBM
  subgraph S6 [独立课题管理 research]
    RGL[课题指南 research_guideline] --> RAP[课题申报书 research_application]
    RAP --> RRV[专家评审明细 research_topic_review]
@@ -97,7 +97,10 @@
  RRV -.->|"明细删空时主单汇总清为 null"| RAP
  RAP -->|"publishNotice 生成 system_notice 公告并回写 noticeId·重复发布拦截"| SYS2[system_notice 系统公告]
  RFR -->|"金额校验 已登记 + 本次 不得超出 budgetAmount 申请经费"| RAP
  RFR -.->|"凭证走附件中心 recordType=research_fund_record·表内不存文件地址"| PDFARCH
  RFR -.->|"凭证走附件中心 recordType=research_fund_record·同一批 blob 双绑 finance_reimbursement·表内不存文件地址"| PDFARCH
  RAP -.->|"申报附件 recordType=research_application"| PDFARCH
  RGL -.->|"指南附件 recordType=research_guideline"| PDFARCH
  RESNOTE[独立模块·一期经费拨付只在本模块落记录·与财务模块无数据同步·二期再对接] -.-> RFR
  RFR -->|"1:1 生成报销单·经 FinanceReimbursementApi 本地 Bean 建单并立即 submit·回写 reimbursement_id/reimbursement_no·台账置 15 报销审批中"| RBM
  RBM -->|"报销单进入同一条 BPM 流程 finance_reimbursement_approve(财务审核 → 财务主管审批)·businessKey=报销单 ID"| RBS
  RBS -.->|"BPM 监听器 ResearchFundStatusListener 回写课题台账 通过20 驳回30(+驳回原因/时间) 撤回0"| RFR
  RESNOTE[一期已对接财务·课题台账为拨款台账·报销单为财务出账凭证·两边以 reimbursement_id 软关联无外键·财务侧直接删单会留下悬空 ID 由业务报错兜底] -.-> RFR