Refactor GridScheduleGenerator and related models for improved repeat slot handling
ci / build-backend (push) Successful in 1m17s
ci / build-frontend (push) Successful in 37s
ci / tests (push) Successful in 1m38s
ci / sonar (push) Successful in 3m44s

Updated the GridScheduleGenerator to utilize a new PlanningRepeatWindow structure for managing repeat slots, enhancing the logic for loading repeat units. The LoadRepeatUnitsAsync method was modified to accept a channel ID and repeat window, ensuring accurate retrieval of past entries. Additionally, the PlanningSlot record was updated to include the new RepeatWindow property, and the SchedulePlanner was adjusted to collect repeat units based on the updated logic. Enhanced unit tests to verify the correct behavior of repeat slot functionality, ensuring that overlaps and elastic start times are handled appropriately.
This commit is contained in:
Leonid Pershin
2026-07-29 08:34:03 +03:00
parent 46c0169dea
commit c67d1f7752
5 changed files with 143 additions and 17 deletions
+10
View File
@@ -319,6 +319,16 @@ Slot
стратегии, ни курсора, ни остывания — самый дешёвый тип слота из всех. Если в источнике ничего не
нашлось (эфир ещё не шёл, окно почищено ретеншном) — слот отдаётся фоновому слою с предупреждением.
Две тонкости, без которых повтор находит пустоту:
- **источник ищется по пересечению с окном, а не по попаданию старта внутрь.** Сетка эластичная:
вечерний фильм законно начинается в 20:50 вместо 21:00, и по старту в собственное окно `21:00 + 2 ч`
он бы не попал;
- **повтор видит и текущий прогон, не только записанную ленту.** Горизонт строится целиком, и вечер
понедельника, который повторяют во вторник утром, в этот момент существует только внутри прогона —
в базе его ещё нет. Записанное прошлое берётся до начала прогона, остальное — из собираемой ленты;
границы не пересекаются, поэтому и в предпросмотре реальный эфир не складывается с симулированным.
**`slotKind = signOff`** — конец вещания. Каналы тогда не работали круглосуточно: в два часа ночи
настроечная таблица, гимн или «не забудьте выключить телевизор», в шесть утра эфир возобновлялся.
Слот заполняется зацикленным ассетом и помечается в программе как «эфир не ведётся».