from pydantic import BaseModel, Field
from typing import List, Optional, Literal
from ..common.validators import DateStr


class PumpedStorageExtension(BaseModel):
    """
    抽蓄项目特定字段
    """
    upper_dam_type: Optional[str] = Field(None, description="上水库坝型")
    upper_storage_capacity: Optional[float] = Field(None, description="上库库容(万m³)")
    lower_dam_type: Optional[str] = Field(None, description="下水库坝型")
    lower_storage_capacity: Optional[float] = Field(None, description="下库库容(万m³)")
    rated_head: Optional[float] = Field(None, description="额定水头")
    distance_to_head_ratio: Optional[float] = Field(None, description="距高比")
    continuous_full_load_hours: Optional[float] = Field(None, description="连续满发小时数")
    kwh_static_cost: Optional[float] = Field(None, description="单位千瓦静态投资")
    precon_start_date: Optional[str] = Field(None, description="筹建准备期起始时间")
    precon_end_date: Optional[str] = Field(None, description="筹建准备期终止时间")
    maincon_start_date: Optional[str] = Field(None, description="主体施工期起始时间")
    maincon_end_date: Optional[str] = Field(None, description="主体施⼯期终止时间")
    comm_start_date: Optional[str] = Field(None, description="完建期开始起始时间")
    comm_end_date: Optional[str] = Field(None, description="完建期终止时间")

    implementation_estimate:Optional[float] = Field(None, description="执行概算")
    static_total_investment: Optional[float] = Field(None, description="静态总投资")
    completed_investment: Optional[float] = Field(None, description="完成投资")
    total_contract_quantity: Optional[float] = Field(None, description="总合同数量")
    completed_settlement_quantity: Optional[float] = Field(None, description="完成结算数量")
