Début de journée indépendant de l'ordre des créneaux types
La « journée de festival » commence désormais au début du plus long creux laissé par les créneaux types sur 24 h (l'heure où le dernier se termine), et non plus au début de celui de plus petit `order` : un créneau type d'ordre 0 déplacé à 21:00 faisait commencer chaque journée des grilles à 21:00, jusqu'à 03:00 le lendemain. Même règle côté backend (validation.engine.day_boundary, réutilisée par la génération de créneaux) et frontend (dayBoundaryFromDayParts). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ee1f6ed72e
commit
f671bb85bf
@@ -275,3 +275,37 @@ def test_only_warnings_is_not_blocking():
|
||||
violations = validate(data)
|
||||
assert _codes(violations) == [ViolationCode.OUTSIDE_AVAILABILITY]
|
||||
assert has_blocking(violations) is False
|
||||
|
||||
|
||||
# --- Début de « journée de festival » (day_boundary) ------------------------
|
||||
|
||||
|
||||
def test_day_boundary_starts_after_last_day_part_ends():
|
||||
from app.validation.engine import day_boundary
|
||||
|
||||
parts = (
|
||||
DayPartWindow("MATIN", dt.time(8, 0), dt.time(13, 0), 0),
|
||||
DayPartWindow("APRES_MIDI", dt.time(13, 0), dt.time(19, 0), 1),
|
||||
DayPartWindow("SOIREE", dt.time(19, 0), dt.time(2, 0), 2),
|
||||
)
|
||||
assert day_boundary(parts) == dt.time(2, 0)
|
||||
|
||||
|
||||
def test_day_boundary_ignores_order_out_of_step_with_hours():
|
||||
"""Un créneau type d'ordre 0 déplacé à 21 h ne fait plus commencer la
|
||||
journée à 21 h : seul compte le creux entre la fin du dernier et le
|
||||
début du premier."""
|
||||
from app.validation.engine import day_boundary
|
||||
|
||||
parts = (
|
||||
DayPartWindow("SOIREE", dt.time(21, 0), dt.time(3, 0), 0),
|
||||
DayPartWindow("JOUR", dt.time(10, 0), dt.time(21, 0), 1),
|
||||
)
|
||||
assert day_boundary(parts) == dt.time(3, 0)
|
||||
|
||||
|
||||
def test_day_boundary_full_coverage_falls_back_to_first_by_order():
|
||||
from app.validation.engine import day_boundary
|
||||
|
||||
assert day_boundary(DAY_PARTS) == dt.time(6, 0)
|
||||
assert day_boundary(()) == dt.time(0, 0)
|
||||
|
||||
Reference in New Issue
Block a user