Files
ecm_sync_system/sync_state_machine/domain/project/sync_node.py
T
2026-04-01 11:52:57 +08:00

35 lines
1.4 KiB
Python

from pydantic import Field
from ...common.sync_node import SyncNode
from schemas.project.project_base import ProjectResponseBase
class ProjectSyncSchema(ProjectResponseBase):
"""
项目同步内部 schema。
以 project 主表字段为主体,并补充少量从 /project/all_info 的多项目类型
extension 中拍平得到的投资/结算相关字段。
这些字段不是 ProjectResponseBase 原生字段,而是为了让 project 节点在保持
扁平存储形态的同时,能够参与 project update diff,以及后续的
settlement_investment 等更新接口。
"""
implementation_estimate: float | None = Field(None, description="执行概算")
static_total_investment: float | None = Field(None, description="静态总投资")
completed_investment: float | None = Field(None, description="已完成投资")
total_contract_quantity: float | None = Field(None, description="合同总量")
completed_settlement_quantity: float | None = Field(None, description="已结算量")
ic_plan_first_production_date: str | None = Field(None, description="集团计划首批投产日期")
ic_plan_full_production_date: str | None = Field(None, description="集团计划全容量投产日期")
class ProjectSyncNode(SyncNode[ProjectSyncSchema]):
"""项目同步节点"""
node_type = "project"
schema = ProjectSyncSchema
def __init__(self, **kwargs):
super().__init__(**kwargs)