# Construction Task 领域重构指南 ## 1. 范围 本文档对应 backend 的 `construction` 主表,也就是施工任务本体。 当前优先关注: - `construction.section_type_code` - `construction.task_type` - `construction.status` ## 2. 字段盘点 ### 2.1 `section_type_code` 当前实现: - 本地有硬编码 `section_type_id_dict` - 也有 `construction_section_config` 作为配置来源 - 模型里是 `String` - 创建 schema 里是 `str` - 同步 schema 对应字段名是 `construction_section`,类型是 `str` 当前使用: - 是施工初始化和施工任务分区的关键字段 - construction 服务和 config helper 都直接依赖它 项目侧取值范围: - 本地明确值:`GF`、`SY`、`SC`、`SCDW` 集团侧差异: - 当前没看到集团侧 `enum_config` 有独立的 Construction 顶层段 - 同步 schema 里有对应字段,但仍是普通字符串 结论: - 应迁到 `field_config` - 继续沿用 `construction.section_type_code` ### 2.2 `task_type` 当前实现: - 模型里是 `String` - 创建 schema 里是 `str` - 本地只有一个层级 enum `ConstructionCategory`,值是 `01`、`02`、`0201`、`03`、`0301`、`04`、`05` 当前使用: - 施工树和类型树逻辑会使用它 - 但业务任务实际取值往往来自施工树节点,而不只是 `ConstructionCategory` 项目侧取值范围: - 如果按层级 category 看,明确值是:`01`、`02`、`0201`、`03`、`0301`、`04`、`05` - 如果按真实任务类型看,当前无法从单一代码 enum 列出完整集合,因为还受施工树/`construction_node_config` 影响 集团侧差异: - 同步 schema 里 `task_type` 仍是 `str` - 当前没有看到集团侧 `enum_config` 对这个字段给出统一候选项表 结论: - 不能简单做成单一代码 enum - 更适合拆成“层级 category”与“真实任务类型”两层定义 ### 2.3 `status` 当前实现: - 模型里是 `SmallInteger` - 同步 schema 里是 `Optional[int]` - 本地有 `progress_status_dict` 项目侧取值范围: - `-1` - `0` - `1` 集团侧差异: - 当前没看到集团侧 `enum_config` 独立列出 Construction.status - 同步 schema 仍是 `int` 结论: - 保留数值状态字段 - 需要统一是走代码常量、dict 映射还是后续字段配置 ## 3. 重点结论 - `section_type_code` 是典型的字段级配置候选。 - `task_type` 当前最复杂,不能直接当成一个静态 enum 处理。 - `status` 目前是简单数值状态,但也需要统一正式定义源。 ## 4. 待修改项清单 1. 将 `section_type_code` 正式迁到 `field_config`。 2. 清理 `section_type_code` 的硬编码 dict 与 config helper 双来源。 3. 拆分 `task_type` 的“层级 category”与“真实任务类型”语义。 4. 明确哪些 `task_type` 值来自施工树,哪些来自配置表。 5. 为 `status` 建立统一常量定义,避免散落数值字面量。