P1: Довести статистику до upsert-счётчиков и дневных бакетов (вариант A) #42
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
Пробный
stats_collector(#16) пишет append-only дельты вstats, но admin API по-прежнему считают метрики полными сканами доменных таблиц. Подпискиsimpleломают детект insert/update; таблицаstatsне читается.Влияние
Нагрузка на Mnesia при открытии дашборда и section
*/statsрастёт с размером таблиц; экспериментальный сборщик бесполезен и раздувает диск.Ожидаемый результат
Единый путь: Mnesia
detailedsubscribe → ETS → upsert вstats_counter/stats_daily;logic_statsи section stats читают агрегаты. Totals черезtable_infoгде достаточно; by_day/by_status/by_role — из счётчиков. Backfill при старте. Append-onlystatsубран.Критерии приёмки
stats_counter+stats_daily(unique key, upsert)detailed, корректные переходы статусов, подписки на users/events/calendars/reviews/reports/tickets/subscriptions/bookings*/statsчитают агрегаты без full scan для by_day / breakdownsФайлы (подсказка)
src/infra/stats_collector.erlsrc/logic/logic_stats.erlsrc/infra/infra_mnesia.erlinclude/records.hrlПриоритет
P1
Продолжение #16. Выбран вариант A.
Беру в работу. Реализация варианта A: upsert-счётчики + дневные бакеты.
Закрыто: upsert-счётчики stats_counter/stats_daily и переход logic_stats уже в main (миграции 20260717180000/190000, stats_collector detailed).