3.8 KiB
3.8 KiB
Production 领域重构指南
1. 范围
本文档对应 backend 的 production 投产节点表。
当前优先关注:
production.codeproduction.approval_statusproduction.is_exist
2. 字段盘点
2.1 code
当前实现:
- 模型里是
String - 没有本地 enum 类
- 项目初始化时,节点集合来自
production_{project_type}字典数据 - 同步 schema
project_extensions/production.py里也是str
项目侧取值范围:
- 当前无法从单一 enum 文件列出完整范围
- 已知典型值包括:
SYZDSD、SPBW、QBBW、KHWC240、YJSC、DBTC、CQZS、WGJS、JGJS
集团侧差异:
- 集团侧
enum_config.Production.code已把该字段按项目类型列成正式候选项 - 本地仍主要靠初始化字典和自由字符串
结论:
- 更适合迁到
field_config
2.2 approval_status
当前实现:
- backend 依赖
ApprovalMixin - 本地
ProductionApprovalschema 仍使用 int - 同步 schema
ProductionDetail里是Optional[str]
项目侧取值范围:
- 当前本地未在 production 模块中沉成独立 enum
集团侧差异:
- 同步 schema 有字段,但没有正式 enum
结论:
- 应统一接入通用审批状态体系
2.3 is_exist
当前实现:
- 模型里是
Boolean - backend 和 sync schema 都有
项目侧取值范围:
truefalse
集团侧差异:
- 当前没看到 enum_config 对该字段给候选项
结论:
- 保持布尔字段即可
3. 重点结论
production.code和preparation.code一样,属于典型的初始化节点编码字段,应迁到field_config。approval_status仍应走通用审批体系,而不是 production 自己维护一套值域。is_exist不属于本轮需要抽成字段候选表的重点字段。
4. 待修改项清单
- 将
production.code正式迁到field_config。 - 将项目初始化里对
production_{project_type}的依赖逐步收敛到统一字段配置入口。 - 将
approval_status接入通用审批状态定义。
5. 按本轮要求的改造落点
production 和 preparation 一样,属于本轮适合优先收口的平铺型节点编码领域。
5.1 初始化
当前 production 初始化直接来自 production_{project_type} dict。
同时本地还存在:
ProductionCodeenumdict_to_production_code_namelist_to_production_code_name- 列表排序里的
sort_code
本轮目标是:
- 把
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.codefield config 返回 - 不再把
list_to_production_code_name当成前端下拉真源
5.4 清理项
production 领域本轮改造完成后,应优先清理:
production_{project_type}dict 的初始化真源职责ProductionCode相关重复映射和展示列表- 列表排序中写死的
sort_code
排序如果仍需要固定顺序,也应迁到配置附属字段中表达。
6. 测试关注点
production 领域 service 层集成测试至少覆盖:
- 初始化:项目初始化时生成的投产节点是否来自目标 field config。
- Create / Update:合法
code可以写入,非法code明确报错。 - 列表:项目实例列表顺序是否来自配置顺序,而不是硬编码
sort_code。