60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
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
|