CRM / 合同中心 / MDM 合同台账 · 整体架构
目标:模块可拆分;跨模块选用统一走主数据;有/无合同中心均可运行。
一句话
业务域各管真相源;MDM 只做跨模块选用索引;有合同中心时以合同台账入 MDM,无合同中心时由 CRM 入 MDM;下游永远只认 MdmContractLedgerApi。
三层模型
| 层 | 对象 | 职责 | 可缺席 |
|---|---|---|---|
| CRM | crm_contract | 销售成交:客户/商机/回款/开票 | 可 |
| 合同中心 | contract_info → contract_ledger | 法律全生命周期 | 可 |
| MDM | mdm_contract_ledger | 摘要索引,供项目/OA/财务选用 | 建议常在 |
产品话术:CRM「销售合同」、合同管理「合同台账」、主数据「合同主数据」。
谁写 MDM
| CRM | 合同中心 | 发布方 | sourceSystem | ID 公式 |
|---|---|---|---|---|
| 有 | 有 | 仅合同中心 | CONTRACT | 51000000 + contract_ledger.id |
| 有 | 无 | CRM | CRM | 53000000 + crm_contract.id |
| 无 | 有 | 合同中心 | CONTRACT | 同上 |
| 无 | 无 | 手工 | MANUAL | 11000000 段 |
禁止 CRM 与合同对同一笔业务双写 MDM。判定合同中心是否存在:CrmContractLinkClient.isAvailable()(classpath 含 ContractInfoApi)。
CRM ↔ 合同中心
可选集成壳(对齐 HRM):
CrmContractLinkClient+ NoOp +@ConditionalOnClass- 推送正式合同草稿:
createSalesContract,回写crm_contract.contract_info_id - 回款审批通过且已关联正式合同 →
addPerformanceRecord
默认手动「推送正式合同」;配置 yudao.crm.contract.push-on-approve=true 可在审批通过时自动推送。
下游选用
跨模块引用字段统一为 mdmContractId(=mdm_contract_ledger.id)。前端使用 MdmContractSelectModal。
