feat: initial commit and ignore qwen files
This commit is contained in:
85
backend/app/schemas/project.py
Normal file
85
backend/app/schemas/project.py
Normal file
@ -0,0 +1,85 @@
|
||||
"""项目相关 Schema"""
|
||||
from pydantic import BaseModel
|
||||
from datetime import date, datetime
|
||||
from app.models.production import ProjectStatus
|
||||
|
||||
|
||||
class ProjectBase(BaseModel):
|
||||
"""项目基础 Schema"""
|
||||
project_no: str
|
||||
name: str
|
||||
start_date: date | None = None
|
||||
end_date: date | None = None
|
||||
status: ProjectStatus = ProjectStatus.DRAFT
|
||||
|
||||
|
||||
class ProjectCreate(ProjectBase):
|
||||
"""创建项目"""
|
||||
pass
|
||||
|
||||
|
||||
class ProjectUpdate(BaseModel):
|
||||
"""更新项目"""
|
||||
name: str | None = None
|
||||
start_date: date | None = None
|
||||
end_date: date | None = None
|
||||
status: ProjectStatus | None = None
|
||||
|
||||
|
||||
class ProjectResponse(ProjectBase):
|
||||
"""项目响应"""
|
||||
id: int
|
||||
created_at: datetime
|
||||
updated_at: datetime | None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class ProjectStats(BaseModel):
|
||||
"""项目统计信息"""
|
||||
project_id: int
|
||||
project_no: str
|
||||
project_name: str
|
||||
status: ProjectStatus
|
||||
start_date: date | None
|
||||
end_date: date | None
|
||||
|
||||
# 进度相关
|
||||
total_work_orders: int
|
||||
completed_work_orders: int
|
||||
in_progress_work_orders: int
|
||||
pending_work_orders: int
|
||||
progress_percentage: float # 完成百分比
|
||||
|
||||
# 物料到位率(基于缺料审批)
|
||||
total_approvals: int
|
||||
pending_approvals: int
|
||||
approved_approvals: int
|
||||
rejected_approvals: int
|
||||
material_ready_rate: float # 物料到位率 (approved / total_approvals * 100)
|
||||
|
||||
# 延期预警
|
||||
is_overdue: bool # 当前日期超过 end_date 且状态未完成
|
||||
overdue_days: int | None # 延期天数(正数表示延期,负数表示提前)
|
||||
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class ProjectSummary(BaseModel):
|
||||
"""项目总览汇总"""
|
||||
total_projects: int
|
||||
active_projects: int
|
||||
completed_projects: int
|
||||
overdue_projects: int
|
||||
|
||||
# 全局统计
|
||||
total_work_orders: int
|
||||
completed_work_orders: int
|
||||
overall_progress: float # 全局进度
|
||||
|
||||
total_pending_approvals: int
|
||||
overall_material_ready_rate: float
|
||||
|
||||
# 项目列表
|
||||
projects: list[ProjectStats]
|
||||
Reference in New Issue
Block a user