"""Judgment standard library API contracts.""" from datetime import datetime from pydantic import Field from app.schemas.common import ApiSchema class StandardCategoryCount(ApiSchema): category: str count: int class StandardRuleSummary(ApiSchema): id: int category_lv1: str category_lv2: str | None = None category_lv3: str | None = None risk_point: str judge_standard: str regulation: str | None = None status: str updated_at: datetime class StandardRuleDetail(StandardRuleSummary): attachment: str | None = None class StandardRuleListData(ApiSchema): items: list[StandardRuleSummary] = Field(default_factory=list) total: int page: int page_size: int total_pages: int category_counts: list[StandardCategoryCount] = Field(default_factory=list) class StandardRuleCreate(ApiSchema): category_lv1: str = Field(min_length=1, max_length=20) category_lv2: str | None = Field(default=None, max_length=60) category_lv3: str | None = Field(default=None, max_length=60) risk_point: str = Field(min_length=1) judge_standard: str = Field(min_length=1) regulation: str | None = Field(default=None, max_length=300) attachment: str | None = Field(default=None, max_length=500) status: str = Field(default="启用", pattern="^(启用|停用)$") class StandardRuleUpdate(ApiSchema): category_lv1: str | None = Field(default=None, min_length=1, max_length=20) category_lv2: str | None = Field(default=None, max_length=60) category_lv3: str | None = Field(default=None, max_length=60) risk_point: str | None = Field(default=None, min_length=1) judge_standard: str | None = Field(default=None, min_length=1) regulation: str | None = Field(default=None, max_length=300) attachment: str | None = Field(default=None, max_length=500) status: str | None = Field(default=None, pattern="^(启用|停用)$")