Перейти к содержанию

Дефолтные технические решения - Tradex Analytics

Источник истины для всех определений системы.

Эти решения принимаются автономно. Если Tradex захочет иное - меняется этот документ (один раз), и все карточки приводятся к новому стандарту.


1. Цветовая палитра

Корпоративный синий Tradex - основной. Все остальные цвета подбираем под него.

Назначение HEX Использование
Primary (Tradex Blue) #1E5DBF Заголовки дашбордов, главные KPI
Positive (Green) #16A34A Рост, положительные значения, success
Negative (Red) #DC2626 Падение, churn, suspicion, errors
Warning (Amber) #F59E0B Внимание, pending, неполные данные
Neutral (Gray-700) #374151 Текст, средние значения, баг references
Bg light #F9FAFB Фон дашбордов
Cohort heatmap min #FEE2E2 0-10% retention (красный пастель)
Cohort heatmap mid #FEF3C7 10-30% (жёлтый пастель)
Cohort heatmap max #BBF7D0 30%+ (зелёный пастель)

Карточки группы Spot - оттенки синего. Swap - оттенки фиолетового (#7C3AED). Deposits - оттенки бирюзового (#0891B2). AML/Risk - оттенки красно-оранжевого.

2. Типы визуализаций - выбор по типу метрики

Тип метрики Виз
Одно текущее число (MAU, Revenue) Scalar (большое число + small label) + sparkline-тренд
Тренд во времени Line chart, без точек, плавная кривая
Сравнение категорий Bar chart (горизонтальный, если >5 категорий)
Распределение долей Stacked bar (если по времени) или Pie (если на один момент). Pie - максимум 5 категорий, иначе bar
Воронка Funnel chart + явные процентные конверсии между ступенями
Retention Heatmap (cohort matrix)
Корреляция Scatter plot (редко)
Гео World map (страны раскрашены по value) + Table top-20 рядом
Audit-табличка Table с сортировкой, фильтром по строкам, экспортом CSV

Запрещены: 3D-диаграммы, шумные градиенты, donut вместо pie без причины.

3. Форматы чисел

Тип Формат Пример
Денежные суммы (USD) $1,234,567.89 $45,231.07
Денежные суммы маленькие (<$1) до 4 знаков $0.0023
Денежные суммы в BYN 1 234,56 BYN (с пробелом-разделителем) 12 345,67 BYN
Криптовалюты до 8 знаков 0.00342156 BTC
Количество (целые) 1,234,567 2,503
Проценты 12.5% (1 знак после запятой) 38.4%
Время в часах 1ч 23м 2ч 15м
Время в днях 1д 5ч 7д 12ч
Дата (короткая) DD.MM.YYYY 03.06.2026
Дата + время DD.MM.YYYY HH:MM 03.06.2026 09:30
Месяц-год Янв 2026 (рус) Май 2026

4. Периоды и фильтры

Дефолт периода

При первом открытии дашборда: последние 30 дней.

Пресеты периодов

На каждом дашборде доступны: - 7 дней - 30 дней (дефолт) - Текущий квартал - Год до даты (YTD) - Кастомный диапазон

Конвенции дат

  • Все timestamps в БД хранятся в UTC.
  • При группировке по месяцам/неделям/дням - конвертация в Europe/Minsk (UTC+3).
  • Начало недели - понедельник (для weekly digests).
  • Начало финансового года = 1 января (компания не использует фискальные кварталы).

5. Cross-filters

Все дашборды связаны фильтром «период». При смене периода на одном дашборде - применяется ко всем картам, ссылающимся на тот же диапазон дат.

Дополнительные cross-filters, где применимо: - Канал привлечения (channel) - на Growth & Funnel, Retention, Revenue, LTV - Value-tier (tier_1..tier_5) - на Revenue, LTV, Spot, Swap - Lifecycle segment (Not_Verified..SuperTrader..Sleeping) - на User Activity, Retention - Тип продукта (Spot / Swap / Deposit) - на Revenue, Spot, Swap

Фильтры в UI Metabase - выпадающий список + поиск.

6. Дефолтная сортировка

  • Top-таблицы (top юзеров, top пар) - по убыванию value
  • Воронки - по порядку этапов
  • Когорты - по дате регистрации (старые сверху)
  • Channels / Categories - по убыванию count

7. Названия и язык интерфейса

  • Дашборды и карточки - русский, без эмодзи
  • Колонки таблиц - русский, с обычными словами без аббревиатур (Зарегистрировано, не Регистр.)
  • Подписи к графикам - короткие, до 30 символов

Список названий дашбордов (фиксируем): 1. Главные KPI (Executive) 2. Воронка привлечения и активации (Growth & Funnel) 3. Поведение пользователей (User Activity) 4. Удержание и когорты (Retention & Cohorts) 5. Доход и юнит-экономика (Revenue) 6. Спотовая торговля (Spot Trading) 7. Мгновенный обмен (Instant Swap) ⭐ 8. Депозиты и выводы (Deposits & Withdrawals) 9. AML и комплаенс (AML / Risk) 10. LTV и когорты (Module B - отдельный)

8. Empty states и нулевые значения

Если за выбранный период нет данных: - В scalar: показывать 0 или (не null) - В графиках: пустое поле + текст «Нет данных за выбранный период» - В таблицах: текст «Записей не найдено»

Если расчёт даёт null (например, делим на 0): - Возвращаем , не NaN или Infinity - В Metabase Model это NULLIF() в знаменателе

9. Скорость отклика

Целевое время отклика - визуализации загружаются за менее 10 секунд.

Митигация: - Тяжёлые cohort-запросы → materialized view в нашей Postgres (refresh 04:00 cron) - Metabase кэширование - дефолт 30 минут (правим на дашбордах требующих свежести → 5 мин) - Индексы на нашей локальной БД (где будут materialized views) - Раунд оптимизации перед демо - обязательный шаг

10. Доступы

Роли в Metabase

Роль Доступ Кому
Admin Все коллекции, настройки Дмитрий (исполнитель)
Tradex-Editor TRADEX.OFFICIAL (read/write), TRADEX.WORK (read/write) Внутренний аналитик Tradex, CTO
Tradex-Viewer TRADEX.OFFICIAL (read only) BA, CVO, CEO, COMPL
Sandbox Только своя личная коллекция (опционально для других пользователей)

Аутентификация - login/password (email-based). При retainer обсуждается SSO (Google Workspace? Telegram OAuth?).

Доступ к Telegram-боту (Module A)

По white-list username + user_id (паттерн из tradex-report-generator): - Подтверждённые получатели на старте: CTO, BA, CVO - Расширение - через .env + restart

11. Backup и retention данных

  • Metabase metadata (наши настройки/дашборды) → daily backup в /srv/tradex-analytics/backups/ + еженедельный rsync на отдельный сервер.
  • Локальная Postgres (materialized views) → можно не бэкапить, восстанавливается из source (Tradex Replica).
  • SQLite бота (история отправок) → daily backup туда же.

Retention бэкапов - 90 дней (cron-чистка старых).

12. Логирование и аудит

  • Metabase audit log включён (стандартная фича) - кто, когда, какие карточки смотрел/менял.
  • Logs - в Docker logs + опционально в файл logs/metabase.log.
  • Уведомления о падениях → Telegram-чат алертов ALERT_CHAT_ID.

13. Версионирование дашбордов и моделей

  • Все Metabase carttochki и дашборды снапшотятся раз в день (скрипт snapshot_metabase.py) в git.
  • SQL-модели в sql/ под git с момента написания.
  • Изменения дашбордов - через PR на github (или git+manual review до настройки CI).

14. Обновление данных

Live (на каждый запрос)

  • Канонический B2C-слой
  • Воронка (M-020..M-024)
  • Текущие KPI (M-001..M-007)

Кэшируемые (Metabase cache 30 минут)

  • Большая часть дашбордов

Materialized (daily 04:00 cron)

  • Cohort retention matrix (M-050)
  • Cohort LTV (M-070..M-073)
  • Geo performance (M-052)

15. Метрики, которые сразу заведомо не реализуемы

Из аудита (COVERAGE-VS-REQUIREMENTS-2026-05-20.md §«Чего нет в БД»):

  • Liquidity quality (спред, глубина стакана, fill rate) - требует order-book snapshots, которых нет.
  • CAC по каналам - нет затрат маркетинга в БД, нужна интеграция с Я.Директ/Google Ads (extension).
  • Время обмена / Slippage - неясно, фиксируется ли HERMES, вопрос CTO.

В дашбордах оставляем placeholder-карточки с подписью «доступно в расширении».

Changelog

  • 2026-06-03 - Первая версия.