Add TV bumpers functionality: introduce configuration options for bumpers in .env.example and appsettings.json, enhance ChannelEndpoints to manage jingles and bumper assets, and update Channel and ScheduleEntry models to support bumper logic. Implement validation for bumper settings and integrate bumper handling in scheduling logic.

This commit is contained in:
Leonid Pershin
2026-07-25 00:45:22 +03:00
parent 622bf1e440
commit 0cfc72166a
60 changed files with 5073 additions and 33 deletions
@@ -55,6 +55,25 @@ public class MediaAsset
};
}
/// <summary>
/// Ассет, сгенерированный системой (ТВ-заставка). Нарезку делает не общий пайплайн обработки, а
/// специализированный рендерер, поэтому сразу помечаем <see cref="MarkReady"/> после создания.
/// </summary>
public static MediaAsset RegisterGenerated(string displayName)
{
var now = DateTimeOffset.UtcNow;
return new MediaAsset
{
Id = Guid.NewGuid(),
OriginalFileName = displayName,
OriginalExtension = string.Empty,
Source = MediaSource.Generated,
Status = MediaAssetStatus.Pending,
CreatedAt = now,
UpdatedAt = now,
};
}
public void MarkProcessing()
{
Status = MediaAssetStatus.Processing;
@@ -8,4 +8,8 @@ public enum MediaSource
/// <summary>Положен вручную в inbox/ и подобран сканером.</summary>
Inbox,
/// <summary>Сгенерирован системой (например, ТВ-заставка «Сейчас/Далее»), а не загружен человеком.
/// Такие ассеты не показываются в списке медиа и создаются сразу готовыми (нарезка своя).</summary>
Generated,
}