STORE-03: Список ТТ — таблица, пагинация, состояния

Что сделать

Реализовать страницу /stores с таблицей торговых точек, пагинацией и базовыми состояниями.

Смотри спеку

Секции “Таблица”, “Пагинация”, “Состояния” в Торговые точки — Список.

Конкретно

Таблица

Колонки: Название (кликабельное → /stores/{id}), Адрес, ЮЛ (legal_entity.name), Статус (бейдж), Город, Действия (меню ⋮).

Бейджи статусов:

  • draft — серый, “Черновик”
  • published — зелёный, “Опубликована”
  • suspended — красный, “Приостановлена”

Пагинация

20 на страницу. Номера страниц + стрелки. page, per_page в query.

API

GET /api/v1/admin/storesweb/src/api/stores.tsauthFetch.

Состояния

  • Загрузка: skeleton-таблица (5 placeholder строк)
  • Пусто (Franchise): “Торговые точки пока не добавлены” + кнопка “Создать ТТ”
  • Пусто (Franchisee/Manager): “Торговые точки пока не добавлены”
  • Ошибка: “Не удалось загрузить данные” + “Повторить”
  • Пустой поиск: “Ничего не найдено по запросу «…»”

Шапка

Заголовок “Торговые точки” + кнопка “Создать ТТ” (только Franchise) → /stores/new.

Файлы

  • web/src/pages/stores/ListPage.tsx — создать
  • web/src/api/stores.ts — создать (getList, и другие функции)

Зависит от

  • STORE-01 (типы)
  • STORE-02 (BFF)