BR 1.5: Управление торговыми точками

Контекст

ЮЛ созданы (BR 1.1), сотрудники привязываются к ТТ (BR 1.4), но самих ТТ в системе нет. Без управления торговыми точками невозможно:

  • Привязать сотрудников к конкретной ТТ
  • Запустить каталог и прейскуранты (будущие BR)
  • Опубликовать ТТ на сайте / в приложении

Store Service (:3003) уже заложен в архитектуре, есть 3 internal endpoint-а для поддержки ЮЛ — нужно достроить публичный API и фронтенд.

Что нужно

1. Создание торговой точки

Франшиза создаёт ТТ и привязывает к ЮЛ франчайзи (или своему ЮЛ).

Основные данные:

  • Название ТТ (обязательное)
  • Адрес (обязательный, текстовое поле)
  • Координаты (широта/долгота) — ручной ввод числами. В будущем — геокодинг по адресу
  • Город / регион (текстовое поле)
  • Телефон ТТ
  • Email ТТ
  • Привязка к ЮЛ (обязательная, выбор из списка активных ЮЛ, не меняется после создания)

График работы:

  • По дням недели: понедельник–воскресенье
  • Для каждого дня: время открытия, время закрытия, или “выходной”
  • Одинаковый график на все дни (быстрая настройка) или индивидуально по дням

2. Просмотр и редактирование ТТ

  • Карточка ТТ со всеми данными
  • Редактирование всех полей кроме привязки к ЮЛ (не меняется после создания)
  • Редактирование графика работы

3. Список торговых точек

  • Таблица со всеми ТТ
  • Поиск по названию и адресу
  • Фильтры: статус (все / опубликована / черновик / приостановлена), ЮЛ, город
  • Пагинация (20 на страницу)
  • Колонки: название, адрес, ЮЛ, статус, город

4. Статусы и публикация

Статусы ТТ:

  • Черновик (draft) — создана, но не видна клиентам. Можно редактировать
  • Опубликована (published) — видна на сайте и в приложении
  • Приостановлена (suspended) — временно скрыта (например, при приостановке ЮЛ)

Публикация:

  • Кнопка “Опубликовать” — переводит из draft в published
  • Кнопка “Снять с публикации” — переводит из published в draft
  • При приостановке ЮЛ (BR 1.1) — все ТТ этого ЮЛ автоматически становятся suspended
  • При возобновлении ЮЛ — ТТ остаются suspended (нужно публиковать вручную)

5. Удаление ТТ

  • Soft delete (помечается удалённой, не отображается)
  • Если у ТТ есть назначенные сотрудники — предупредить, но разрешить удаление (сотрудники открепляются)
  • Если ТТ опубликована — сначала снять с публикации, потом удалять

6. Ролевой доступ

РольЧто может
ФраншизаCRUD всех ТТ, публикация, все фильтры
ФранчайзиПросмотр и редактирование только своих ТТ (привязанных к его ЮЛ), без создания и удаления
Менеджер ТТПросмотр и редактирование только своей ТТ (без создания, удаления, публикации)
КассирНет доступа

Что НЕ входит (отложено)

  • Фотографии и медиа ТТ (требует S3 интеграцию) — Phase 2
  • Зоны доставки на карте (полигоны, мин. сумма, стоимость) — Phase 2
  • Авто-увеличение времени ETA при загрузке (требует Order Service) — Phase 2
  • Импорт из Excel — отдельная BR 1.6

Решения по открытым вопросам

  1. Привязка к ЮЛ — на MVP привязка к одному ЮЛ, не меняется после создания. В будущем возможна смена привязки (перевод ТТ между ЮЛ).
  2. Координаты — на MVP ручной ввод широты/долготы. В будущем — интеграция с сервисом геокодинга (поиск координат по текстовому адресу).
  3. При возобновлении ЮЛ — ТТ остаются suspended, публиковать вручную.
  4. Формат графика — на MVP “открыто с … до …” без перерывов. В будущем — поддержка перерывов.
  5. Типы ТТ — на MVP один тип, без классификации. В будущем — типы (кухня, кофейня, dark kitchen и т.д.).

Зависимости

  • BR 1.1 — ЮЛ должны существовать (привязка ТТ к ЮЛ)
  • BR 1.4 — Сотрудники привязываются к ТТ (после реализации 1.5 — сотрудники смогут быть привязаны к реальным ТТ)
  • Store Service — уже есть скелет с internal API

Ссылки