feat(superset): подача дашборда «Бизнес-сюжеты» #247

Merged
ddmitry merged 1 commits from 200-superset-dashboard-polish into main 2026-09-08 12:29:00 +03:00
Owner

Подача стендового дашборда по резолюции грилинга из #200.

Что на экране

Четыре строки: ряд крупных чисел (выручка, заказы, средний чек, посетители);
выручка по дням и категориям рядом с кольцом долей; сводная сверки; посетители
и известные пользователи рядом с долей известных. Слева — фильтр «Период».

Решения исполнителя, которых не было в постановке

  • Сводная сверки развернута: классы расхождений строками, дни колонками.
    Так таблица умещается в панель без прокрутки. В резолюции про раскладку
    сводной ничего не было — если раскладка не нравится, вернуть просто.
  • Знак рубля стоит в названии панели, а не в формате числа. Механизм валюты
    Superset берет символ через Intl.NumberFormat по коду валюты и английской
    локали: RUB печатается как «RUB», а «₽» роняет вызов и молча отключает
    форматирование. Записано в «Ловушки» справочника.

Проверка

  • make lint;
  • импорт дерева на живом стенде, экран снят в браузере: девять панелей
    отрисованы, цвет категории одинаков на столбиках и в кольце;
  • период 03.06–06.06 сузил все панели, включая сводную по order_day;
  • SUM(revenue) / nullIf(SUM(orders), 0) на периоде без заказов возвращает
    NULL; без nullIf ClickHouse отдает исключение 153 и панель показывает
    ошибку.

Чего не проверил

Импорт на пустых метаданных (шаг 4 рецепта в docs/architecture/superset.md)
не прогнан: команда DROP DATABASE superset заблокирована в сессии. Косвенно:
шесть новых графиков созданы импортом с нуля в этой сессии, все объекты дерева
есть в базе метаданных и рисуются.

Closes #200

Подача стендового дашборда по резолюции грилинга из #200. ## Что на экране Четыре строки: ряд крупных чисел (выручка, заказы, средний чек, посетители); выручка по дням и категориям рядом с кольцом долей; сводная сверки; посетители и известные пользователи рядом с долей известных. Слева — фильтр «Период». ## Решения исполнителя, которых не было в постановке - **Сводная сверки развернута**: классы расхождений строками, дни колонками. Так таблица умещается в панель без прокрутки. В резолюции про раскладку сводной ничего не было — если раскладка не нравится, вернуть просто. - **Знак рубля стоит в названии панели**, а не в формате числа. Механизм валюты Superset берет символ через `Intl.NumberFormat` по коду валюты и английской локали: `RUB` печатается как «RUB», а «₽» роняет вызов и молча отключает форматирование. Записано в «Ловушки» справочника. ## Проверка - `make lint`; - импорт дерева на живом стенде, экран снят в браузере: девять панелей отрисованы, цвет категории одинаков на столбиках и в кольце; - период 03.06–06.06 сузил все панели, включая сводную по `order_day`; - `SUM(revenue) / nullIf(SUM(orders), 0)` на периоде без заказов возвращает NULL; без `nullIf` ClickHouse отдает исключение 153 и панель показывает ошибку. ## Чего не проверил Импорт на пустых метаданных (шаг 4 рецепта в `docs/architecture/superset.md`) не прогнан: команда `DROP DATABASE superset` заблокирована в сессии. Косвенно: шесть новых графиков созданы импортом с нуля в этой сессии, все объекты дерева есть в базе метаданных и рисуются. Closes #200
ddmitry added 1 commit 2026-09-08 10:35:37 +03:00
- Зачем:
  - экран отвечал только графиками: итога за период не было, доли категорий
    читались по высоте столбиков, а известные пользователи лежали на нуле
    рядом с посетителями.
- Что:
  - добавлены ряд крупных чисел (выручка, заказы, средний чек, посетители),
    кольцо долей категорий и линия доли известных пользователей;
  - средний чек и доля известных заведены метриками датасетов, знаменатель
    через `nullIf`: на пустом периоде деление Decimal на ноль в ClickHouse
    роняет панель;
  - фильтр «Период» сужает все панели, включая сверку по `order_day`;
  - `label_colors` закрепляет цвет за категорией и за рядами трафика;
  - деньги без копеек, единица в названии панели; подписи дат читаются как
    даты; сводная сверки развернута классами по строкам и уместилась без
    прокрутки;
  - обновлены справочник Superset и глава путеводителя.
- Проверка:
  - `make lint`;
  - `superset import-directory /app/import --overwrite` на живом стенде, экран
    снят в браузере: девять панелей отрисованы, цвет категории одинаков на
    столбиках и в кольце;
  - период 03.06–06.06 сузил все панели, включая сводную по `order_day`;
  - `SUM(revenue) / nullIf(SUM(orders), 0)` на периоде без заказов возвращает
    NULL, без `nullIf` — исключение 153.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
Owner

Прогон на пустых метаданных сделан, раздел «Чего не проверил» в описании больше не актуален.

По рецепту из docs/architecture/superset.md, шаг 4: DROP DATABASE superset WITH (FORCE), создание базы заново, docker compose run --rm superset-init, подъем Superset. После импорта с нуля в базе метаданных 9 графиков, 1 дашборд, 3 датасета, 1 подключение — ровно дерево infra/superset/import/, без молчаливых пропусков. Экран снят в браузере: все девять панелей отрисованы так же, как до сброса.

make check-services — пройдено 7, ошибок 0.

Прогон на пустых метаданных сделан, раздел «Чего не проверил» в описании больше не актуален. По рецепту из `docs/architecture/superset.md`, шаг 4: `DROP DATABASE superset WITH (FORCE)`, создание базы заново, `docker compose run --rm superset-init`, подъем Superset. После импорта с нуля в базе метаданных 9 графиков, 1 дашборд, 3 датасета, 1 подключение — ровно дерево `infra/superset/import/`, без молчаливых пропусков. Экран снят в браузере: все девять панелей отрисованы так же, как до сброса. `make check-services` — пройдено 7, ошибок 0.
ddmitry merged commit 3ac3911e95 into main 2026-09-08 12:29:00 +03:00
ddmitry deleted branch 200-superset-dashboard-polish 2026-09-08 12:29:00 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#247