Дефолтные технические решения - 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 - Первая версия.