## Context Monorepo 已包含 **CRM**(`crm/` Java + Vue)、**地磅**(`dibang-xiaoshou/`)、**报销 BX**(`bx/`,本次不联动)、以及待扩展的 **`mobile-frontend`**(uni-app)。`plan/计划需求.md` 定义了计划域七步业务流程、与 CRM 合同/产品、地磅单据的深度耦合,以及统一账号与菜单权限的长期目标。SQL 参考要求指向 `plan/sx.sql`,表名 **`pl_` 前缀**;车辆字段可参考 `plan/vehicle_management.sql`。 ## Goals / Non-Goals **Goals:** - 用**分阶段里程碑(M0→Mn)**交付:先对齐制品与路线图,再数据模型与 API,再 CRM/地磅改造与计划前端,最后运输结算与盘存深化。 - 建立 **Python 计划域后端** 与**工作流**能力,承载审核类状态机(运输结算等),并与 CRM 用户体系集成(复用或联邦,见 Decisions)。 - 保持历史 **SQL 尽量少改**;新增以 `pl_` 为主,CRM/地磅侧以**增量列/关联表**为主。 - 文档与阶段总结统一落在 **`docs/系统文档/`** 下,便于检索与审计。 **Non-Goals:** - 本次不实现与 **BX 报销** 的接口或数据联动。 - 不在本阶段一次性完成全部业务代码合并或生产切换。 - 不强制在本设计阶段选定移动端视觉规范(仅约束技术栈为 uni-app 扩展)。 ## Decisions 1. **流程模式**:按《项目任务全流程助手》采用 **Complex Mode**;本 change 对应 **M0:对齐与路线图**,实现编码从 **M1** 起分里程碑门禁。 2. **OpenSpec 与能力拆分**:按 `proposal.md` 中八个 capability 分别建 spec,任务与测试用例映射到 capability,避免单文件不可维护。 3. **编号规则**:计划订单编号 `SXDDH` + `YYYYMMDD` + 6 位序列;运输编号 `SXYS` + 序列(需求为 7 位可变长度时以实现为准,**M1 锁定格式与并发分配策略**)。 4. **待入库 / 待出库判定**:与需求文档一致——目的地为「安庆市山峡化工有限公司」或「安徽云栋化工有限公司」→ **待入库**;供应商为上述二者之一 → **待出库**(实现时以主数据或配置表承载公司全称,避免硬编码散落)。 5. **Web UI**:新计划管理端采用 **art-design-pro**(与地磅现有 `dibang-xiaoshou/art-design-pro` 对齐技术选型,复用组件与学习成本)。 6. **工作流引擎**:Python 生态选型在 **M1 前**完成 PoC(候选:Temporal、Prefect、或轻量自研状态机 + DB;**不以 Java Flowable 为运行时**,仅保留概念类比)。本设计不提前锁定许可证与运维成本,**Open Questions** 跟踪。 7. **CRM 用户/角色复用**:优先 **SSO 或网关统一鉴权 + CRM 为身份源**之一;计划服务校验 token 或 session 委托;菜单分 **Web / 移动端** 维度建模(需求已声明)。 ## Risks / Trade-offs - **`plan/sx.sql` 缺失** → 无法对齐财务/CRM 基线模型;**缓解**:在 M0 末从现有环境导出补齐至 `plan/sx.sql`,并在风险清单登记。 - **跨三系统并行改造** → 集成回归成本高;**缓解**:契约优先(OpenAPI/事件主题表)、每里程碑最小竖切(合同发起 → 单行计划 → 模拟地磅回调)。 - **框架合同调价版本** → 与历史合同数据不一致风险;**缓解**:调价函附件 + 版本表 + 计划行**冻结引用**价格版本 ID。 - **公司名规则硬编码** → 更名或子公司扩展困难;**缓解**:配置化「本企业实体」主数据,规则引擎读配置。 - **工作流引擎过重** → 运维与集群成本;**缓解**:M1 PoC 对比后选最简满足「结算审核 + 通知」路径的方案。 ## Migration Plan 1. **M0**:制品 + `pl_` 草案 DDL(仅新表)+ 环境基线 SQL 归档。 2. **M1**:计划只读/草稿 API + CRM 合同发起 API 联调;无生产切换。 3. **M2+**:分模块打开写权限、地磅双向同步、移动端只读看板→全功能。 4. **回滚**:以功能开关与 DB migration 向下兼容为主;计划域表可空库回滚脚本保留。 ## Open Questions - 工作流引擎最终选型与部署拓扑(单机 vs 集群)。 - `crm/py-backend` 是否作为计划域宿主,或独立 `plan-backend/` 服务目录(待 M1 仓库布局决策)。 - 与 CRM 的菜单同步:推送到 CRM 菜单表还是计划网关聚合菜单(影响改造面)。