EMPE-13: Платёжные ведомости

Что сделать

Страница /payroll — расчёт, подтверждение, оплата, экспорт ведомостей.

Конкретно

  • Фильтры: store_id (обязательный), period (month picker, default текущий)
  • Таблица: сотрудник, роль, ТТ, план часов, факт часов, перерывы, чистые часы, формула, сумма, статус
  • Статусы-бейджи: calculated (синий), confirmed (оранжевый), paid (зелёный)
  • Кнопка “Рассчитать” → подтверждение → POST /api/v1/admin/payroll/calculate
  • Кнопка “Подтвердить” (в строке) → POST /api/v1/admin/payroll/{id}/confirm
  • Кнопка “Отметить оплаченным” (в строке) → POST /api/v1/admin/payroll/{id}/mark-paid
  • Кнопка “Экспорт CSV” → скачивание GET /api/v1/admin/payroll/export?store_id=...&period=...
  • Ролевой доступ: Franchise — полный, Franchisee — без confirm/mark-paid, Manager — просмотр

Зависит от

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

Файлы

  • web/src/pages/payroll/PayrollPage.tsx — создать
  • web/src/pages/payroll/components/PayrollTable.tsx — создать
  • web/src/pages/payroll/components/PayrollFilters.tsx — создать