Files
2026-09-12 20:59:10 +08:00

31 lines
856 B
Python

"""赎回相关 DTO。"""
from decimal import Decimal
from pydantic import BaseModel, Field, field_serializer
from schemas.holdings import HoldingResp
class RedeemReq(BaseModel):
"""赎回入参。shares 为正数(份额),按净值折算入账金额。"""
product_id: int
shares: Decimal = Field(gt=0)
class RedeemResp(BaseModel):
"""赎回结果:order_no + status(已确认 / 风控挂起)。
已确认时返回最新余额 + 该产品持仓;风控挂起时账户/持仓不变,仅返回预警关联。
"""
order_no: str
status: str
balance: Decimal | None = None
holding: HoldingResp | None = None
alert_id: int | None = None
@field_serializer("balance")
def _fmt_balance(self, value: Decimal | None) -> str | None:
return f"{value:.2f}" if value is not None else None