35 lines
1.4 KiB
Python
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)
|