6.8 KiB
6.8 KiB
项目侧字段分流总表草案
1. 目的
这份总表只回答一件事:
- 哪些字段继续保留为代码 enum / 代码常量。
- 哪些字段应迁到
field_config。 - 哪些字段暂时不能直接收口,必须先补领域边界或映射关系。
2. 分流原则
优先按三类处理:
- 保留代码 enum:值域固定、语义稳定、业务分支已直接依赖。
- 迁到
field_config:值域跟project_type、初始化模板或业务配置强相关。 - 暂缓收口:当前 backend 与 sync schema 映射不完整,或领域边界本身还没定。
3. 总表
| 领域 | 字段 | 当前主要来源 | 建议归类 | 备注 |
|---|---|---|---|---|
| project | project_type |
代码 enum + 初始化字典 | 保留代码 enum | 核心路由字段 |
| project | project_subtype |
自由字符串 | 迁到 field_config |
建议 key:project.project_subtype |
| project | syxs |
自由字符串 | 迁到 field_config |
建议 key:project.syxs |
| project | status |
代码 enum + 服务推导 | 保留代码 enum | 正式集合含 early,并清理历史 NULL |
| project | progress_type |
代码 enum + DB enum | 保留代码 enum | 已与 sync schema 对齐 |
| project | key_constraints |
代码 enum 分叉 + DB enum | 保留代码 enum | 项目侧保留 OTHER,备注集团侧使用 QT |
| contract | contract_type |
代码 enum | 保留代码 enum | 先确认是否保留 project |
| contract | code |
初始化字典 / config / 自由字符串 | 迁到 field_config |
建议 key:contract.code |
| contract | currency |
自由字符串 | 暂不处理 | 当前仅见 CNY |
| construction_task | section_type_code |
硬编码 dict + config | 迁到 field_config |
建议 key:construction.section_type_code |
| construction_task | task_type |
类型树 + 字符串字段 | 暂缓收口 | 先拆 category 与真实任务类型 |
| construction_task | status |
数值字段 + dict | 保留代码常量 | 先统一常量定义源 |
| material | material_type |
本地列表 + 自由字符串 | 迁到 field_config |
建议 key:material.material_type |
| material | status |
数值字段 | 暂缓收口 | 先和 supply_status 划边界 |
| material | supply_status |
代码 enum | 保留代码常量 | 先确认是否为正式推送字段 |
| material | approval_party |
本地候选项 | 暂不处理 | 当前无集团侧对应 |
| contract_settlement | contract_type |
跟随合同主表 | 暂缓收口 | 先确认是否允许 project |
| contract_settlement | status |
数值字段 | 保留代码常量 | 需补统一定义源 |
| contract_settlement | payment_method |
代码 enum | 保留代码 enum | 不建议迁 field_config |
| personnel | personnel_type |
本地代码常量 | 保留代码 enum | 本地真实领域是人员资质 |
| personnel | task_type |
本地候选项常量 | 保留代码常量 | 先补 schema 白名单 |
| personnel | is_duty |
数值常量 | 保留代码常量 | 与集团侧 status 不是同一字段 |
| preparation | code |
初始化字典 + 自由字符串 | 迁到 field_config |
建议 key:preparation.code |
| preparation | approval_status |
通用审批体系 | 接入通用审批定义 | 不单独建 field_config |
| preparation | is_exist |
布尔字段 | 暂不处理 | 不属于候选项字段 |
| production | code |
初始化字典 + 自由字符串 | 迁到 field_config |
建议 key:production.code |
| production | approval_status |
通用审批体系 | 接入通用审批定义 | 不单独建 field_config |
| production | is_exist |
布尔字段 | 暂不处理 | 不属于候选项字段 |
4. 第一批建议落地项
优先进入 field_config 的字段:
project.project_subtypeproject.syxscontract.codeconstruction.section_type_codematerial.material_typepreparation.codeproduction.code
优先保留并收紧 schema 的代码 enum 字段:
project.project_typeproject.statusproject.progress_typeproject.key_constraintscontract.contract_typecontract_settlement.payment_method
优先先做边界确认、暂不直接配置化的字段:
construction.task_typematerial.statuscontract_settlement.contract_type
5. 使用方式
这份表可以直接作为后续代码改造顺序的输入:
- 先处理“迁到
field_config”的一组字段。 - 再处理“保留代码 enum,但 schema 还没收口”的一组字段。
- 最后处理“暂缓收口”的结构性问题字段。
6. 按本轮目标拆出的第一批字段
这次不是单纯做字段分类,而是要直接服务于 3 条链路:
- 项目初始化
- create 业务校验
- 前端下拉列表
因此第一批字段不能只看“适不适合进 field_config”,还要看它能不能尽快把这 3 条链路收口到同一真源。
6.1 第一批优先收口字段
建议第一批优先处理:
contract.codematerial.material_typeconstruction.section_type_codepreparation.codeproduction.codepower.code
原因:
- 都属于 code 类字段
- 都直接影响初始化、创建或下拉其中至少两条链路
- 当前都存在 config / dict / 代码常量混用问题,或者已具备明显收口价值
6.2 每个字段要同时回答的 3 个问题
对上面每个字段,后续文档和代码改造都应同时回答:
- 初始化时从哪里拿候选项。
- create service 开头用哪个 config key 做校验。
- 前端下拉接口用哪个 config key 返回选项。
如果这 3 个问题的答案不是同一个 key,就说明还没有真正收口。
6.3 本轮不优先收口但要避免误迁的字段
下面这些字段虽然也和 enum 有关,但本轮不应抢先塞进字段级配置:
project.statusproject.progress_typeproject.key_constraintscontract.contract_typecontract_settlement.payment_method
原因是:
- 这些字段语义更固定
- 业务分支已经直接依赖
- 本轮重点是先把“按项目类型变化的 code 类字段”收口,而不是把固定状态类枚举全部配置化
6.4 对物资字段的特别说明
material.material_type 虽然在表里只是一行,但它实际上牵扯 4 套来源:
- 初始化合同候选项:
contract_config - 物资初始化补充:
material_contract_* - 前端下拉:
material_types - create 内部默认展示/单位:
contract_product_type_list
所以 material.material_type 不是简单迁一个 key,而是本轮最需要先统一真源的一项。
6.5 本轮完成后的字段判定标准
一个字段只有同时满足下面 3 条,才算本轮真正完成收口:
- 初始化使用它对应的 field config
- create 校验使用它对应的 field config
- 下拉列表返回也使用它对应的 field config