Enhance template and scheduling functionalities: add PlanningRules to template endpoints and commands, implement repeat limits and audience filtering in scheduling logic, and update related data structures. Refactor frontend components to support new rules and improve user experience in channel management.
This commit is contained in:
@@ -244,12 +244,26 @@ 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(
|
||||
new PlanningWarning(
|
||||
PlanningWarningKind.SlotEmpty,
|
||||
slot.SlotId,
|
||||
"Слот не дал контента — место закрыл фон."
|
||||
)
|
||||
filteredOut
|
||||
? new PlanningWarning(
|
||||
PlanningWarningKind.CandidatesFiltered,
|
||||
slot.SlotId,
|
||||
"Возрастной потолок отсёк всех кандидатов — место закрыл фон."
|
||||
)
|
||||
: new PlanningWarning(
|
||||
PlanningWarningKind.SlotEmpty,
|
||||
slot.SlotId,
|
||||
"Слот не дал контента — место закрыл фон."
|
||||
)
|
||||
);
|
||||
return FillWithFallback(
|
||||
cursor,
|
||||
|
||||
Reference in New Issue
Block a user