Add LibraryDebugCollector and enhance ChannelDebugCollector for drift analysis
ci / build-backend (push) Successful in 1m18s
ci / build-frontend (push) Successful in 50s
ci / tests (push) Successful in 1m25s
ci / sonar (push) Successful in 3m47s

Introduced the LibraryDebugCollector to gather library-related data for channel exports. Updated the ChannelDebugCollector to calculate and include drift information, comparing scheduled and actual slot times. Enhanced the ExportChannelDebugCommandHandler to integrate library data into the export process. Added tests to verify the correct functionality of the new drift analysis and library export features, ensuring comprehensive debug data for channel analysis.
This commit is contained in:
Leonid Pershin
2026-07-31 03:18:24 +03:00
parent 9cd364b174
commit 789357481d
7 changed files with 622 additions and 6 deletions
+11 -1
View File
@@ -771,10 +771,20 @@ ScheduleEntry — существующая сущность,
не про запись, а про весь вход планировщика сразу. Кнопка в карточке канала собирает его архивом:
настройки канала, шаблон со слотами и разобранными стратегиями, курсоры слотов, эффективная сетка
на горизонт (включая перекрытые слоты фона), развёрнутые группы **вплоть до отдельных единиц**,
стыки с условиями, записанная лента с трейсами и сухой прогон от текущего состояния. Всё, что
стыки с условиями, записанная лента с трейсами и сухой прогон от текущего состояния.
Отдельным файлом — сведённый дрейф: целевое время каждого экземпляра слота против фактического,
с его собственным допуском и пометкой «ушёл дальше допуска». Это первый вопрос к любой сетке,
и сводить два файла руками при каждом разборе не должно быть нужно. Всё, что
хранится JSON-строкой, разбирается в объекты, а рядом с каждым идентификатором стоит имя: дамп
читают глазами чаще, чем кодом.
Второй половиной дампа идёт библиотека — то, **из чего** было строить: шоу целиком (тип, рейтинг,
жанры, все серии по порядку с распознанными сезоном и номером, состояние ассета каждой), коллекции
с порядком частей, ролики, свод по медиа с поимённым списком всего, что не доехало до `Ready`,
блоки заставок и группы вместе с **вычисленным** составом — у динамической он живёт в правиле,
и увидеть его иначе нельзя. Рядом с составом лежит кэш статистики группы: разошёлся с расчётом —
значит библиотека поменялась после последнего пересчёта, и цифры в карточке врут.
Сухой прогон в дампе принципиален: рядом с записанной лентой он отвечает на первый вопрос
разбора — данные плохие или расчёт. Архив всегда уезжает в браузер, а копия ложится в каталог
`Debug:ExportDirectory` (в разработке — папка `debug-exports/` репозитория, в гите игнорируется);