""" 项目全部信息的增删查改模板,聚合了项目相关schema """ from pydantic import BaseModel, Field, field_serializer from typing import Optional from .project_base import ( ProjectResponseBase, ProjectEnsureCapacity, ProjectClimbCapacity, ProjectChallengeCapacity, ProjectActualConstruction, ProjectPlanConstruction, ProjectInvestmentDecision, ProjectKeyConstraints, ProjectProductionCapacity, ProjectCompleteInvestment, ProjectDynamicInvestment ) from ..project_extensions.preparation import PreparationDetail from ..project_extensions.production import ProductionDetail from ..project_extensions.project_detail import ProjectDetailProject from ..project_extensions.generator_unit import ( GeneratorUnitProject, PostGeneratorUnits ) from ..project_extensions.lar import ( LarDetailSchema, LarChangeListSchema, LarChangeUpdateSchema, LarMainInfoUpdateSchema, LarResettlementSchema, LarInvestmentSchema, LarChangeDetailSchema ) from ..project_extensions.contract_change import ( ContractChangeResponse, PostContractChange ) from ..project_multi_type import ( PhotovoltaicExtension, OnShoreWindExtension, OffShoreWindExtension, HydropowerExtension, PumpedStorageExtension, GasTurbineExtension, ThermalPowerExtension ) class ProjectInfoResponse(BaseModel): """ 项目全部信息响应模型 """ project: ProjectResponseBase = Field(..., description="项目基本信息") project_detail: list[ProjectDetailProject] = Field(..., description="项目容量信息") generator_units: list[GeneratorUnitProject] = Field(..., description="发电单元信息列表(仅限水电、抽蓄、煤电、气电)") lar: Optional[LarDetailSchema] = Field(None, description="移民征地信息(仅限水电、抽蓄)") lar_change: list[LarChangeDetailSchema] = Field(default_factory=list, description="移民变更信息列表(仅限水电、抽蓄)") contract_changes: list[ContractChangeResponse] = Field(..., description="合同变更信息列表(仅限水电、抽蓄、煤电、气电)") # 扩展字段 photovoltaic_extension: PhotovoltaicExtension | None = Field(None, description="光伏项目扩展信息") onshore_wind_extension: OnShoreWindExtension | None = Field(None, description="陆风项目扩展信息") offshore_wind_extension: OffShoreWindExtension | None = Field(None, description="海风项目扩展信息") hydropower_extension: HydropowerExtension | None = Field(None, description="水电项目扩展信息") pumped_storage_extension: PumpedStorageExtension | None = Field(None, description="抽蓄项目扩展信息") gas_turbine_extension: GasTurbineExtension | None = Field(None, description="燃气轮机项目扩展信息") thermal_power_extension: ThermalPowerExtension | None = Field(None, description="火电项目扩展信息") # 投产节点 production_list: list[ProductionDetail] = Field(default_factory=list, description="投产节点列表") # 里程碑节点 preparation_list: list[PreparationDetail] = Field(default_factory=list, description="里程碑节点列表")