Add grid auto-build functionality with profile management and preview capabilities
ci / build-backend (push) Successful in 2m40s
ci / build-frontend (push) Successful in 1m14s
ci / tests (push) Successful in 2m45s
ci / sonar (push) Successful in 7m4s

Implemented new API endpoints and frontend components for grid auto-building based on predefined profiles. Added functionality to list grid profiles, preview generated grids, and generate grids with specified parameters. Enhanced the TemplateEndpoints and related services to support these features, improving the user experience for channel scheduling. Localization updates were made to accommodate new features in both English and Russian.
This commit is contained in:
Leonid Pershin
2026-07-27 08:08:56 +03:00
parent 6fe6404e61
commit bef029b858
33 changed files with 2623 additions and 44 deletions
+27
View File
@@ -822,6 +822,33 @@ seed = hash(channelId, date, slotId, occurrenceInDay)
Регулируется по силе, по умолчанию выключен: попадает точно в цель для канала «как в 96-м», но
переборщить очень легко.
### 6.9. Автосборка сетки по профилю
Собрать неделю руками — это несколько десятков слотов, и до первого эфира новый канал не доживает.
Кнопка «Собрать сетку» делает первый проход за админа; дальше сетка правится как обычно.
**Профиль** — описание вещательных суток полосами: с какого времени по какое, какой длины блок,
сколько единиц он берёт, какой рейтинг допустим. Профили списаны с реальных каналов («как у 2×2»,
«как у Paramount Comedy», «как у MTV») — такое админ проверяет по памяти, а «универсальный алгоритм
раскладки» проверить нельзя никак. Это данные (`GridProfiles`), не алгоритм: новый профиль — это
новый список полос.
**Подбор группы под полосу** объяснимый и в том же порядке, что проверки из 5.1: рейтинг отсекает
жёстко (в детское время строгое не ставится, ночной блок 18+ без взрослого содержимого бессмыслен),
дальше баллы за тип контента, длину единицы и запас серий, минус за повторное использование в тех же
сутках. Не нашлось кандидата — полоса остаётся незакрытой, и это написано в предпросмотре, а не
обнаруживается потом списком ошибок.
**Два режима.** «Заполнить дыры» застраивает только непокрытое время (дыры считаются тем же
`GridCoverage`, что и в 5.1) и не трогает ручные слоты; интервалы, свободные во все семь дней,
схлопываются в один слот «каждый день». «Собрать неделю с нуля» сносит все слоты шаблона и строит
будни слоем `Основная сетка`, а выходные — слоем `Выходные` поверх: слой имеет смысл, только когда
покрывает день целиком, поэтому отдельные выходные бывают лишь в этом режиме.
**Предпросмотр обязателен**: он считается тем же `GridPlanner`, что и создание, поэтому показанное
и созданное совпадают по построению. Эфир генерация не двигает — как любая правка сетки, она только
поднимает ревизию шаблона, а хвост пересобирает кнопка применения.
---
## 7. Порядок реализации