66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
from pydantic import BaseModel
|
||
from datetime import datetime
|
||
from typing import Optional
|
||
|
||
|
||
class ProjectBase(BaseModel):
|
||
"""项目基础模型"""
|
||
project_code: Optional[str] = None # 项目编号
|
||
name: str # 项目名称
|
||
project_type: Optional[str] = None # 工程类别
|
||
description: Optional[str] = None # 项目描述
|
||
department: str # 所属部门
|
||
contract_amount: Optional[float] = None # 合同金额(万元)
|
||
project_manager: Optional[str] = None # 项目负责人
|
||
client_company: Optional[str] = None # 建设单位
|
||
client_contact: Optional[str] = None # 建设单位联系人
|
||
contract_date: Optional[datetime] = None # 合同签订日期
|
||
budget: Optional[int] = None # 预算
|
||
start_date: Optional[datetime] = None # 开始日期
|
||
planned_end_date: Optional[datetime] = None # 计划结束日期
|
||
actual_end_date: Optional[datetime] = None # 实际结束日期
|
||
progress: Optional[float] = 0.0 # 累计进度(%)
|
||
actual_received_amount: Optional[float] = 0.0 # 实际收款金额(万元)
|
||
payment_completion_rate: Optional[float] = 0.0 # 回款完成率(%)
|
||
payment_terms: Optional[str] = None # 付款方式
|
||
status: Optional[str] = "pending" # 状态
|
||
|
||
|
||
class ProjectCreate(ProjectBase):
|
||
"""创建项目模型"""
|
||
pass
|
||
|
||
|
||
class ProjectUpdate(BaseModel):
|
||
"""更新项目模型"""
|
||
project_code: Optional[str] = None
|
||
name: Optional[str] = None
|
||
project_type: Optional[str] = None
|
||
description: Optional[str] = None
|
||
department: Optional[str] = None
|
||
contract_amount: Optional[float] = None
|
||
project_manager: Optional[str] = None
|
||
client_company: Optional[str] = None
|
||
client_contact: Optional[str] = None
|
||
contract_date: Optional[datetime] = None
|
||
budget: Optional[int] = None
|
||
start_date: Optional[datetime] = None
|
||
planned_end_date: Optional[datetime] = None
|
||
actual_end_date: Optional[datetime] = None
|
||
progress: Optional[float] = None
|
||
actual_received_amount: Optional[float] = None
|
||
payment_completion_rate: Optional[float] = None
|
||
payment_terms: Optional[str] = None
|
||
status: Optional[str] = None
|
||
|
||
|
||
class ProjectResponse(ProjectBase):
|
||
"""项目响应模型"""
|
||
id: int
|
||
created_by: int
|
||
created_at: datetime
|
||
updated_at: Optional[datetime] = None
|
||
|
||
class Config:
|
||
from_attributes = True
|