"""admin 钱包(金币/现金流水 + 提现单)schemas。""" from __future__ import annotations from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class CoinTxnOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int user_id: int amount: int balance_after: int biz_type: str ref_id: str | None = None remark: str | None = None created_at: datetime class CashTxnOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int user_id: int amount_cents: int balance_after_cents: int biz_type: str ref_id: str | None = None remark: str | None = None created_at: datetime class WithdrawOrderOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int user_id: int out_bill_no: str amount_cents: int user_name: str | None = None # 提现实名(审核核对 + 打款用) status: str wechat_state: str | None = None transfer_bill_no: str | None = None fail_reason: str | None = None created_at: datetime updated_at: datetime class ReconcileResult(BaseModel): checked: int resolved: int class WithdrawRejectRequest(BaseModel): reason: str = Field( ..., min_length=1, max_length=200, description="拒绝理由(写入 fail_reason,用户可见)" )