53 lines
2.9 KiB
Python
53 lines
2.9 KiB
Python
from app.core.base_schema import CommonSchema
|
||||
|
|
"""花粉档案 —— Pydantic 校验/序列化模型。"""
|
|||
|
|
from datetime import date, datetime
|
|||
|
|
|
|||
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PollenBaseSchema(BaseModel):
|
|||
|
|
model_config = ConfigDict(from_attributes=True)
|
|||
|
|
|
|||
|
|
lot_code: str = Field(..., description="花粉批次号(如 PL-2026-0001)")
|
|||
|
|
male_tree_id: int | None = Field(default=None, description="采集父本树(混合/外地采集可空)")
|
|||
|
|
source_type: str = Field(default="tree", description="来源类型 tree/mixed/external")
|
|||
|
|
source_desc: str | None = Field(default=None, description="来源说明(混合配比/外地品种)")
|
|||
|
|
collect_date: date | None = Field(default=None, description="花粉采集日期")
|
|||
|
|
collect_method: str | None = Field(default=None, description="采集方式(采花取粉/振动收集…)")
|
|||
|
|
quantity: str | None = Field(default=None, description="采集量(如 50g / 花药数)")
|
|||
|
|
storage_method: str = Field(default="fridge", description="贮藏方式 fridge/minus20/minus80/liquid_n2")
|
|||
|
|
viability_method: str | None = Field(default=None, description="活力测定方法 ttc/germination")
|
|||
|
|
viability_pct: float | None = Field(default=None, description="花粉活力 %")
|
|||
|
|
viability_test_date: date | None = Field(default=None, description="活力测定日期")
|
|||
|
|
expiry_date: date | None = Field(default=None, description="有效期/失效日期(授粉窗口上界)")
|
|||
|
|
remark: str | None = Field(default=None, description="备注")
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PollenCreateSchema(PollenBaseSchema):
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PollenUpdateSchema(PollenBaseSchema):
|
|||
|
|
lot_code: str | None = Field(default=None, description="花粉批次号")
|
|||
|
|
male_tree_id: int | None = Field(default=None, description="采集父本树")
|
|||
|
|
source_type: str | None = Field(default=None, description="来源类型 tree/mixed/external")
|
|||
|
|
storage_method: str | None = Field(default=None, description="贮藏方式 fridge/minus20/minus80/liquid_n2")
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PollenOutSchema(PollenBaseSchema):
|
|||
|
|
id: int
|
|||
|
|
uuid: str
|
|||
|
|
male_tree_no: str | None = None # 由 Service 层联表填充
|
|||
|
|
created_time: datetime | None = None
|
|||
|
|
updated_time: datetime | None = None
|
|||
|
|
created_by: CommonSchema | None = None
|
|||
|
|
updated_by: CommonSchema | None = None
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PollenQueryParam(BaseModel):
|
|||
|
|
lot_code: str | None = Field(default=None, description="花粉批次号", json_schema_extra={"q": "like"})
|
|||
|
|
male_tree_id: int | None = Field(default=None, description="采集父本树", json_schema_extra={"q": "eq"})
|
|||
|
|
source_type: str | None = Field(default=None, description="来源类型", json_schema_extra={"q": "eq"})
|
|||
|
|
storage_method: str | None = Field(default=None, description="贮藏方式", json_schema_extra={"q": "eq"})
|
|||
|
|
viability_method: str | None = Field(default=None, description="活力测定方法", json_schema_extra={"q": "eq"})
|