feat: new tariffs web app and bot interactions

This commit is contained in:
3252a8
2026-04-30 13:48:32 +03:00
parent ce610b4804
commit 8a6b2704d4
13 changed files with 1409 additions and 47 deletions
+21
View File
@@ -262,6 +262,10 @@ class Settings(BaseSettings):
description="Comma-separated list of traffic packages priced in Stars, e.g. '5:500,20:1500'",
)
TARIFFS_CONFIG_PATH: str = Field(default="config/tariffs.json")
TARIFF_TRAFFIC_WARNING_LEVELS: str = Field(
default="85,90,95",
description="Comma-separated traffic usage warning levels for tariff traffic limits, e.g. '85,90,95'",
)
SUBSCRIPTION_NOTIFICATIONS_ENABLED: bool = Field(default=True)
SUBSCRIPTION_NOTIFY_ON_EXPIRE: bool = Field(default=True)
@@ -741,6 +745,23 @@ class Settings(BaseSettings):
return False
return bool(self.traffic_packages or self.stars_traffic_packages)
@computed_field
@property
def tariff_traffic_warning_levels(self) -> List[int]:
levels: List[int] = []
for part in (self.TARIFF_TRAFFIC_WARNING_LEVELS or "").split(","):
chunk = part.strip()
if not chunk:
continue
try:
level = int(float(chunk))
except ValueError:
logging.warning("Invalid TARIFF_TRAFFIC_WARNING_LEVELS entry skipped: %s", chunk)
continue
if 0 < level < 100 and level not in levels:
levels.append(level)
return sorted(levels) or [85, 90, 95]
@computed_field
@property
def tariffs_config(self) -> Optional[TariffsConfig]: