import uuid from datetime import date, datetime from decimal import Decimal from typing import Optional from pydantic import BaseModel, ConfigDict, Field class FinanceSpecialCreate(BaseModel): site_name: str fee_type: str amount: Decimal = Field(gt=0) occur_date: Optional[date] = None staff_name: Optional[str] = None remark: Optional[str] = None class FinanceSpecialUpdate(BaseModel): site_name: Optional[str] = None fee_type: Optional[str] = None amount: Optional[Decimal] = Field(default=None, gt=0) occur_date: Optional[date] = None staff_name: Optional[str] = None remark: Optional[str] = None class FinanceSpecialRead(BaseModel): id: uuid.UUID study_id: uuid.UUID site_name: str fee_type: str amount: Decimal occur_date: Optional[date] staff_name: Optional[str] remark: Optional[str] created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)