from app.core.base_schema import CommonSchema """育苗管理 —— Pydantic 校验/序列化模型。""" from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class SeedlingBaseSchema(BaseModel): model_config = ConfigDict(from_attributes=True) combination_id: int = Field(..., description="杂交组合") treatment_id: int | None = Field(default=None, description="来源种子处理") seed_lot_id: int | None = Field(default=None, description="来源种子批(选择强度链)") batch_no: str | None = Field(default=None, description="育苗批次号") sowing_date: str | None = Field(default=None, description="播种日期") tray_no: str | None = Field(default=None, description="穴盘号") nursery: str | None = Field(default=None, description="苗圃") seedling_count: int | None = Field(default=None, description="出苗数") emergence_date: str | None = Field(default=None, description="出苗日期") strong_seedling_date: str | None = Field(default=None, description="壮苗日期") strong_seedling_count: int | None = Field(default=None, description="壮苗数") stage: str | None = Field(default=None, description="当前阶段:1播种/2出苗/3壮苗") bre_personnel_id: int | None = Field(default=None, description="育苗人") remark: str | None = Field(default=None, description="备注") class SeedlingCreateSchema(SeedlingBaseSchema): pass class SeedlingUpdateSchema(SeedlingBaseSchema): combination_id: int | None = Field(default=None, description="杂交组合") treatment_id: int | None = Field(default=None, description="来源种子处理") seed_lot_id: int | None = Field(default=None, description="来源种子批(选择强度链)") batch_no: str | None = Field(default=None, description="育苗批次号") sowing_date: str | None = Field(default=None, description="播种日期") tray_no: str | None = Field(default=None, description="穴盘号") nursery: str | None = Field(default=None, description="苗圃") seedling_count: int | None = Field(default=None, description="出苗数") emergence_date: str | None = Field(default=None, description="出苗日期") strong_seedling_date: str | None = Field(default=None, description="壮苗日期") strong_seedling_count: int | None = Field(default=None, description="壮苗数") stage: str | None = Field(default=None, description="当前阶段:1播种/2出苗/3壮苗") bre_personnel_id: int | None = Field(default=None, description="育苗人") remark: str | None = Field(default=None, description="备注") class SeedlingOutSchema(SeedlingBaseSchema): id: int uuid: str combination_name: str | None = None # 由 Service 层联表填充 treatment_id: int | None = None treatment_batch_no: str | None = None # 由 Service 层联表填充(来源处理记录无独立批次号,展示处理人/方式) batch_no: str | None = None sowing_date: str | None = None tray_no: str | None = None nursery: str | None = None seedling_count: int | None = None emergence_date: str | None = None strong_seedling_date: str | None = None strong_seedling_count: int | None = None stage: str | None = None seed_lot_id: int | None = None lot_code: str | None = None # 由 Service 层联表填充(来源种子批号) bre_personnel_name: str | None = None # 由 Service 层联表填充 remark: str | None = None created_time: datetime | None = None updated_time: datetime | None = None created_by: CommonSchema | None = None updated_by: CommonSchema | None = None class SeedlingQueryParam(BaseModel): combination_id: int | None = Field(default=None, description="杂交组合", json_schema_extra={"q": "eq"}) treatment_id: int | None = Field(default=None, description="来源种子处理", json_schema_extra={"q": "eq"}) seed_lot_id: int | None = Field(default=None, description="来源种子批", json_schema_extra={"q": "eq"}) batch_no: str | None = Field(default=None, description="育苗批次号", json_schema_extra={"q": "like"}) tray_no: str | None = Field(default=None, description="穴盘号", json_schema_extra={"q": "like"}) nursery: str | None = Field(default=None, description="苗圃", json_schema_extra={"q": "like"}) bre_personnel_id: int | None = Field(default=None, description="育苗人", json_schema_extra={"q": "eq"})