Files
xsl_node/backend/app/schemas/project.py
T
2026-01-27 17:30:17 +08:00

66 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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