from app.core.base_schema import CommonSchema """单株评价 —— Pydantic 校验/序列化模型。""" from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class TreeEvaluationBaseSchema(BaseModel): model_config = ConfigDict(from_attributes=True) combination_id: int = Field(..., description="杂交组合") tree_id: int = Field(..., description="单株") evaluate_year: int = Field(default=None, description="评价年份") evaluate_date: str = Field(default=None, description="调查时间") bre_personnel_id: int = Field(default=None, description="评价人") overall_score: float = Field(default=None, description="综合评分") remark: str = Field(default=None, description="备注") class TreeEvaluationCreateSchema(TreeEvaluationBaseSchema): pass class TreeEvaluationUpdateSchema(TreeEvaluationBaseSchema): combination_id: int | None = Field(default=None, description="杂交组合") tree_id: int | None = Field(default=None, description="单株") evaluate_year: int | None = Field(default=None, description="评价年份") evaluate_date: str | None = Field(default=None, description="调查时间") bre_personnel_id: int | None = Field(default=None, description="评价人") overall_score: float | None = Field(default=None, description="综合评分") remark: str | None = Field(default=None, description="备注") class TreeEvaluationOutSchema(TreeEvaluationBaseSchema): id: int uuid: str combination_name: str | None = None # 由 Service 层联表填充 tree_name: str | None = None # 由 Service 层联表填充 evaluate_year: int | None = None evaluate_date: str | None = None bre_personnel_name: str | None = None # 由 Service 层联表填充 overall_score: float | 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 TreeEvaluationQueryParam(BaseModel): combination_id: int | None = Field(default=None, description="杂交组合") tree_id: int | None = Field(default=None, description="单株") evaluate_year: int | None = Field(default=None, description="评价年份") bre_personnel_id: int | None = Field(default=None, description="评价人") model_config = ConfigDict( extra="ignore", json_schema_extra={ "combination_id": ("eq", "{param}"), "tree_id": ("eq", "{param}"), "evaluate_year": ("eq", "{param}"), "bre_personnel_id": ("eq", "{param}"), }, )