import uuid from datetime import date, datetime from decimal import Decimal from typing import Optional from pydantic import BaseModel, ConfigDict, Field class FinanceContractCreate(BaseModel): site_name: str contract_no: str signed_date: Optional[date] = None amount: Decimal = Field(gt=0) currency: str = "CNY" remark: Optional[str] = None class FinanceContractUpdate(BaseModel): site_name: Optional[str] = None contract_no: Optional[str] = None signed_date: Optional[date] = None amount: Optional[Decimal] = Field(default=None, gt=0) currency: Optional[str] = None remark: Optional[str] = None class FinanceContractRead(BaseModel): id: uuid.UUID study_id: uuid.UUID site_name: str contract_no: str signed_date: Optional[date] amount: Decimal currency: str remark: Optional[str] created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)