bert.hausmans
36525e729a
feat(timetable): pure logic ports — snap, lane, conflict, b2b, capacity, time-grid (Session 4 step 2)
Ports the prototype's helpers.js + cascade-bump algorithm into typed
TypeScript modules in apps/app/src/lib/timetable/:
- snap.ts — 5-minute snap (RFC D7) + 15-min minimum duration
- time-grid.ts — pixel ↔ minute ↔ ISO-8601 coordinate conversions
- conflict.ts — same-stage same-lane overlap detection (RFC D5)
- b2b.ts — back-to-back marker links, 3-min threshold (RFC D26)
- capacity.ts — 110% over-capacity warn level (RFC D25)
- lane.ts — two-pass resolver + drag-preview cascade (D13/D18/D19,
client-side preview only; server is authoritative)
All functions are pure (no Vue, no DOM). Tested in Phase C.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>