feat: asset catalog API, 태그 DB 기초, 마이그레이션 3건 및 도메인/테스트 갱신 (2026-05-19)
This commit is contained in:
@@ -13,6 +13,11 @@ from pydantic import BaseModel, Field
|
||||
# GET /v1/assets
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TagRefItem(BaseModel):
|
||||
tag_id: str
|
||||
archived: bool = False
|
||||
|
||||
|
||||
class AssetItem(BaseModel):
|
||||
asset_id: str
|
||||
symbol: str
|
||||
@@ -29,6 +34,7 @@ class AssetItem(BaseModel):
|
||||
price: float | None = None
|
||||
profit_buffer: float | None = None
|
||||
tags: list[str] | None = None
|
||||
tag_ids: list[TagRefItem] | None = None
|
||||
owner_user_id: str | None = None
|
||||
created_at: datetime | None = None
|
||||
last_trade_at: datetime | None = None
|
||||
@@ -92,3 +98,30 @@ class LedgerTradeResponse(BaseModel):
|
||||
executed_at: datetime
|
||||
recorded_at: datetime | None = None
|
||||
status: Literal["new", "duplicate"] = "new"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# POST/PATCH /v1/assets (admin catalog management — REQ-010)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class AssetCatalogCreateRequest(BaseModel):
|
||||
symbol: str = Field(..., min_length=1)
|
||||
markets: list[str] = Field(default_factory=list)
|
||||
display_name: str | None = None
|
||||
status: str = "active"
|
||||
|
||||
|
||||
class AssetCatalogUpdateRequest(BaseModel):
|
||||
markets: list[str] | None = None
|
||||
display_name: str | None = None
|
||||
status: str | None = None
|
||||
|
||||
|
||||
class AssetCatalogResponse(BaseModel):
|
||||
asset_id: str
|
||||
symbol: str
|
||||
markets: list[str]
|
||||
display_name: str | None = None
|
||||
status: str
|
||||
created_at: datetime | None = None
|
||||
updated_at: datetime | None = None
|
||||
|
||||
Reference in New Issue
Block a user