Files
zqq61 4f53889a8e feat: Airwallex 发卡管理后台完整实现
- 后端: FastAPI + SQLAlchemy + SQLite, JWT认证, 代理支持的AirwallexClient
- 前端: React 18 + Vite + Ant Design 5, 中文界面
- 功能: 卡片管理, 持卡人管理, 交易记录, API令牌, 系统设置, 审计日志
- 第三方API: X-API-Key认证, 权限控制
- Docker部署: docker-compose编排前后端
2026-03-15 23:05:08 +08:00

52 lines
2.3 KiB
Python

"""
Models for the Airwallex account API.
"""
from typing import Optional, List, Dict, Any
from datetime import datetime
from pydantic import Field
from .base import AirwallexModel
class AccountBalanceAmount(AirwallexModel):
"""Model for account balance amount."""
currency: str = Field(..., description="Currency code (ISO 4217)")
value: float = Field(..., description="Balance amount value")
class AccountBalance(AirwallexModel):
"""Model for account balance."""
available_amount: AccountBalanceAmount = Field(..., description="Available account balance")
pending_amount: Optional[AccountBalanceAmount] = Field(None, description="Pending account balance")
class Account(AirwallexModel):
"""Model for an Airwallex account."""
resource_name: str = "accounts"
id: str = Field(..., description="Unique account ID")
account_name: str = Field(..., description="Account name")
account_type: str = Field(..., description="Account type")
account_currency: str = Field(..., description="Account currency (ISO 4217)")
status: str = Field(..., description="Account status")
swift_code: Optional[str] = Field(None, description="SWIFT/BIC code")
iban: Optional[str] = Field(None, description="IBAN (International Bank Account Number)")
routing_number: Optional[str] = Field(None, description="Routing number")
account_number: Optional[str] = Field(None, description="Account number")
bsb: Optional[str] = Field(None, description="BSB (Bank State Branch code) for AU accounts")
sort_code: Optional[str] = Field(None, description="Sort code for UK accounts")
created_at: datetime = Field(..., description="Account creation timestamp")
updated_at: Optional[datetime] = Field(None, description="Account last update timestamp")
balance: Optional[AccountBalance] = Field(None, description="Account balance")
class AccountCreateRequest(AirwallexModel):
"""Model for account creation request."""
account_name: str = Field(..., description="Name for the account")
account_currency: str = Field(..., description="Currency code (ISO 4217)")
class AccountUpdateRequest(AirwallexModel):
"""Model for account update request."""
account_name: Optional[str] = Field(None, description="New name for the account")
status: Optional[str] = Field(None, description="New status for the account")