云
2026-09-29 f87ce86307056f63f79312178037cc8714eb2b13
docs/project-business/README.md
@@ -8,19 +8,19 @@
- **业务定位**:离散制造工厂产供销人财物一体化:覆盖『销售接单 → 采购/生产 → 质检 → 仓储 → 发货 → 回款 → 售后』全链路闭环
- **技术底座**:yudao(ruoyi-vue-pro)二开,Spring Boot + MyBatis + Flowable + Redis + MySQL 8.4 + Milvus + 通义千问;前端 mom-pro2-before(Vue3)
- **核心主线**:CRM 合同 → ERP 销售订单 → MES 主计划/工单/报工 → 质检与仓储 → 销售出库 → 开票回款 → 售后闭环
- **独立模块**:财务报销(`yudao-module-finance`,报销单/明细/发票附件/审批/归档,对外提供 `yudao-module-finance-api` 供他模块建单)与会员管理(`yudao-module-ums`,入会申请/秘书处与理事会两级审批/会员/通讯录)各自成一条链路(UMS 例外:审批通过会经 AdminUserApi 创建系统登录账号);课题管理(`yudao-module-research`,课题指南/在线申报/专家评审/三级立项审批/立项通知/经费拨付)为另一条独立科研主线,向外取 `ums_member` 作为申报人、写 `system_notice` 立项公告,**并已对接财务**:经费拨付 1:1 自动生成财务报销单并提交审批,审批结果经 BPM 监听器回写课题侧拨款台账
- **独立模块**:财务报销(`yudao-module-finance`,报销单/明细/发票附件/审批/归档,对外提供 `yudao-module-finance-api` 供他模块建单)与会员管理(`yudao-module-ums`,入会申请/秘书处与理事会两级审批/会员/通讯录)各自成一条链路(UMS 例外:审批通过会经 AdminUserApi 创建系统登录账号);课题管理(`yudao-module-research`,课题指南/在线申报/专家评审/三级立项审批/立项通知/经费拨付)为另一条独立科研主线,向外取 `ums_member` 作为申报人、写 `system_notice` 立项公告,**并已对接财务**:经费拨付 1:1 自动生成财务报销单并提交审批,审批结果经 BPM 监听器回写课题侧拨款台账;档案管理(`yudao-module-archive`,分类书架/档案登记与检索/借阅两级审批/归还闭环/逾期实时提醒/统计)为第四条独立主线,**对外提供 `yudao-module-archive-api` 供课题、会员、财务三方向其归档**(列表页手动「归档」按钮,归档不回写来源业务状态),自身对三方**无反向依赖**
## 2. 目录结构
```text
docs/project-business/
├── index.html      # 可视化页面:双击直接打开(file:// 即可,无需任何服务)
├── mermaid/        # 14 张 Mermaid 业务图(权威源,改这里)
├── mermaid/        # 15 张 Mermaid 业务图(权威源,改这里)
├── data/           # 业务数据(权威源,改这里)
│   ├── business.json  # 项目元信息/业务十问/AI能力/待确认事项
│   ├── modules.json   # 16 个业务模块定义
│   ├── modules.json   # 17 个业务模块定义
│   ├── objects.json   # 核心业务对象(作用/上游/下游/表名)
│   ├── flows.json     # 9 条流程(摘要+步骤+角色)
│   ├── flows.json     # 10 条流程(摘要+步骤+角色)
│   └── roles.json     # 角色权限
└── README.md
```
@@ -49,6 +49,7 @@
| 12-finance-flow | 财务报销(独立模块):报销单+明细+发票附件 → 提交 BPM 审批 → 通过/驳回 → 归档终态;单据来源含手工新建与「课题经费拨付自动生成」两类 |
| 13-ums-membership-flow | 会员入会(独立模块):入会申请 + 材料附件 → 提交 BPM 两级审批(秘书处初审→理事会审议)→ 通过自动建会员与登录账号 → 会员列表/通讯录检索 |
| 14-research-flow | 课题管理(独立模块):指南发布(重点/一般)→在线申报(选会员带出申报人)→专家评分明细加权排名→BPM 三级审批(秘书处形式审查→专家评审→学会立项审批)→立项编号与公告→经费拨付(凭证必填→1:1 自动生成并提交财务报销单→财务审核/财务主管两级审批→结果经监听器回写台账:通过已拨付/驳回已驳回可重发/撤回回待拨付)|
| 15-archive-flow | 档案管理(独立模块):分类书架(树形·默认密级→新增档案自动带出)→档案登记(密级三档/载体三型/实体位置四字段/电子附件/DA 编号)→三方归档联动(课题已立项/会员正常/财务已通过 各列表手动「归档」→经 `archive-api` 生成档案并回写 `archive_document_id`)→借阅登记(仅「在库」可选·同档案不得有在途借阅单)→BPM 两级审批(档案管理员审核→分管领导审批·通过后档案条件更新为借出中)→归还登记(回在库)→逾期实时计算(不建定时任务)→存量流转统计 |
图中状态数字均为源码枚举真实值(如工单 0草稿/1已确认/2完成/3取消;ERP 审批 15审批中/20已审核)。
@@ -69,8 +70,8 @@
- 本目录由项目技能 **project-business-analysis** 管理(`.claude/skills/project-business-analysis/`),并有规则 `.claude/rules/business-visualization-maintenance.md` 强制:业务模块/流程/状态/对象/角色/AI 变更后需同步维护本目录。
- 增量维护:改对应的 `mermaid/*.mmd` + `data/*.json` → 运行上面的 sync 脚本 → 浏览器验证受影响图。
- 全量重做(偏差过大时):对 Claude 说「重新生成业务全景」,技能会重新走读源码并按生成模式重建。
- 生成基线:dev_business @ 87bf4a99,2026-09-10;2026-09-28 增量补充财务报销模块(`yudao-module-finance`)、会员管理模块(`yudao-module-ums`)与课题管理模块(`yudao-module-research`,一期项 1~5;二期结项验收与成果归档尚未做,图中已标注未覆盖范围);**2026-09-29 增量**:课题经费拨付对接财务报销——新建 `yudao-module-finance-api`(`FinanceReimbursementApi` 本地 Bean 调用:建单+提交/改单+重提/删除/查询),登记拨款时 1:1 自动生成 `finance_reimbursement`(系统生成 1 行明细)并自动提交 `finance_reimbursement_approve` 两级审批,新增第 15 个业务监听器 `ResearchFundStatusListener` 按审批结果回写课题拨款台账(通过 20 / 驳回 30 / 撤回 0),影响图 08 / 09 / 10 / 14 与 data 全部四份 json。
- 生成基线:dev_business @ 87bf4a99,2026-09-10;2026-09-28 增量补充财务报销模块(`yudao-module-finance`)、会员管理模块(`yudao-module-ums`)与课题管理模块(`yudao-module-research`,一期项 1~5;二期结项验收与成果归档尚未做,图中已标注未覆盖范围);**2026-09-29 增量**:课题经费拨付对接财务报销——新建 `yudao-module-finance-api`(`FinanceReimbursementApi` 本地 Bean 调用:建单+提交/改单+重提/删除/查询),登记拨款时 1:1 自动生成 `finance_reimbursement`(系统生成 1 行明细)并自动提交 `finance_reimbursement_approve` 两级审批,新增第 15 个业务监听器 `ResearchFundStatusListener` 按审批结果回写课题拨款台账(通过 20 / 驳回 30 / 撤回 0),影响图 08 / 09 / 10 / 14 与 data 全部四份 json;**2026-09-29 再增量**:新增档案管理独立模块 `yudao-module-archive` + `yudao-module-archive-api`(`ArchiveDocumentApi`:`archiveBySource` 幂等归档 / `isArchived` / `getBySource`),3 张表 `archive_category`/`archive_document`/`archive_borrow`、6 个字典(82000~82005)、`bpm_category(8003)` + 手写 `archive_borrow_approve.bpmn`(已在 mom-jssm 部署为版本 1,form_type=20,创建路径 `/archive/borrow/index`、查看路径 `/archive/borrow/detail/approve/index.vue`)、菜单 1075600~1075699;新增业务监听器 `ArchiveBorrowStatusListener`,全库业务状态监听器计数修正为 **24 个** `*StatusListener`(14 个继承 `BpmProcessInstanceStatusEventListener`);三方归档回写 `archive_document_id` 到 `research_application`/`ums_member`/`finance_reimbursement`,全库表数 427→430;新增图 **15-archive-flow**,增量修订图 01 / 08 / 09 / 10 与 data 全部五份 json(新增 `arc` 模块、3 个业务对象、`archive` 流程、4 个业务角色)。
## 7. 已知待确认业务
见 `data/business.json` 的 `pendingConfirm`(页面「待确认事项」栏),要点:仓库类型/合格仓改造未落地、HRM 交接 expandUserIds 尚未被业务查询接入、回款与收款单未走 BPM、财务勾稽回写方法为空、NCR 处置不回写源单、财务报销的 BPM 流程定义未发布与普通角色未授菜单、会员管理的 BPM 流程未发布且缺审批自定义表单页、自动建账号用手机号作初始密码存在弱口令风险、课题管理的评分权重与通过阈值为占位规则待学会确认、课题经费拨付虽已对接财务报销但台账与报销单为软关联(财务侧删单会留悬空 `reimbursement_id`)、新建的财务报销审批流程节点审批人需上线前在 BPM 设计器按实际组织调整、申报单与会员为软关联可能悬空等。
见 `data/business.json` 的 `pendingConfirm`(页面「待确认事项」栏),要点:仓库类型/合格仓改造未落地、HRM 交接 expandUserIds 尚未被业务查询接入、回款与收款单未走 BPM、财务勾稽回写方法为空、NCR 处置不回写源单、财务报销的 BPM 流程定义未发布与普通角色未授菜单、会员管理的 BPM 流程未发布且缺审批自定义表单页、自动建账号用手机号作初始密码存在弱口令风险、课题管理的评分权重与通过阈值为占位规则待学会确认、课题经费拨付虽已对接财务报销但台账与报销单为软关联(财务侧删单会留悬空 `reimbursement_id`)、新建的财务报销审批流程节点审批人需上线前在 BPM 设计器按实际组织调整、申报单与会员为软关联可能悬空;档案管理的 BPM 部署产物为手工导出需严守「先部署再导出再合并」顺序、菜单与权限仅在各归档脚本中普通角色未授权、档案与来源单据(课题申报书/会员/报销单)为软关联来源删单后会留悬空快照、「文书档案」等无来源模块仅手工录入且合同档案未纳入自动归档、逾期仅查询时实时计算不建定时任务不发站内信、「同一档案仅一条未归还借阅单」由应用层校验 + 条件更新共同保证、统计为 `GROUP BY` 聚合过万后需改造、三方来源表各加可空列 `archive_document_id` 属跨模块改表需确认变更窗口等。