feat: enhance sales stats with device stats, per-tariff charts, and dual-series trials

- Add DualAreaChart component for two-series visualization (registrations vs trials)
- Add MultiSeriesAreaChart component for N-series tariff breakdown with dynamic pivoting
- AddonsTab: add device purchases and device revenue stat cards
- SalesTab: add per-tariff daily sales chart using MultiSeriesAreaChart
- TrialsTab: replace single-series area chart with dual-series registrations + trials chart
- Update TypeScript interfaces to match backend schema changes
- Add i18n keys for all new UI elements across en, ru, zh, fa locales
This commit is contained in:
Fringg
2026-03-02 21:42:25 +03:00
parent 14e5f436ce
commit 4622b4b200
11 changed files with 391 additions and 18 deletions

View File

@@ -29,11 +29,13 @@ export interface ProviderBreakdownItem {
export interface DailyTrialItem {
date: string;
count: number;
registrations: number;
trials: number;
}
export interface TrialsStats {
total_trials: number;
total_registrations: number;
conversion_rate: number;
avg_trial_duration_days: number;
by_provider: ProviderBreakdownItem[];
@@ -59,6 +61,12 @@ export interface DailySalesItem {
revenue_kopeks: number;
}
export interface DailyTariffSalesItem {
date: string;
tariff_name: string;
count: number;
}
export interface SalesStats {
total_sales: number;
total_revenue_kopeks: number;
@@ -67,6 +75,7 @@ export interface SalesStats {
by_tariff: SalesByTariffItem[];
by_period: SalesByPeriodItem[];
daily: DailySalesItem[];
daily_by_tariff: DailyTariffSalesItem[];
}
// ============ Renewals ============
@@ -114,6 +123,8 @@ export interface AddonsStats {
total_purchases: number;
total_gb_purchased: number;
addon_revenue_kopeks: number;
device_purchases: number;
device_revenue_kopeks: number;
by_package: AddonByPackageItem[];
daily: DailyAddonItem[];
}