2.4 KiB
2.4 KiB
Contract Settlement Detail 领域重构指南
1. 范围
本文档对应 backend 的 contract_settlement_detail 明细表。
当前优先关注:
contract_settlement_detail.payment_typecontract_settlement_detail.advance_typecontract_settlement_detail.approval_status
2. 字段盘点
2.1 payment_type
当前实现:
- 本地
PaymentTypeenum 定义在app/modules/contract/enums.py - 取值:
advance、progress、settlement - 模型里是
String PostDetailDataschema 里已使用PaymentType | None
当前使用:
- 结算服务会按
payment_type分支处理,例如预付款与进度款逻辑不同
项目侧取值范围:
advanceprogresssettlement
集团侧差异:
- 当前没看到集团侧
enum_config为结算明细单独列出该字段 - 当前仓库也没有 standalone 的同步 schema 对应
contract_settlement_detail
结论:
- 保留为代码 enum
- 这是少数已经在 schema 层显式使用 enum 的字段,应该延续这种做法
2.2 advance_type
当前实现:
- 本地
AdvanceTypeenum 取值:project、product、service - 模型里是
String PostDetailDataschema 里已使用AdvanceType | None
项目侧取值范围:
projectproductservice
集团侧差异:
- 当前没看到集团侧
enum_config为该字段给出正式候选项 - 当前仓库也没有 standalone 的同步 schema 对照该字段
结论:
- 保留为代码 enum
2.3 approval_status
当前实现:
- 模型依赖
ApprovalMixin - 结算明细服务强依赖审批流
项目侧取值范围:
- 当前跟随通用审批状态体系
- 本领域自身没有单独 enum 文件
集团侧差异:
- 当前没看到 standalone 的同步 schema 对这个明细领域建模
结论:
- 接入通用审批定义即可
3. 重点结论
payment_type、advance_type已经是本地相对成熟的代码 enum,用法比结算主表更收敛。- 这一层不需要优先迁
field_config,重点是把模型层和 schema 层收口一致。 approval_status继续走通用审批定义即可。
4. 待修改项清单
- 将
payment_type、advance_type保持为正式 enum,不要退回自由字符串。 - 评估模型层是否也要收紧,而不只是 schema 层使用 enum。
- 明确结算明细审批状态与通用审批体系的正式映射。