feat(sales-stats): вкладка «Оплаты» — success-rate и неудачные покупки

Новая вкладка в статистике продаж:
- success-rate платежей (оплачено/создано) — общий + по каждому шлюзу с
  цветными барами (зелёный ≥90%, жёлтый ≥70%, красный ниже);
- кол-во попыток оплат;
- «Неудачные покупки» — внутренние откаты при ошибке покупки (сигнал
  надёжности, не возвраты).
Данные из нового эндпоинта /payment-health. Шлюзы без активности не
показываются. Карточки 1/3 (без сирот), адаптив. 4 локали.
This commit is contained in:
c0mrade
2026-06-02 18:46:42 +03:00
parent ec23618a56
commit 436d9f860c
8 changed files with 172 additions and 5 deletions

View File

@@ -22,13 +22,14 @@ import { StatCard } from '../components/stats';
import {
AddonsTab,
DepositsTab,
PaymentHealthTab,
PeriodSelector,
RenewalsTab,
SalesTab,
TrialsTab,
} from '../components/sales-stats';
type TabId = 'trials' | 'sales' | 'renewals' | 'addons' | 'deposits';
type TabId = 'trials' | 'sales' | 'renewals' | 'addons' | 'deposits' | 'payment';
type Delta = { percent: number; trend: 'up' | 'down' | 'stable' };
@@ -124,6 +125,7 @@ export default function AdminSalesStats() {
{ id: 'renewals', label: t('admin.salesStats.tabs.renewals') },
{ id: 'addons', label: t('admin.salesStats.tabs.addons') },
{ id: 'deposits', label: t('admin.salesStats.tabs.deposits') },
{ id: 'payment', label: t('admin.salesStats.tabs.payment') },
];
return (
@@ -258,6 +260,7 @@ export default function AdminSalesStats() {
{activeTab === 'renewals' && <RenewalsTab params={params} />}
{activeTab === 'addons' && <AddonsTab params={params} />}
{activeTab === 'deposits' && <DepositsTab params={params} />}
{activeTab === 'payment' && <PaymentHealthTab params={params} />}
</div>
)}
</div>