| | |
| | | <a data-t="flow-quality"><span class="dot" style="background:var(--c-qc)"></span>质量流程</a> |
| | | <a data-t="flow-warehouse"><span class="dot" style="background:var(--c-wm)"></span>仓储流程</a> |
| | | <a data-t="flow-aftersales"><span class="dot" style="background:var(--c-as)"></span>售后流程</a> |
| | | <a data-t="flow-finance"><span class="dot" style="background:var(--c-fin)"></span>会计核算</a> |
| | | <div class="group">结构与数据</div> |
| | | <a data-t="relation"><span class="dot" style="background:var(--c-bpm)"></span>系统关系</a> |
| | | <a data-t="dataflow"><span class="dot" style="background:var(--c-fin)"></span>数据流</a> |
| | |
| | | <section class="page" id="flow-quality"></section> |
| | | <section class="page" id="flow-warehouse"></section> |
| | | <section class="page" id="flow-aftersales"></section> |
| | | <section class="page" id="flow-finance"></section> |
| | | <section class="page" id="relation"> |
| | | <h2 class="pt">系统关系</h2> |
| | | <p class="desc">模块之间的调用与数据依赖:实线=单据/数据流向,虚线=审批回调与辅助能力。</p> |
| | |
| | | "frontend": "mom-pro2-before(Vue3 管理后台,同仓库存放,只读参考)" |
| | | }, |
| | | "stats": { |
| | | "businessModules": 13, |
| | | "coreObjects": 48, |
| | | "documentFlows": 6, |
| | | "businessModules": 14, |
| | | "coreObjects": 53, |
| | | "documentFlows": 7, |
| | | "approvalListeners": 13, |
| | | "aiCapabilities": 8, |
| | | "wmBillTypes": 15 |
| | |
| | | "MesWmSnDO 新增的 uuid 字段生成/消费逻辑未在核心 Service 中确认", |
| | | "转正申请(hrm_regularize_application)、培训证书等仅有 SQL 与菜单初始化,Java 侧 Service/Controller 未实现", |
| | | "NCR 处置结果(返工/退货)未回写触发源单据,仅台账记录", |
| | | "MPS 状态枚举独立编号(0/1/2/3),与通用单据常量(0/1/4/5)不一致" |
| | | "MPS 状态枚举独立编号(0/1/2/3),与通用单据常量(0/1/4/5)不一致", |
| | | "财务管理(会计核算)模块 yudao-module-finance 代码已落地,但①菜单/权限未配置(需自行在菜单管理建 finance:* 权限)②建表与字典脚本未同步进 docs/sql/config_export_all_<日期>.sql 阶段一,按现有合并脚本初始化新库会缺 fin_* 表与 6 组 finance_* 字典【待确认】" |
| | | ], |
| | | "generatedAt": "2026-09-10", |
| | | "analysisBasis": "基于 dev_business 分支 87bf4a99 源码,6 组并行源码走读(MES 生产质量 / MES 仓储 / ERP / CRM+SRM / 售后+HRM / AI+BI+MDM+BPM+底座)" |
| | |
| | | "roles": ["采购员", "销售员", "出纳", "会计"], |
| | | "upstream": ["CRM(合同)", "SRM(定标)", "主数据"], "downstream": ["生产(MPS)", "仓储(收发)"], |
| | | "coreTables": ["erp_purchase_request", "erp_purchase_order", "erp_purchase_invoice", "erp_finance_payment", "erp_sale_order", "erp_finance_receipt", "erp_account"]}, |
| | | {"key": "finance", "name": "财务管理(会计核算)", "color": "#3ec9a7", "tag": "FIN", "flow": "finance", |
| | | "positioning": "独立核算模块:会计核算 + 资产核算 + 财务报表看板(与 ERP 进销存财务单据分离,yudao-module-finance)", |
| | | "problem": "进销存只管单据不管账,缺少会计科目/凭证/账簿与资产折旧摊销沉淀,无法出账表与资产净值", |
| | | "features": ["会计科目树(约68条一级科目种子·可建下级)", "记账凭证(字号自动生成·分录借贷平衡前后端双重校验)", "凭证状态机 未过账0→过账10/作废20,已过账不可改", "总账按期间逐月汇总", "明细账逐条分录并结转余额", "固定资产+计提折旧", "无形资产+计提摊销", "会计核算看板(收支/资产/凭证/月度趋势)", "附件走系统附件中心 recordType=fin_voucher"], |
| | | "objects": ["会计科目", "记账凭证", "凭证分录", "固定资产", "无形资产"], |
| | | "roles": ["会计", "财务主管", "资产会计", "管理层"], |
| | | "upstream": ["进销存(ERP 已审核收货/付款/购销单据)"], "downstream": ["财务报表看板", "BI 管理驾驶舱"], |
| | | "coreTables": ["fin_account_subject", "fin_voucher", "fin_voucher_entry", "fin_fixed_asset", "fin_intangible_asset"]}, |
| | | {"key": "pro", "name": "生产管理", "color": "#e0b34f", "tag": "MES-PRO", "flow": "production", |
| | | "positioning": "生产执行核心:计划-工单-任务-报工", |
| | | "problem": "订单到车间执行的逐层拆解与过程可控", |
| | |
| | | {"name": "采购来票", "module": "进销存", "table": "erp_purchase_invoice", "doc": "FPD编号,AI OCR 预填,累计≤订单总价,付款单的前置", "upstream": ["采购订单"], "downstream": ["付款单"], "keywords": "来票 发票 采购发票"}, |
| | | {"name": "付款单", "module": "财务", "table": "erp_finance_payment", "doc": "FKD编号,必须关联来票+附件,累计≤来票金额,BPM 审批", "upstream": ["采购来票"], "downstream": ["结算账户"], "keywords": "付款 应付 payment"}, |
| | | {"name": "收款单", "module": "财务", "table": "erp_finance_receipt", "doc": "SKD编号,关联 CRM 客户校验,无 BPM(手动审核)", "upstream": ["销售(弱关联)"], "downstream": ["结算账户"], "keywords": "收款 应收 receipt"}, |
| | | {"name": "会计科目", "module": "会计核算", "table": "fin_account_subject", "doc": "科目树,parent_id 自关联;科目类型1资产2负债3权益4成本5损益,余额方向1借2贷,状态0启用1禁用;账表与分录统一按 subject_code 取数", "upstream": ["会计科目种子约68条一级科目"], "downstream": ["记账凭证分录", "总账", "明细账"], "keywords": "会计科目 科目 subject account 资产类 负债类 损益类"}, |
| | | {"name": "记账凭证", "module": "会计核算", "table": "fin_voucher", "doc": "凭证字号可留空由后端自动生成;状态 未过账0/已过账10/已作废20;已过账不可改,未过账与已过账均可作废,未过账与已作废可删除;附件按 recordType=fin_voucher 挂系统附件中心", "upstream": ["会计科目"], "downstream": ["总账", "明细账", "财务报表看板"], "keywords": "记账凭证 凭证 voucher 过账 作废 借贷平衡"}, |
| | | {"name": "凭证分录", "module": "会计核算", "table": "fin_voucher_entry", "doc": "凭证下逐行分录:科目编码+借/贷金额+辅助核算(1客户2供应商3部门4员工5项目);一行不可借贷同时大于0,全表借贷合计必须相等且大于0", "upstream": ["记账凭证", "会计科目"], "downstream": ["总账", "明细账"], "keywords": "凭证分录 分录 entry 借方 贷方 辅助核算"}, |
| | | {"name": "固定资产", "module": "会计核算", "table": "fin_fixed_asset", "doc": "资产卡片,状态 1在用/2闲置/3维修中/4已报废;月折旧额=(原值×(1-残值率))÷(年限×12),累计折旧与净值由计提累加,不接收前端传值", "upstream": [], "downstream": ["财务报表看板", "总账"], "keywords": "固定资产 折旧 资产卡片 fixed asset 残值率"}, |
| | | {"name": "无形资产", "module": "会计核算", "table": "fin_intangible_asset", "doc": "无形资产卡片(证书编号/有效期),状态 1在用/2已失效/3已摊销完;月摊销额=(原值×(1-残值率))÷(摊销年限×12),累计摊销与净值由计提累加", "upstream": [], "downstream": ["财务报表看板", "总账"], "keywords": "无形资产 摊销 软件著作权 专利 intangible 有效期"}, |
| | | {"name": "销售订单", "module": "进销存", "table": "erp_sale_order", "doc": "XSDD编号,BPM 审批,需生产行自动建 MPS,出库状态:未0已预留1部分2全部3,生产完成事件回写", "upstream": ["合同"], "downstream": ["MPS", "发货通知", "销售出库", "售后工单"], "keywords": "销售订单 sale"}, |
| | | {"name": "主生产计划", "module": "生产", "table": "mes_pro_mps", "doc": "MPS计划,草稿0→已下发1→完成2/取消3,可合并下发", "upstream": ["销售订单"], "downstream": ["生产工单"], "keywords": "MPS 主计划 生产计划"}, |
| | | {"name": "生产工单", "module": "生产", "table": "mes_pro_work_order", "doc": "草稿0→已确认1→完成2/取消3,确认时按工艺路线生成任务,最后一道工序报工回写已生产数量", "upstream": ["MPS"], "downstream": ["生产任务", "领料", "完工入库"], "keywords": "工单 生产工单 work order"}, |
| | |
| | | {"stage": "判定", "action": "问题判定: 一般/维修/退货,严重度 0-3", "roles": ["售后工程师"]}, |
| | | {"stage": "维修", "action": "现场/返厂/远程维修,费用与结果记录,完成联动工单完结", "roles": ["维修工程师"]}, |
| | | {"stage": "退货", "action": "退货申请审核→自动建 MES 销售退货单(RQC)→质检/入库回调→退款回调→关闭", "roles": ["售后", "质检", "财务"]}]}, |
| | | {"id": "finance", "name": "会计核算流程", "mermaid": "mermaid/12-finance-flow.mmd", "color": "#3ec9a7", |
| | | "summary": "独立核算模块 yudao-module-finance:会计科目建账 → 记账凭证录入(借贷平衡校验) → 过账 → 总账/明细账 → 资产计提折旧与摊销 → 财务报表看板取数 ERP 已审核单据。", |
| | | "steps": [ |
| | | {"stage": "建账", "action": "维护会计科目 tree(subjectCode 唯一,可建下级),首次可导入约 68 条一级科目种子", "roles": ["会计"]}, |
| | | {"stage": "记账", "action": "录入凭证(字号留空自动生成)+分录,分录逐行选科目并填借/贷;校验至少一行、借贷都不得同时大于0、合计相等且大于0", "roles": ["会计"]}, |
| | | {"stage": "过账", "action": "未过账0 → post 过账 → 已过账10(不可再修改);未过账0 或 已过账10 均可 cancel 作废 → 已作废20", "roles": ["会计", "财务主管"]}, |
| | | {"stage": "查账", "action": "总账按期间逐月汇总、明细账逐条分录并结转余额,两者只统计已过账10的凭证,并支持导出", "roles": ["会计", "财务主管"]}, |
| | | {"stage": "资产", "action": "固定资产(1在用/2闲置/3维修中/4已报废)与无形资产(1在用/2已失效/3已摊销完)计提:传 ids 按选中计提,ids 为空对全部未报废/未失效资产计提一个月", "roles": ["资产会计"]}, |
| | | {"stage": "报表", "action": "看板汇总资产与凭证时点数 + 经 ErpFinanceStatisticsApi 取 ERP 已审核收货付款与购销金额,输出月度收支趋势", "roles": ["财务主管", "管理层"]}]}, |
| | | {"id": "ai", "name": "AI 业务流程", "mermaid": "mermaid/11-ai-business-flow.mmd", "color": "#56c8d8", |
| | | "summary": "统一模式:业务侧收集上下文(必要时调 MDM/SRM/CRM API 取名称)→组装 Prompt→chat/chatWithImage→解析 JSON→前端预填或建议;无 Function Calling;RAG 知识库已建成但暂无业务消费。", |
| | | "steps": [ |
| | |
| | | {"role": "质检员", "modules": ["MES-QC"], "operations": ["IQC/IPQC/OQC/RQC 检验", "NCR 评审处置"], "data": ["mes_qc_*"], "scope": "inspectorUserId 归属"}, |
| | | {"role": "设备员/维修工", "modules": ["MES-DV"], "operations": ["点检保养", "维修工单", "工装领用"], "data": ["mes_dv_*", "mes_tm_*"], "scope": "chargeUserId 归属"}, |
| | | {"role": "客服/售后工程师", "modules": ["售后"], "operations": ["工单受理派工", "维修", "退货申请"], "data": ["after_sale_*"], "scope": "行级数据权限四视图:我负责/我参与/下属负责/全部(aftersales:view-all)"}, |
| | | {"role": "财务", "modules": ["ERP", "CRM"], "operations": ["收款单", "付款单", "开票审核", "结算账户"], "data": ["erp_finance_*", "crm_invoice", "crm_receivable"], "scope": "financeUserId 归属"}, |
| | | {"role": "财务", "modules": ["ERP", "CRM", "FIN"], "operations": ["收款单", "付款单", "开票审核", "结算账户", "会计科目维护", "记账凭证录入与过账/作废", "总账与明细账查询", "固定资产折旧计提", "无形资产摊销计提", "会计核算看板"], "data": ["erp_finance_*", "crm_invoice", "crm_receivable", "fin_account_subject", "fin_voucher", "fin_voucher_entry", "fin_fixed_asset", "fin_intangible_asset"], "scope": "financeUserId 归属;财务核算模块按 finance:* 接口权限 + system_menu 授权,暂无数据权限字段"}, |
| | | {"role": "HR", "modules": ["HRM"], "operations": ["员工档案入转调离", "考勤规则排班", "薪酬核算发放", "离职交接"], "data": ["hrm_*"], "scope": "部门范围 dataScope"}, |
| | | {"role": "管理层", "modules": ["BI"], "operations": ["查看采购销售/仓库/生产设备/质量/人力五大主题大屏"], "data": ["bi_dashboard"], "scope": "只读"} |
| | | ] |
| | |
| | | 付款单 |
| | | 收款单 |
| | | 结算账户 |
| | | 财务管理 会计核算 FIN |
| | | 会计科目树 |
| | | 记账凭证与分录 |
| | | 凭证过账与作废 |
| | | 总账与明细账 |
| | | 固定资产与折旧 |
| | | 无形资产与摊销 |
| | | 财务报表看板 |
| | | 生产管理 MES |
| | | 主生产计划 MPS |
| | | 生产工单 |
| | |
| | | ERP -->|销售订单审批生成MPS| MES |
| | | MES -->|入库出库回写单据进度| ERP |
| | | MES -->|ProductionFinishedEvent| ERP |
| | | ERP -->|ErpFinanceStatisticsApi.getMonthlyStatistics·只取已审核 status=20 的收款付款与购销金额| FIN[财务核算 FIN 科目·凭证·总账明细账·资产折旧摊销·报表看板] |
| | | MES -->|退货质检入库回调| AS[售后工单维修退货] |
| | | CRM -->|客户主数据| AS |
| | | HRM[HRM 员工入转调离交接考勤薪酬] -.->|expandUserIds 数据可见性扩展·接口已就绪待各模块接入| CRM |
| | |
| | | ERP --> BI |
| | | CRM --> BI |
| | | HRM --> BI |
| | | FIN --> BI |
| | | SYS[系统底座 认证·RBAC·字典·附件中心·定时任务] --- MDM |
| | | SYS --- MES |
| | | STG[附件中心 storage-blob+attachment 全模块统一挂附件] --- ERP |
| | | FIN -.->|凭证附件 recordType=fin_voucher| STG |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="09-data-flow"> |
| | | flowchart LR |
| | |
| | | RC[收款单] |
| | | PI[采购来票] --> PA[付款单] |
| | | end |
| | | subgraph S5 [财务核算 FIN 独立模块] |
| | | FA[会计科目 fin_account_subject] --> FV[记账凭证 fin_voucher] |
| | | FV --> FE[凭证分录 fin_voucher_entry] |
| | | FE -->|借贷平衡校验·不平衡或合计为0则拦下| FVPOST{凭证过账} |
| | | FVPOST -->|已过账10| GL[总账·按期间逐月汇总] |
| | | FVPOST -->|已过账10| DL[明细账·逐条分录并结转余额] |
| | | GL --> FDASH[会计核算看板] |
| | | DL --> FDASH |
| | | FIX[固定资产·1在用2闲置3维修中4已报废] -->|计提折旧·传ids按选中 空ids全量| FDEP[累计折旧与净值] |
| | | FINT[无形资产·1在用2已失效3已摊销完] -->|计提摊销·传ids按选中 空ids全量| FAMR[累计摊销与净值] |
| | | FDEP --> FDASH |
| | | FAMR --> FDASH |
| | | end |
| | | CT -->|generateSaleOrder 带入客户产品折扣定金·回写orderId| SO |
| | | SO -->|审批通过带入 saleOrderId 行ID 数量 客户 交期| MP |
| | | PO -->|确认收货带入订单行物料供应商数量| AN |
| | |
| | | IV -->|回款强制先开票| RK |
| | | RC -->|关联CRM客户校验| CU |
| | | PA -->|关联来票与供应商| PI |
| | | RC -->|已审核收款单金额 ErpFinanceStatisticsApi| FDASH |
| | | PA -->|已审核付款单金额 ErpFinanceStatisticsApi| FDASH |
| | | SO -->|已审核销售订单金额 ErpFinanceStatisticsApi| FDASH |
| | | PO -->|已审核采购订单金额 ErpFinanceStatisticsApi| FDASH |
| | | FV -.->|凭证附件 recordType=fin_voucher| PDFARCH |
| | | subgraph S4 [智能质检报告 qcreport] |
| | | RPT[报告模板] --> RPTV[模板版本] |
| | | RPTVSAVE[设计器保存 create 或 update] -->|写入侧闸门 规则101_006 画布安全101_009 不合格不落库| RPTV |
| | |
| | | hrm_employee ||--o| hrm_user_handover : "离职交接映射" |
| | | qc_report_template ||--o{ qc_report_template_version : "多版本" |
| | | qc_report_template_version ||--o{ qc_report_instance : "冻结出件版本" |
| | | fin_account_subject |o--o{ fin_voucher_entry : "分录按 subject_code 对应科目" |
| | | fin_voucher ||--o{ fin_voucher_entry : "凭证含分录" |
| | | %% fin_fixed_asset 固定资产与 fin_intangible_asset 无形资产为独立资产卡片,靠资产编号自管理,无外键关联,故不上 ER |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="11-ai-business-flow"> |
| | | flowchart TD |
| | |
| | | MODE[模型层:通义千问为主·预留DeepSeek/OpenAI/Ollama未实现] --- O2 |
| | | NOTE[全项目无Function Calling·AI只输出结构化JSON由业务侧解析] --- J2 |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="12-finance-flow"> |
| | | flowchart TD |
| | | A[会计科目 fin_account_subject·一级科目种子约68条] -->|建下级科目 parent_id| B[科目树·list 组装 children] |
| | | B -->|科目取值用 subjectCode 而非 id| C[记账凭证 fin_voucher·留空则自动生成字号] |
| | | C --> D[凭证分录 fin_voucher_entry·逐行科目+借/贷+辅助核算] |
| | | D -->|前端校验·后端复核| E{借贷平衡校验} |
| | | E -->|不平衡或合计为0| E1[拦下·提示出错行与借贷差额] |
| | | E -->|平衡| F[保存·未过账0] |
| | | F -->|可编辑 可过账 可作废 可删除| F |
| | | F -->|过账 post| G[已过账10·不可再修改] |
| | | F -->|作废 cancel| H[已作废20] |
| | | G -->|作废 cancel| H |
| | | H -->|删除 delete| X[删除] |
| | | G -->|只统计已过账凭证明细| I[总账 finance/ledger/general·按期间逐月汇总] |
| | | G -->|只统计已过账凭证明细| J[明细账 finance/ledger/detail·逐条分录并结转余额] |
| | | I --> K[财务报表 / 会计核算看板] |
| | | J --> K |
| | | L[固定资产 fin_fixed_asset·状态 1在用 2闲置 3维修中 4已报废] -->|计提折旧 depreciate·空ids=全量| M[累计折旧递增·净值=原值-累计折旧] |
| | | N[无形资产 fin_intangible_asset·状态 1在用 2已失效 3已摊销完] -->|计提摊销 amortize·空ids=全量| O[累计摊销递增·净值=原值-累计摊销] |
| | | M --> K |
| | | O --> K |
| | | P[ERP 已审核单据 status=20 收款单 付款单 销售订单 采购订单] -->|ErpFinanceStatisticsApi.getMonthlyStatistics 按月| K |
| | | K -.->|科目数 凭证数 未过账 已过账 已作废 资产净值 月度趋势| Q[看板卡片+月度趋势图] |
| | | V[附件中心 recordType=fin_voucher] --- C |
| | | V -.->|不落 file_url 列| C |
| | | </pre> |
| | | |
| | | <script type="module"> |
| | | const DATA = {}; |
| | |
| | | const mmdSrc = {}; |
| | | document.querySelectorAll('pre.mmd-src').forEach(p=>{ mmdSrc[p.dataset.mmd]=p.textContent.trim(); }); |
| | | |
| | | const flowColor = {sales:'var(--c-sale)',purchase:'var(--c-erp)',production:'var(--c-prod)',quality:'var(--c-qc)',warehouse:'var(--c-wm)',aftersales:'var(--c-as)',ai:'var(--c-ai)'}; |
| | | const flowColor = {sales:'var(--c-sale)',purchase:'var(--c-erp)',production:'var(--c-prod)',quality:'var(--c-qc)',warehouse:'var(--c-wm)',aftersales:'var(--c-as)',finance:'var(--c-fin)',ai:'var(--c-ai)'}; |
| | | |
| | | async function boot(){ |
| | | DATA.business = await loadJson('business'); |
| | |
| | | </div> |
| | | <h3 class="sec">业务模块</h3> |
| | | <div class="grid cards">`; |
| | | const targets = {crm:'flow-sales',erp:'flow-purchase',pro:'flow-production',wm:'flow-warehouse',qc:'flow-quality',aftersales:'flow-aftersales',ai:'ai',srm:'flow-purchase',mdm:'objects',dv:'objects',hrm:'objects',bpm:'relation'}; |
| | | const accs = {mdm:'var(--c-base)',crm:'var(--c-sale)',srm:'var(--c-sup)',erp:'var(--c-erp)',pro:'var(--c-prod)',wm:'var(--c-wm)',qc:'var(--c-qc)',dv:'var(--c-dv)',aftersales:'var(--c-as)',hrm:'var(--c-hrm)',bpm:'var(--c-bpm)',ai:'var(--c-ai)'}; |
| | | const targets = {crm:'flow-sales',erp:'flow-purchase',pro:'flow-production',wm:'flow-warehouse',qc:'flow-quality',aftersales:'flow-aftersales',ai:'ai',srm:'flow-purchase',mdm:'objects',dv:'objects',hrm:'objects',bpm:'relation',finance:'flow-finance'}; |
| | | const accs = {mdm:'var(--c-base)',crm:'var(--c-sale)',srm:'var(--c-sup)',erp:'var(--c-erp)',pro:'var(--c-prod)',wm:'var(--c-wm)',qc:'var(--c-qc)',dv:'var(--c-dv)',aftersales:'var(--c-as)',hrm:'var(--c-hrm)',bpm:'var(--c-bpm)',ai:'var(--c-ai)',finance:'var(--c-fin)'}; |
| | | DATA.modules.modules.forEach(m=>{ |
| | | html += `<div class="card" style="--acc:${accs[m.key]||'#2c5cff'}" data-goto="${targets[m.key]||'panorama'}"> |
| | | <h3>${esc(m.name)}<span class="tag">${esc(m.tag)}</span></h3> |