Refactor RenderBumperPreviewCommandHandler to streamline background path resolution and rendering specification. Introduce helper methods for improved readability and maintainability. Update FindMissingEpisodesQueryHandler and RefreshShowEpisodesMetadataCommandHandler to encapsulate episode number resolution logic. Enhance CopyTemplateCommandHandler by modularizing junction copying and slot handling for better clarity. Improve FfmpegMediaProcessor by separating duration and stream parsing into dedicated methods. Refactor MediaClaimingBackgroundService to simplify idle waiting logic. Update GenreSeeder to modularize alias addition logic, enhancing code organization.
This commit is contained in:
@@ -244,27 +244,7 @@ public static class SchedulePlanner
|
||||
var pick = ElementSelector.Select(slot, cursor, random);
|
||||
if (pick is null)
|
||||
{
|
||||
// Пустая группа и отсечённая фильтром — разные беды: во втором случае контент есть,
|
||||
// но не подходит по правилам, и админу надо чинить правило, а не состав группы.
|
||||
var filteredOut =
|
||||
slot.Elements.Any(e => e.Units.Count > 0)
|
||||
&& !slot.Elements.Any(e =>
|
||||
e.Units.Count > 0 && ElementSelector.IsAllowedByAudience(slot, e)
|
||||
);
|
||||
|
||||
warnings.Add(
|
||||
filteredOut
|
||||
? new PlanningWarning(
|
||||
PlanningWarningKind.CandidatesFiltered,
|
||||
slot.SlotId,
|
||||
"Возрастной потолок отсёк всех кандидатов — место закрыл фон."
|
||||
)
|
||||
: new PlanningWarning(
|
||||
PlanningWarningKind.SlotEmpty,
|
||||
slot.SlotId,
|
||||
"Слот не дал контента — место закрыл фон."
|
||||
)
|
||||
);
|
||||
warnings.Add(NoCandidatesWarning(slot));
|
||||
return FillWithFallback(
|
||||
cursor,
|
||||
Min(slot.TargetEndUtc, limit),
|
||||
@@ -365,6 +345,31 @@ public static class SchedulePlanner
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Почему слот остался без контента. Пустая группа и отсечённая фильтром — разные беды: во втором
|
||||
/// случае контент есть, но не подходит по правилам, и админу надо чинить правило, а не состав
|
||||
/// группы.
|
||||
/// </summary>
|
||||
private static PlanningWarning NoCandidatesWarning(PlanningSlot slot)
|
||||
{
|
||||
var hasPlayable = slot.Elements.Any(e => e.Units.Count > 0);
|
||||
var hasAllowed = slot.Elements.Any(e =>
|
||||
e.Units.Count > 0 && ElementSelector.IsAllowedByAudience(slot, e)
|
||||
);
|
||||
|
||||
return hasPlayable && !hasAllowed
|
||||
? new PlanningWarning(
|
||||
PlanningWarningKind.CandidatesFiltered,
|
||||
slot.SlotId,
|
||||
"Возрастной потолок отсёк всех кандидатов — место закрыл фон."
|
||||
)
|
||||
: new PlanningWarning(
|
||||
PlanningWarningKind.SlotEmpty,
|
||||
slot.SlotId,
|
||||
"Слот не дал контента — место закрыл фон."
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Влезает ли ещё одна единица в бюджет слота. <see cref="OverflowPolicy.ExtendSlot"/> бюджет
|
||||
/// игнорирует: элемент доигрывается целиком, а разбег подберёт ближайший якорь.
|
||||
|
||||
Reference in New Issue
Block a user