EMPE-08: Расписание — фактические смены

Что сделать

Отображение фактических смен в календаре с цветовым кодированием.

Конкретно

  • Отображать фактические смены (shift records) поверх/рядом с плановыми
  • Цвета ячеек:
    • Зелёный (on_schedule) — факт совпадает с планом
    • Жёлтый (off_schedule) — факт без плана
    • Красный (missed) — план без факта (прошедший день)
    • Фиолетовый (unplanned) — незапланированная смена
    • Серый контур — план на будущее
  • Двойной клик по ячейке с фактом → модалка детали (clock_in, clock_out, break, статус)
  • Содержимое ячейки: время “09:00–17:00”, если план и факт отличаются — план зачёркнут

Зависит от

  • EMPE-06 (календарь layout)

Файлы

  • web/src/pages/schedule/components/ScheduleCell.tsx — создать/обновить
  • web/src/pages/schedule/components/ShiftDetailModal.tsx — создать