deep-risk/backend/app/schemas/bank.py
2025-12-14 20:08:27 +08:00

81 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
银行流水相关Pydantic模型
"""
from datetime import date, datetime
from typing import Optional, List
from pydantic import BaseModel, Field
class BankTransactionBase(BaseModel):
"""银行流水基础模型"""
account_no: str = Field(..., description="账号")
account_name: str = Field(..., description="账户名")
bank_name: str = Field(..., description="开户行")
transaction_date: date = Field(..., description="交易日期")
transaction_time: datetime = Field(..., description="交易时间")
transaction_type: str = Field(..., description="交易类型")
transaction_amount: float = Field(..., description="交易金额")
balance: float = Field(..., description="余额")
counterparty_account_no: Optional[str] = Field(None, description="对手方账号")
counterparty_account_name: Optional[str] = Field(None, description="对手方账户名")
counterparty_bank_name: Optional[str] = Field(None, description="对手方开户行")
voucher_no: Optional[str] = Field(None, description="凭证号")
transaction_purpose: Optional[str] = Field(None, description="交易用途")
is_cross_border: bool = Field(..., description="是否跨境")
currency: str = Field(..., description="币种")
amount_cny: float = Field(..., description="折算人民币金额")
exchange_rate: float = Field(..., description="汇率")
is_large_amount: bool = Field(..., description="是否大额交易(>20万")
is_suspicious: bool = Field(..., description="是否可疑交易")
suspicious_reason: Optional[str] = Field(None, description="可疑原因")
is_reconciled: bool = Field(..., description="是否已对账")
reconciled_time: Optional[datetime] = Field(None, description="对账时间")
class BankTransactionCreate(BankTransactionBase):
"""创建银行流水"""
pass
class BankTransactionUpdate(BaseModel):
"""更新银行流水"""
account_no: Optional[str] = None
account_name: Optional[str] = None
bank_name: Optional[str] = None
transaction_date: Optional[date] = None
transaction_time: Optional[datetime] = None
transaction_type: Optional[str] = None
transaction_amount: Optional[float] = None
balance: Optional[float] = None
counterparty_account_no: Optional[str] = None
counterparty_account_name: Optional[str] = None
counterparty_bank_name: Optional[str] = None
voucher_no: Optional[str] = None
transaction_purpose: Optional[str] = None
is_cross_border: Optional[bool] = None
currency: Optional[str] = None
amount_cny: Optional[float] = None
exchange_rate: Optional[float] = None
is_large_amount: Optional[bool] = None
is_suspicious: Optional[bool] = None
suspicious_reason: Optional[str] = None
is_reconciled: Optional[bool] = None
reconciled_time: Optional[datetime] = None
class BankTransactionResponse(BankTransactionBase):
"""银行流水响应模型"""
id: int
transaction_id: str
class Config:
from_attributes = True
class BankTransactionListResponse(BaseModel):
"""银行流水列表响应模型"""
records: List[BankTransactionResponse]
total: int
page: int
size: int