from app.core.base_schema import CommonSchema """选育结果 —— Pydantic 校验/序列化模型。""" from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class SelectionResultBaseSchema(BaseModel): model_config = ConfigDict(from_attributes=True) combination_id: int = Field(..., description="杂交组合") tree_id: int = Field(..., description="单株") selection_year: int = Field(default=None, description="入选年份") is_selected: str = Field(default=None, description="选育结论") reason: str = Field(default=None, description="入选理由") remark: str = Field(default=None, description="备注") class SelectionResultCreateSchema(SelectionResultBaseSchema): pass class SelectionResultUpdateSchema(SelectionResultBaseSchema): combination_id: int | None = Field(default=None, description="杂交组合") tree_id: int | None = Field(default=None, description="单株") selection_year: int | None = Field(default=None, description="入选年份") is_selected: str | None = Field(default=None, description="选育结论") reason: str | None = Field(default=None, description="入选理由") remark: str | None = Field(default=None, description="备注") class SelectionResultOutSchema(SelectionResultBaseSchema): id: int uuid: str combination_name: str | None = None # 由 Service 层联表填充 tree_name: str | None = None # 由 Service 层联表填充 selection_year: int | None = None is_selected: str | None = None reason: str | None = None 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 SelectionResultQueryParam(BaseModel): combination_id: int | None = Field(default=None, description="杂交组合") tree_id: int | None = Field(default=None, description="单株") selection_year: int | None = Field(default=None, description="入选年份") is_selected: str | None = Field(default=None, description="选育结论") model_config = ConfigDict( extra="ignore", json_schema_extra={ "combination_id": ("eq", "{param}"), "tree_id": ("eq", "{param}"), "selection_year": ("eq", "{param}"), "is_selected": ("eq", "{param}"), }, )