EMPE-06: Расписание — календарь layout

Что сделать

Страница /schedule — основной layout табличного календаря смен.

Конкретно

  • Страница SchedulePage с роутом /schedule
  • Фильтр-бар: store_id (обязательный), период (неделя/месяц), навигация по датам
  • Таблица-сетка: строки = сотрудники, столбцы = дни
  • Итоговая колонка справа: план/факт часов
  • API: GET /api/v1/admin/schedules?store_id=...&from=...&to=...
  • API: GET /api/v1/admin/shift-records?store_id=...&from=...&to=...
  • Состояния: загрузка (skeleton), пусто, ошибка

Зависит от

  • EMPE-01 (BFF прокси), EMPE-02 (типы), EMPE-14 (роутинг)

Файлы

  • web/src/pages/schedule/SchedulePage.tsx — создать
  • web/src/pages/schedule/components/ScheduleGrid.tsx — создать
  • web/src/pages/schedule/components/ScheduleFilters.tsx — создать