Files
2026-03-18 11:34:02 +08:00

3.3 KiB

Production 领域重构指南

1. 范围

本文档对应 backend 的 production 投产节点表。

当前优先关注:

  • production.code
  • production.approval_status
  • production.is_exist

2. 字段盘点

2.1 code

当前实现:

  • 模型里是 String
  • 没有本地 enum 类
  • 项目初始化时,节点集合来自 production_{project_type} 字典数据
  • 同步 schema project_extensions/production.py 里也是 str

项目侧取值范围:

  • 当前无法从单一 enum 文件列出完整范围
  • 已知典型值包括:SYZDSDSPBWQBBWKHWC240YJSCDBTCCQZSWGJSJGJS

集团侧差异:

  • 集团侧 enum_config.Production.code 已把该字段按项目类型列成正式候选项
  • 本地仍主要靠初始化字典和自由字符串

结论:

  • 更适合迁到 field_config

2.2 approval_status

当前实现:

  • backend 依赖 ApprovalMixin
  • 本地 ProductionApproval schema 仍使用 int
  • 同步 schema ProductionDetail 里是 Optional[str]

项目侧取值范围:

  • 当前本地未在 production 模块中沉成独立 enum

集团侧差异:

  • 同步 schema 有字段,但没有正式 enum

结论:

  • 应统一接入通用审批状态体系

2.3 is_exist

当前实现:

  • 模型里是 Boolean
  • backend 和 sync schema 都有

项目侧取值范围:

  • true
  • false

集团侧差异:

  • 当前没看到 enum_config 对该字段给候选项

结论:

  • 保持布尔字段即可

3. 重点结论

  • production.codepreparation.code 一样,属于典型的初始化节点编码字段,应迁到 field_config
  • approval_status 仍应走通用审批体系,而不是 production 自己维护一套值域。
  • is_exist 不属于本轮需要抽成字段候选表的重点字段。

4. 待修改项清单

  1. production.code 正式迁到 field_config
  2. 将项目初始化里对 production_{project_type} 的依赖逐步收敛到统一字段配置入口。
  3. approval_status 接入通用审批状态定义。

5. 按本轮要求的改造落点

production 和 preparation 一样,属于本轮适合优先收口的平铺型节点编码领域。

5.1 初始化

当前 production 初始化直接来自 production_{project_type} dict。

本轮目标是:

  • production.code 迁到 field config
  • 初始化改成通过 config 工具读取候选项后批量创建
  • 不再依赖 dict 作为初始化真源 ∏

5.2 Create 校验

当前 production 领域也没有统一的 code 候选项校验入口。

本轮目标是:

  • 在 create / update 的 service 入口开头,基于 config 校验 production.code
  • 不再继续用本地硬编码列表承担合法值白名单职责

5.3 下拉列表

production 当前也没有单独的 code 候选项下拉接口,更多是返回项目实例列表 /production/list

本轮要求是:

  • 如果需要单独 code 候选项下拉,应直接从 production.code field config 返回

6. 测试关注点

production 领域 service 层集成测试至少覆盖:

  1. 初始化:项目初始化时生成的投产节点是否来自目标 field config。
  2. Create / Update:合法 code 可以写入,非法 code 明确报错。
  3. 列表:项目实例列表顺序是否来自配置顺序,而不是硬编码 sort_code