from pydantic import BaseModel from typing import Optional from datetime import datetime class PlanCreate(BaseModel): plan_no: str plan_date: datetime cold_coil_no: Optional[str] = None hot_coil_no: Optional[str] = None steel_grade: Optional[str] = None incoming_thickness: Optional[float] = None product_thickness: Optional[float] = None deviation_upper: Optional[float] = None deviation_lower: Optional[float] = None incoming_width: Optional[float] = None product_width: Optional[float] = None packaging_req: Optional[str] = None trim_req: Optional[str] = None rolling_mode: Optional[str] = None coil_diameter: Optional[float] = None split_count: Optional[int] = 1 next_process: Optional[str] = None status: Optional[str] = "ready" remark: Optional[str] = None class PlanUpdate(BaseModel): plan_date: Optional[datetime] = None cold_coil_no: Optional[str] = None hot_coil_no: Optional[str] = None steel_grade: Optional[str] = None incoming_thickness: Optional[float] = None product_thickness: Optional[float] = None deviation_upper: Optional[float] = None deviation_lower: Optional[float] = None incoming_width: Optional[float] = None product_width: Optional[float] = None packaging_req: Optional[str] = None trim_req: Optional[str] = None rolling_mode: Optional[str] = None coil_diameter: Optional[float] = None split_count: Optional[int] = None next_process: Optional[str] = None status: Optional[str] = None remark: Optional[str] = None class PlanOut(BaseModel): id: int plan_no: str plan_date: datetime status: Optional[str] = None cold_coil_no: Optional[str] = None hot_coil_no: Optional[str] = None steel_grade: Optional[str] = None incoming_thickness: Optional[float] = None product_thickness: Optional[float] = None deviation_upper: Optional[float] = None deviation_lower: Optional[float] = None incoming_width: Optional[float] = None product_width: Optional[float] = None packaging_req: Optional[str] = None trim_req: Optional[str] = None rolling_mode: Optional[str] = None coil_diameter: Optional[float] = None split_count: Optional[int] = 1 next_process: Optional[str] = None remark: Optional[str] = None created_by: Optional[str] = None created_at: datetime class Config: from_attributes = True