""" 公告相关Schema """ from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class AnnouncementBase(BaseModel): title: str = Field(..., min_length=1, max_length=255) content: str = Field(..., min_length=1) type: str = Field(default="INFO") is_pinned: bool = Field(default=False) priority: int = Field(default=0, ge=0, le=100) class AnnouncementCreate(AnnouncementBase): starts_at: Optional[datetime] = None expires_at: Optional[datetime] = None class AnnouncementUpdate(AnnouncementBase): starts_at: Optional[datetime] = None expires_at: Optional[datetime] = None class AnnouncementResponse(AnnouncementBase): id: int starts_at: Optional[datetime] = None expires_at: Optional[datetime] = None created_at: datetime updated_at: datetime class Config: from_attributes = True