Core flow ИП-кафе
Полный happy path: ИП открывает кафе, нанимает кассира, заводит меню, принимает один заказ, закрывает день.
Главный вопрос — «работает ли core?»
Если этот сценарий не проходит, никакой test plan не спасёт. Ставь чек-боксы, веди счёт ✅/❌/⚠️.
Что нужно перед стартом
- Доступ к стенду https://erp-test.nirbi.ru
- Учётка Franchise (ИП-владелец)
- Префикс «test-» для всех сущностей которые будешь создавать (чтобы потом удалить и не мешать другим тестерам)
- Открыты 2 окна: 🖥 Админка в браузере, 💳 POS (приложение или веб)
Заранее известные блокеры
Перед прогоном смотри эту таблицу — на этих шагах будут проблемы:
| Phase | Шаг | Bug | Тяжесть |
|---|---|---|---|
| 2 | Создание сотрудника | BUG-008 — 500 | 🚨 БЛОКЕР всего flow |
| 4 | Привязка прейскуранта к ТТ | BUG-051 — нельзя вручную | 🚨 БЛОКЕР продажи |
| 4 | Меню в карточке ТТ | BUG-060 — 500 | Major |
| 5 | Manager → ТТ / Склад / Заказы | BUG-014, BUG-016, BUG-017 — 403 | Major (Manager бесполезен) |
| 5 | Manager → Стоп-листы | BUG-049 — 403 | Major |
| 7 | Экспорт CSV ведомости | BUG-024 — 422 | Minor |
Без фикса BUG-008 и BUG-051 flow физически не пройти. Это первая задача разработке.
Phase 1 — Setup точки (~20 мин)
🖥 Админка под Franchise.
Prerequisites
- Готов реквизиты тестового ЮЛ (или используешь существующее главное)
Шаги
- 1.1 Open
/login→ войти под Franchise → попасть на/dashboard - 1.2 Открыть Юр.лица → проверить наличие главного ЮЛ (
type=franchise,is_primary=true) - 1.3 Открыть карточку главного ЮЛ → корректность реквизитов (ИНН, ОГРН, банк, контакты)
- 1.4 Открыть Торговые точки → «Создать»
- 1.5 Заполнить ТТ: название «test-Точка-1», адрес, координаты (lat/lng), юрлицо, часовой пояс
Europe/Moscow - 1.6 Заполнить график 7 дней (например Пн-Пт 09:00-21:00, Сб-Вс 10:00-22:00)
- 1.7 Сохранить → ТТ должна появиться в списке
- 1.8 Открыть карточку ТТ → вкладка POS-терминалы → добавить терминал по
fs_number - 1.9 (опц.) Вкладка Столы → добавить 3-5 столов с capacity и позицией на canvas
Expected по итогу Phase 1
- ТТ существует и видна в списке
- График корректный
- Минимум один POS-терминал привязан
Phase 2 — Кадры (~25 мин)
🖥 Админка под Franchise.
Prerequisites
- ТТ создана в Phase 1
Шаги
- 2.1 Открыть Роли → «Создать» роль «test-Manager» с permissions:
stores.read+edit,employees.read+edit,catalog.read,warehouse.read+edit,orders.read+edit,stop_lists.read+edit,shifts.read - 2.2 Создать роль «test-Cashier» с permissions:
pos.access,customers.create_quick, минимумstores.read - 2.3 Открыть Сотрудники → «Создать» — Иванов И.И., email
manager@test.local, пароль, телефон, роль test-Manager, привязка к ТТ через роль- 🚨 BUG-008 — может вернуть
500 INTERNAL_ERROR
- 🚨 BUG-008 — может вернуть
- 2.4 Создать «Петров П.П.» с PIN (4 цифры), email/паролем, роль test-Cashier, привязка к ТТ
- 🚨 BUG-008 — тот же риск
- 2.5 В списке сотрудников оба видны со статусом Active
- 2.6 Открыть карточку Manager → проверить роль и список ТТ — корректно
Expected по итогу Phase 2
- 2 сотрудника созданы, активны
- Роли назначены, привязка к ТТ корректная
Если упало на 2.3 / 2.4
Дальнейший flow невозможен без сотрудников. Стоп, репорт BUG-008 как блокер MVP, ждать фикса.
Phase 3 — Каталог (~20 мин)
🖥 Админка под Franchise.
Prerequisites
- ТТ создана в Phase 1
Шаги
- 3.1 Открыть Кухонные станции → Создать «Hot Kitchen» (yellow_threshold=5min, red_threshold=10min)
- 3.2 Открыть Категории → Создать «test-Завтраки»
- 3.3 Открыть Товары → Создать «Бургер»: type=dish, категория=test-Завтраки, requires_kitchen=true, kitchen_station=Hot Kitchen, vat_rate=vat20, payment_subject=goods, payment_type=full
- 3.4 Создать «Капучино»: type=dish, requires_kitchen=true, kitchen_station=Hot Kitchen, vat_rate=vat20
- 3.5 Создать «Бутылка воды»: type=good, requires_kitchen=false, vat_rate=vat20
- 3.6 Открыть Модификаторы → Создать группу «Размер кофе» (binding_type=structural) с опциями S / M / L
- 3.7 В карточке «Капучино» → вкладка Модификаторы → привязать «Размер кофе»
Expected по итогу Phase 3
- 3 товара в каталоге, все видны в списке
- Группа модификаторов привязана к Капучино
Phase 4 — Прейскурант, меню, стоп-лист (~15 мин)
🖥 Админка под Franchise.
Prerequisites
- Товары созданы в Phase 3
- ТТ создана в Phase 1
Шаги
- 4.1 Открыть Прейскуранты → «Создать» прейскурант «test-Default» (auto-populate активным каталогом)
- 4.2 Открыть прейскурант → задать цены: Бургер 350, Капучино — S=200, M=240, L=280, Вода 80
- 4.3 Привязать прейскурант к ТТ через карточку ТТ → поле «Прейскурант»
- 🚨 BUG-051 — нельзя вручную привязать, всегда становится default; «Назначено ТТ» = 0
- 4.4 Открыть карточку ТТ → вкладка Меню
- 🚨 BUG-060 — может вернуть 500
- 4.5 Проверить что меню показывает 3 товара с актуальными ценами и модификаторами
- 4.6 Открыть Стоп-листы → поставить «Бургер» в стоп на test-Точка-1
- 4.7 Refresh меню ТТ → «Бургер» недоступен (скрыт или помечен как «нет в наличии»)
- 4.8 Снять стоп → «Бургер» вернулся в меню
Expected по итогу Phase 4
- Прейскурант привязан к ТТ
- Меню в карточке ТТ открывается, видно 3 товара с ценами
- Стоп-лист корректно propagates на меню
Если упало на 4.3
Без привязанного прейскуранта Cashier не сможет принимать заказы (нет цен). Стоп, репорт BUG-051.
Phase 5 — Manager работает в админке (~15 мин)
🖥 Админка в новом браузере / incognito.
Prerequisites
- Manager создан в Phase 2
Шаги
- 5.1 Logout Franchise → Login под Manager (manager@test.local)
- 5.2 Открыть Dashboard — проверить что отображается без ошибок
- 5.3 Открыть Торговые точки → должна быть видна своя ТТ (test-Точка-1)
- 🚨 BUG-014 — Manager → ТТ возвращает 403
- 5.4 Открыть Сотрудники → видны сотрудники своей ТТ (Cashier Петров П.П.)
- 5.5 Открыть Каталог (Товары/Категории) → read-only доступ
- 5.6 Открыть Склад → должны быть доступны Приёмки/Списания/Остатки своей ТТ
- 🚨 BUG-016 — Manager → Склад → 403
- 5.7 Открыть Заказы → должны быть видны заказы своей ТТ
- 🚨 BUG-017 — Manager → Заказы → 403
- 5.8 Открыть Стоп-листы → должна мочь ставить/снимать на своей ТТ
- 🚨 BUG-049 — Стоп-листы → 403 у Manager
Expected по итогу Phase 5
- Manager видит свою ТТ и может работать в её разделах
- Не видит данных других ТТ или франшиз
Системная проблема RBAC
Phase 5 практически вся блокируется через 4 разных 403-бага. Это не отдельные баги, а класс багов — RBAC scope-логика для Manager-роли не работает. Приоритет фикса = 1.
Phase 6 — Cashier на POS (~20 мин)
💳 POS-терминал.
Prerequisites
- Cashier создан в Phase 2 с PIN
- POS-терминал привязан к ТТ в Phase 1
- Прейскурант привязан к ТТ в Phase 4
- Каталог заполнен в Phase 3
Шаги
- 6.1 Открыть POS-приложение → ввести PIN Cashier (Петров П.П.)
- 6.2 Login прошёл → главный экран кассы
- 6.3 Открыть смену → проверка ФЯ → X-отчёт пустой
- 6.4 Открыть меню — видны 3 товара с ценами из прейскуранта (Бургер 350, Капучино с опциями, Вода 80)
- 6.5 Создать заказ: добавить Бургер × 1 + Бутылка воды × 1
- 6.6 Total в чеке = 350 + 80 = 430₽
- 6.7 Нажать «Оплатить» → выбрать «Карта»
- 6.8 Эмулировать оплату (тестовая карта эквайринга)
- 6.9 Чек печатается через ФЯ → фискализируется (ФН → ОФД)
- 6.10 Заказ переходит в статус
ready(без KDS) илиin_progress(если в Phase 6 включена кухня) - 6.11 Cashier нажимает «Выдан клиенту» → заказ
closed
Expected по итогу Phase 6
- Один успешный заказ оплачен и закрыт
- Чек напечатан и фискализирован
- Заказ виден в админке (см. Phase 7)
Phase 7 — Закрытие дня (~10 мин)
💳 POS + 🖥 Админка.
Prerequisites
- Минимум 1 закрытый заказ в Phase 6
Шаги
- 7.1 На POS — «Закрыть смену» → Z-отчёт через ФЯ
- 7.2 Сверка наличных по итогу X-отчёта (опц.)
- 7.3 Logout Cashier с POS
- 7.4 В админке под Franchise → открыть Shift Report за сегодня
- 7.5 Verify: выручка = 430₽, заказов = 1, топ товаров корректный (Бургер, Вода)
- 7.6 Нажать «Export CSV» → файл скачивается
- 🚨 BUG-024 — Экспорт CSV → 422
- 7.7 Открыть Заказы → видеть закрытый заказ от Cashier
- 7.8 Открыть Активность сотрудников → Cashier Петров П.П. с отработанными часами
Expected по итогу Phase 7
- Смена закрыта Z-отчётом
- Финансовая сводка корректная
- Заказы и активность видны в админке
Score (итог прогона)
Отметь по каждой фазе сколько шагов прошли чисто. Заблокированные (исходно) считай как ❌.
| Phase | Шагов всего | ✅ Прошло | ❌ Упало | ⚠️ Заблокировано |
|---|---|---|---|---|
| 1. Setup точки | 9 | |||
| 2. Кадры | 6 | |||
| 3. Каталог | 7 | |||
| 4. Прейскурант, меню | 8 | |||
| 5. Manager в админке | 8 | |||
| 6. Cashier на POS | 11 | |||
| 7. Закрытие дня | 8 | |||
| Итого | 57 |
Acceptance criteria
- MVP-готовность: Phase 1, 2, 3, 4, 6, 7 — чистые. Phase 5 (Manager в админке) — допустимо отложить если только Franchise работает на этой стадии
- Production-готовность: все 7 фаз чистые
Если упало — что делать
- Зафиксировать на каком шаге, скопировать запрос/ответ если API
- Если новый баг — завести в Google Docs по шаблону, присвоить
BUG-NNN - Если совпадает с известным — добавить «воспроизведено в RUN-{date}» к существующему багу в Google Docs
- Решить: продолжить дальше (если шаг не блокирует следующий) или стоп, ждать фикс (если блокирует)
Связанные сценарии
- Админка ↔ KDS ↔ POS — расширение Phase 6 если включаем кухню (KDS-станции, повар отмечает «готов», multi-station routing)
Связанные зоны
Каждая фаза опирается на функционал из соответствующей зоны:
- Phase 1 → Зона 03 — ТТ
- Phase 2 → Зона 02 — Организация
- Phase 3 → Зона 04 — Каталог
- Phase 4 → Зона 04 — Каталог
- Phase 5 → Зона 01 — Авторизация и доступ + RBAC matrix
- Phase 6 → Зона 07 — Заказы и операции
- Phase 7 → Зона 06 — HR-цикл + Зона 07