Почему язык такой же, как в отчётах
Дашборд показывает виджеты, которые используют данные отчётов и report builder. Поэтому выражения строятся по тем же правилам, что и в components/Builder/ExpressionHelpModal.vue: функции count, sum, avg, условные функции и логические операторы.

Базовые примеры
count(visit_page)
sum(order.amount)
countIf(visit_page.country == 'RU')
sumIf(order.amount, order.status == 'paid')

Правила
- Не пишите SQL.
- Строки — в одинарных кавычках.
- Для сложных условий используйте скобки.
- Не вкладывайте агрегаты друг в друга.
- Если виджет пустой, сначала проверяйте событие и период, а не CSS дашборда.
Технически: пользователь работает во frontend через REST в gateway. Внутри CDP используется контур gateway → cdp_report; публичные ссылки создаются через shortlink, данные виджетов читаются из report/event. Пользователю это нужно знать только для диагностики: если UI показывает ошибку, смотрите route, HTTP-статус gateway и связанный сервис.

