Files
2026-07-04 00:17:11 +08:00

78 lines
1.5 KiB
Python

from datetime import date, datetime
from pydantic import BaseModel
from typing import Optional
# --- Stock ---
class StockItem(BaseModel):
code: str
name: str
class KlineItem(BaseModel):
date: str
open: float
close: float
high: float
low: float
volume: float
class RealtimeQuote(BaseModel):
code: str
name: str
price: float
change: float # 涨跌额
change_pct: float # 涨跌幅 %
high: float
low: float
open: float
prev_close: float
volume: float
amount: float
# --- Collection ---
class StockInput(BaseModel):
code: str
name: str
added_date: str # YYYY-MM-DD
class CollectionCreate(BaseModel):
name: str
stocks: list[StockInput] = []
class CollectionUpdate(BaseModel):
name: Optional[str] = None
class CollectionStockOut(BaseModel):
model_config = {"from_attributes": True}
id: int
stock_code: str
stock_name: str
added_date: date
class CollectionOut(BaseModel):
model_config = {"from_attributes": True}
id: int
name: str
short_code: Optional[str]
created_at: datetime
stocks: list[CollectionStockOut]
class CollectionListItem(BaseModel):
id: int
name: str
stock_count: int
short_code: Optional[str]
created_at: datetime
# --- Share ---
class ShareResponse(BaseModel):
short_code: str
url: str
class CollectionShareOut(BaseModel):
collection: CollectionOut
stocks_data: dict # code -> {kline: [...], realtime: {...}}