from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict, Field class ChargeRequestCreate(BaseModel): requested_amount: int = Field(..., gt=0, le=10000, description="요청 크레딧 수량") message: Optional[str] = Field(None, max_length=500, description="요청 메시지") model_config = { "json_schema_extra": { "example": { "requested_amount": 10, "message": "크레딧 충전 요청합니다.", } } } class ChargeRequestResponse(BaseModel): id: int user_uuid: str requested_amount: int message: Optional[str] status: str admin_note: Optional[str] processed_at: Optional[datetime] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class ChargeRequestListResponse(BaseModel): items: list[ChargeRequestResponse] total: int page: int page_size: int class CreditTransactionResponse(BaseModel): id: int user_uuid: str amount: int balance_after: int type: str reason: Optional[str] related_request_id: Optional[int] created_at: datetime model_config = ConfigDict(from_attributes=True) class CreditTransactionListResponse(BaseModel): items: list[CreditTransactionResponse] total: int page: int page_size: int