from datetime import date, datetime from pydantic import BaseModel, ConfigDict from pydantic.alias_generators import to_camel class UsageFifoCandidateModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True) pallet_id: int pallet_code: str batch_no: str remaining_packages: int site_arrived_at: datetime class UsageFifoRecommendationModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True) recommended: UsageFifoCandidateModel | None = None unknown_arrival_count: int = 0 requires_skip_reason: bool = False message: str class UsageFifoQueueItemModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True) pallet_id: int pallet_code: str batch_no: str remaining_packages: int site_arrived_at: datetime expiry_date: date | None = None class UsageFifoStrainQueueModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True) strain_id: int strain_code: str | None = None strain_name: str | None = None pallet_count: int = 0 unknown_arrival_count: int = 0 pallets: list[UsageFifoQueueItemModel] = [] class UsageFifoQueueModel(BaseModel): """现场待使用托盘按菌种分组,组内与先到先用建议同序。""" model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True) site_id: int strains: list[UsageFifoStrainQueueModel] = []