Refactor GridScheduleGenerator and related models for improved repeat slot handling
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:
@@ -319,6 +319,16 @@ Slot
|
||||
стратегии, ни курсора, ни остывания — самый дешёвый тип слота из всех. Если в источнике ничего не
|
||||
нашлось (эфир ещё не шёл, окно почищено ретеншном) — слот отдаётся фоновому слою с предупреждением.
|
||||
|
||||
Две тонкости, без которых повтор находит пустоту:
|
||||
|
||||
- **источник ищется по пересечению с окном, а не по попаданию старта внутрь.** Сетка эластичная:
|
||||
вечерний фильм законно начинается в 20:50 вместо 21:00, и по старту в собственное окно `21:00 + 2 ч`
|
||||
он бы не попал;
|
||||
- **повтор видит и текущий прогон, не только записанную ленту.** Горизонт строится целиком, и вечер
|
||||
понедельника, который повторяют во вторник утром, в этот момент существует только внутри прогона —
|
||||
в базе его ещё нет. Записанное прошлое берётся до начала прогона, остальное — из собираемой ленты;
|
||||
границы не пересекаются, поэтому и в предпросмотре реальный эфир не складывается с симулированным.
|
||||
|
||||
**`slotKind = signOff`** — конец вещания. Каналы тогда не работали круглосуточно: в два часа ночи
|
||||
настроечная таблица, гимн или «не забудьте выключить телевизор», в шесть утра эфир возобновлялся.
|
||||
Слот заполняется зацикленным ассетом и помечается в программе как «эфир не ведётся».
|
||||
|
||||
Reference in New Issue
Block a user