44 lines
2.6 KiB
Python
44 lines
2.6 KiB
Python
"""API 请求模型"""
|
||
from pydantic import BaseModel, Field
|
||
from typing import Optional
|
||
from datetime import datetime
|
||
|
||
class CollectionCreate(BaseModel):
|
||
"""创建藏品请求"""
|
||
name: str = Field(..., description="藏品名称", min_length=1, max_length=255)
|
||
category: Optional[str] = Field(None, description="品类(龙钞/蛇钞/马钞等)")
|
||
serial_number: Optional[str] = Field(None, description="号码(唯一标识)", max_length=100)
|
||
rarity: str = Field("通货", description="珍惜度(通货/标十/标百/狮子号)")
|
||
ownership_type: str = Field("自持", description="持仓类型(自持/代存)")
|
||
is_graded: bool = Field(False, description="是否评级")
|
||
grading_company: Optional[str] = Field(None, description="评级公司(PCGS/NGC/爱藏)")
|
||
grading_score: Optional[str] = Field(None, description="评级分数(如68/69/70)")
|
||
cost_price: Optional[float] = Field(None, description="成本价(元)")
|
||
current_price: Optional[float] = Field(None, description="当前市场价(元)")
|
||
status: str = Field("in_collection", description="状态(in_collection/sold/lost)")
|
||
remark: Optional[str] = Field(None, description="备注")
|
||
|
||
class CollectionUpdate(BaseModel):
|
||
"""更新藏品请求"""
|
||
name: Optional[str] = Field(None, description="藏品名称")
|
||
category: Optional[str] = Field(None, description="品类")
|
||
serial_number: Optional[str] = Field(None, description="号码")
|
||
rarity: Optional[str] = Field(None, description="珍惜度")
|
||
ownership_type: Optional[str] = Field(None, description="持仓类型")
|
||
is_graded: Optional[bool] = Field(None, description="是否评级")
|
||
grading_company: Optional[str] = Field(None, description="评级公司")
|
||
grading_score: Optional[str] = Field(None, description="评级分数")
|
||
cost_price: Optional[float] = Field(None, description="成本价")
|
||
current_price: Optional[float] = Field(None, description="当前市场价")
|
||
status: Optional[str] = Field(None, description="状态")
|
||
remark: Optional[str] = Field(None, description="备注")
|
||
|
||
class PriceQuery(BaseModel):
|
||
"""价格查询参数"""
|
||
collection_id: Optional[int] = Field(None, description="藏品ID")
|
||
source: Optional[str] = Field(None, description="数据来源(yichens/aicang/douyin)")
|
||
start_date: Optional[datetime] = Field(None, description="开始时间")
|
||
end_date: Optional[datetime] = Field(None, description="结束时间")
|
||
page: int = Field(1, ge=1, description="页码")
|
||
page_size: int = Field(20, ge=1, le=100, description="每页数量")
|