Добавлены новые модели для BFF API, включая запросы и ответы для регистрации, обновления профиля, изменения пароля и статистики. Обновлены эндпоинты в main.py для использования новых моделей и улучшения структуры API. Удален устаревший файл models.py.
This commit is contained in:
171
bff_models.py
Normal file
171
bff_models.py
Normal file
@@ -0,0 +1,171 @@
|
||||
from pydantic import BaseModel, Field, EmailStr
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
import uuid
|
||||
from enum import Enum
|
||||
|
||||
|
||||
# BFF Models
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
|
||||
class AccountProfileUpdateRequest(BaseModel):
|
||||
firstName: str
|
||||
surname: str
|
||||
email: EmailStr
|
||||
phone: str
|
||||
|
||||
class AccountPasswordChangeRequest(BaseModel):
|
||||
currentPassword: str
|
||||
newPassword: str
|
||||
|
||||
class TransactionStatus(str, Enum):
|
||||
WAITING = 'waiting'
|
||||
PROCESS = 'process'
|
||||
DONE = 'done'
|
||||
REJECT = 'reject'
|
||||
ERROR = 'error'
|
||||
NEW = 'new'
|
||||
|
||||
class AgentTransactionResponse(BaseModel):
|
||||
amount: float
|
||||
status: TransactionStatus
|
||||
transaction_group: uuid.UUID
|
||||
create_dttm: datetime
|
||||
update_dttm: datetime
|
||||
agent_name: Optional[str] = None
|
||||
|
||||
class AutoApproveSettingsRequest(BaseModel):
|
||||
auto_approve: bool
|
||||
apply_to_current: Optional[bool] = False
|
||||
|
||||
class ApproveTransactionsRequest(BaseModel):
|
||||
transaction_ids: List[uuid.UUID]
|
||||
|
||||
# New Response Models for BFF APIs
|
||||
|
||||
class RegisterResponse(BaseModel):
|
||||
msg: str
|
||||
|
||||
class TgAuthResponse(BaseModel):
|
||||
msg: str
|
||||
tg_id: int
|
||||
|
||||
class DashboardCardsResponse(BaseModel):
|
||||
totalRevenue: float
|
||||
totalPayouts: float
|
||||
activeReferrals: int
|
||||
pendingPayouts: float
|
||||
totalSales: int
|
||||
|
||||
class DashboardChartTotalItem(BaseModel):
|
||||
date: str
|
||||
revenue: float
|
||||
sales: int
|
||||
|
||||
class DashboardChartTotalResponse(BaseModel):
|
||||
items: List[DashboardChartTotalItem]
|
||||
|
||||
class DashboardChartAgentItem(BaseModel):
|
||||
name: str
|
||||
count: int
|
||||
sum: float
|
||||
|
||||
class DashboardChartAgentResponse(BaseModel):
|
||||
items: List[DashboardChartAgentItem]
|
||||
|
||||
class StatAgentsItem(BaseModel):
|
||||
name: str
|
||||
refCount: int
|
||||
salesCount: int
|
||||
salesSum: float
|
||||
crediting: float
|
||||
|
||||
class StatAgentsResponse(BaseModel):
|
||||
items: List[StatAgentsItem]
|
||||
|
||||
class StatReferralsItem(BaseModel):
|
||||
ref: str
|
||||
agent: Optional[str] = None
|
||||
description: str
|
||||
salesSum: float
|
||||
salesCount: int
|
||||
|
||||
class StatReferralsResponse(BaseModel):
|
||||
items: List[StatReferralsItem]
|
||||
|
||||
class StatSalesItem(BaseModel):
|
||||
saleId: str
|
||||
cost: float
|
||||
crediting: float
|
||||
ref: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
|
||||
class StatSalesResponse(BaseModel):
|
||||
items: List[StatSalesItem]
|
||||
|
||||
class BillingCardsResponse(BaseModel):
|
||||
cost: float
|
||||
crediting: float
|
||||
pendingPayouts: float
|
||||
|
||||
class BillingChartStatItem(BaseModel):
|
||||
date: str
|
||||
status: str
|
||||
count: int
|
||||
|
||||
class BillingChartStatResponse(BaseModel):
|
||||
items: List[BillingChartStatItem]
|
||||
|
||||
class BillingChartPieItem(BaseModel):
|
||||
status: str
|
||||
count: int
|
||||
|
||||
class BillingChartPieResponse(BaseModel):
|
||||
items: List[BillingChartPieItem]
|
||||
|
||||
class BillingPayoutsTransactionsItem(BaseModel):
|
||||
id: uuid.UUID
|
||||
amount: float
|
||||
agent: Optional[str] = None
|
||||
status: TransactionStatus
|
||||
create_dttm: datetime
|
||||
update_dttm: datetime
|
||||
|
||||
class BillingPayoutsTransactionsResponse(BaseModel):
|
||||
items: List[BillingPayoutsTransactionsItem]
|
||||
|
||||
class AccountResponse(BaseModel):
|
||||
firstName: Optional[str] = None
|
||||
surname: Optional[str] = None
|
||||
|
||||
class CompanyProfileResponse(BaseModel):
|
||||
name: str
|
||||
key: str
|
||||
commission: float
|
||||
|
||||
class AccountProfileResponse(BaseModel):
|
||||
firstName: Optional[str] = None
|
||||
surname: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
create_dttm: datetime
|
||||
company: CompanyProfileResponse
|
||||
|
||||
class AccountProfileUpdateResponse(BaseModel):
|
||||
msg: str
|
||||
|
||||
class AccountPasswordChangeResponse(BaseModel):
|
||||
msg: str
|
||||
|
||||
class AutoApproveSettingsGetResponse(BaseModel):
|
||||
auto_approve_transactions: bool
|
||||
|
||||
class AutoApproveSettingsUpdateResponse(BaseModel):
|
||||
msg: str
|
||||
auto_approve_transactions: bool
|
||||
|
||||
class ApproveTransactionsResult(BaseModel):
|
||||
msg: str
|
||||
approved_count: int
|
||||
Reference in New Issue
Block a user