Add restore functionality for template management and enhance related components
ci / build-backend (push) Successful in 2m47s
ci / build-frontend (push) Successful in 1m8s
ci / tests (push) Successful in 2m28s
ci / sonar (push) Successful in 6m49s

Implemented a new endpoint for restoring templates to their last applied state, allowing users to revert changes made since the last application. Updated the ScheduleTemplate class to include a snapshot of the last applied state, enabling rollback capabilities. Enhanced the frontend with a restore button in the ChannelDetail component, providing users with a confirmation prompt before executing the restore action. Localization updates were made to support new UI strings in both English and Russian, improving the overall user experience in template management.
This commit is contained in:
Leonid Pershin
2026-07-27 08:43:53 +03:00
parent a302750de6
commit 0fd4e762f4
21 changed files with 2227 additions and 133 deletions
+15
View File
@@ -822,6 +822,21 @@ seed = hash(channelId, date, slotId, occurrenceInDay)
Регулируется по силе, по умолчанию выключен: попадает точно в цель для канала «как в 96-м», но
переборщить очень легко.
### 6.6.1. Откат правок
У плашки «правила изменены» две кнопки: применить и **сбросить**. Слои и слоты правятся на месте,
поэтому «как было» взять неоткуда — при каждом применении шаблон снимается слепком
(`ScheduleTemplate.AppliedSnapshotJson`, схема `TemplateSnapshot` в Application). Это ровно то
состояние, по которому собрана лента, и потому единственная корректная точка отката.
Откат правит слои и слоты **на месте по идентификаторам из снимка**: у пережившего откат слота
сохраняется `SlotState`, и сериал не начинается заново. Удалённый после применения слот вернётся
новым — его состояние ушло вместе с ним. Ссылка на группу или стык, удалённые после применения,
не восстанавливается (внешний ключ), слот возвращается без неё, потеря считается и показывается.
Эфир при откате не трогается: он и так идёт по этому состоянию, а шаблон после отката снова ему
равен — `Revision` приравнивается к `AppliedRevision`, плашка гаснет.
### 6.9. Автосборка сетки по профилю
Собрать неделю руками — это несколько десятков слотов, и до первого эфира новый канал не доживает.