STORE-07: Форма создания ТТ с редактором расписания
Что сделать
Реализовать страницу /stores/new с формой создания ТТ, включая редактор расписания по дням недели.
Смотри спеку
Секция “Создание” в Торговые точки — Карточка.
Конкретно
Доступ
Только Franchise. Остальные роли — redirect на /stores.
Поля формы
| Поле | Тип | Обязательно | Валидация |
|---|---|---|---|
| Название | Text | Да | max 255 |
| Адрес | Text | Да | max 500 |
| Широта | Number | Да | -90..90, до 6 знаков |
| Долгота | Number | Да | -180..180, до 6 знаков |
| Город | Text | Нет | max 255 |
| Телефон | Text | Нет | +7 (XXX) XXX-XX-XX |
| Text | Нет | ||
| ЮЛ | Select | Да | Из GET /api/v1/admin/legal-entities?status=active&per_page=100 |
Редактор расписания
7 строк (Пн–Вс), каждая:
- Название дня (label)
- Время открытия (time input HH:MM), disabled если “Выходной”
- Время закрытия (time input HH:MM), disabled если “Выходной”
- Checkbox “Выходной” — при включении очищает и блокирует time inputs
Быстрая настройка:
- Checkbox “Одинаковый для всех дней” — значения Понедельника копируются во все дни в реальном времени
- При отключении — дни становятся независимыми (значения сохраняются)
Валидация серверная
| Код | Когда |
|---|---|
NAME_DUPLICATE | Дубликат названия в рамках ЮЛ |
LEGAL_ENTITY_NOT_FOUND | ЮЛ не найдено или не активно |
Ошибки показываются под соответствующим полем.
Кнопки
- “Сохранить” →
POST /api/v1/admin/stores - “Отмена” →
/stores(с подтверждением если есть несохранённые данные)
После успеха
Redirect на /stores/{new_id}, toast “Торговая точка создана”
Файлы
web/src/pages/stores/CreatePage.tsx— создатьweb/src/api/stores.ts— добавить create
Зависит от
- STORE-01 (типы)
- STORE-02 (BFF)