# Material Detail 领域重构指南 ## 1. 范围 本文档对应 backend 的 `material_detail` 明细表。 当前优先关注: - `material_detail.kit` - `material_detail.part` - `material_detail.status` - `material_detail.approval_status` ## 2. 字段盘点 ### 2.1 `kit` 当前实现: - 模型里是 `String` - 本地候选项来自 `kit_part_dict` - 没有独立 enum 类 项目侧取值范围: - 当前本地明确值包括:`TY`、`ZJ`、`LZ`、`XC`、`ZT`、`NB`、`XB`、`ZB`、`GS`、`CN`、`PCS`、`DCC`、`35KV`、`CYJD`、`SVG`、`DL`、`35-DL`、`10-DL`、`400DL`、`two-DL`、`TXDL`、`GX`、`WX`、`ECPG`、`QT` 集团侧差异: - 集团侧没有独立的 `MaterialDetail` 顶层段 - 同步 schema `material_detail.py` 里也没有 `kit` 字段 结论: - 当前是本地专有字段 - 先保留配置字典来源 ### 2.2 `part` 当前实现: - 模型里是 `String` - 没有统一 enum 或配置表 项目侧取值范围: - 当前无法列出稳定范围 - 更像是自由文本/部件说明字段 集团侧差异: - 当前没看到同步 schema 或集团侧 `enum_config` 给出对应候选项 结论: - 暂不枚举化 ### 2.3 `status` 当前实现: - backend 明细模型没有显式业务 status 字段 - 同步 schema `material_detail.py` 有 `status: Optional[int]` 项目侧取值范围: - 当前无法从 backend `material_detail` 模型中列出正式取值范围 集团侧差异: - 同步 schema 仍保留该字段 - backend 当前没有同名正式字段,存在领域映射缺口 结论: - 需要先确认推送时该字段来源到底是 material 主表还是 detail 明细计算值 ### 2.4 `approval_status` 当前实现: - backend 依赖 `ApprovalMixin` - 同步 schema 使用 `ApprovalStatus` enum 项目侧取值范围: - 当前 material_detail 自身没有独立审批 enum 文件 - 依赖通用审批体系 集团侧差异: - 同步 schema 已经显式收紧为审批 enum 结论: - 统一接入通用审批 enum 即可 ## 3. 重点结论 - `material_detail` 当前不是一个干净的“可直接枚举化”领域,最大的缺口是 backend 与 sync schema 的字段映射不完整。 - `kit` 可以继续保留为本地候选项来源,但是否外提到 `field_config` 取决于后续是否进入推送口径。 - `status` 必须先确认正式来源,否则不能直接做字段级配置。 ## 4. 待修改项清单 1. 明确 `kit` 是否需要单独迁成字段配置。 2. 明确 `part` 是否继续保留自由文本。 3. 明确 `material_detail.status` 在 backend 的正式来源。 4. 将 `approval_status` 与通用审批状态定义彻底对齐。