bug fixes: silent_mode/ cash register indempotence/ antispam for key_country/ ban improvements

This commit is contained in:
Vladless
2025-09-02 23:38:52 +03:00
parent cc54baa4ca
commit 9be986d627
15 changed files with 277 additions and 86 deletions
+5 -3
View File
@@ -163,7 +163,9 @@ async def get_tracking_source_with_stats(
type=source.type,
created_by=source.created_by,
created_at=source.created_at,
registrations=stats.get("registrations", 0),
trials=stats.get("trials", 0),
payments=stats.get("payments", 0),
registrations=(stats["registrations"] if stats else 0),
trials=(stats["trials"] if stats else 0),
payments=(stats["payments"] if stats else 0),
total_amount=(float(stats["total_amount"]) if stats else 0.0),
monthly=(stats["monthly"] if stats and "monthly" in stats else []),
)
+13
View File
@@ -94,6 +94,16 @@ class BlockedUserResponse(BaseModel):
from_attributes = True
class MonthlyStats(BaseModel):
month: str
registrations: int
trials: int
new_purchases_count: int
new_purchases_amount: float
repeat_purchases_count: int
repeat_purchases_amount: float
class TrackingSourceResponse(BaseModel):
id: int
name: str
@@ -105,6 +115,9 @@ class TrackingSourceResponse(BaseModel):
registrations: int = 0
trials: int = 0
payments: int = 0
total_amount: float = 0.0
monthly: list[MonthlyStats] = []
class Config:
from_attributes = True
+2 -1
View File
@@ -1,5 +1,4 @@
from datetime import datetime
from pydantic import BaseModel
@@ -12,6 +11,7 @@ class TariffBase(BaseModel):
device_limit: int | None = None
is_active: bool = True
subgroup_title: str | None = None
sort_order: int | None = None
class TariffResponse(TariffBase):
@@ -32,6 +32,7 @@ class TariffUpdate(BaseModel):
device_limit: int | None = None
is_active: bool | None = None
subgroup_title: str | None = None
sort_order: int | None = None
class Config:
from_attributes = True