Сценарий: Chain Admin → POS → KDS

Сквозная цепочка: каталог/настройки во франш-админке → меню и оформление заказа на POS → отображение и прогон статусов на KDS. Используется как regression-сценарий после любого изменения в Catalog/Order Service, POS или KDS.

Полная версия со всеми steps: archive/chain-admin-pos-kds-original.md Этот файл: progress-tracker + ссылки на zones по этапам.

Прогресс

Прогнано: 21 / 60. Последний прогон: 2026-05-05-e2e

Этап 1 — Admin → POS пропагация (zones/catalog/*)

TCОписаниеStatusFindingsZone
TC-CHAIN-001Создание товара✅ passproducts
TC-CHAIN-002PATCH name (rename)✅ passproducts
TC-CHAIN-003PATCH base_price❌ failF6aproducts
TC-CHAIN-004DELETE soft-delete❌ failF9products
TC-CHAIN-005Restore soft-deleted⛔ skipped(зависит от F9)products
TC-CHAIN-006Toggle available_in_all_stores❌ failF8products
TC-CHAIN-007is_admin_only⏳ admin part passproducts
TC-CHAIN-008is_open_price⏳ admin part passproducts
TC-CHAIN-009is_by_weight⏳ admin part passproducts
TC-CHAIN-010is_alcohol / is_tobacco⏳ admin part passF35 (mutex)products
TC-CHAIN-011Деактивировать категорию⚠ inconclusiveF10 (GET cat 404)categories
TC-CHAIN-012Изменить порядок категорий◯ todocategories
TC-CHAIN-013Привязка модификатора✅ passF41 (PATCH product не работает)modifiers
TC-CHAIN-014min/max enforce на POS✅ pass (UI)F30, F31, F32, F33, F34 (backend), F42 (UX)modifiers
TC-CHAIN-015Удалить группу — позиция остаётся◯ todoF45 (orphan)modifiers
TC-CHAIN-016Изменить цену опции✅ passF44 (POST mod groups не пишет)modifiers
TC-CHAIN-017Прейскурант с override⛔ blockedBUG-051, F1price-lists
TC-CHAIN-018Изменение цены → новые заказы✅ passprice-lists
TC-CHAIN-019Цена 0◯ todoprice-lists
TC-CHAIN-020Стоп товара✅ passstop-lists
TC-CHAIN-021Снятие со стопа✅ passstop-lists
TC-CHAIN-022Стоп категории⚠ backend pass, UI blocked F40F39stop-lists
TC-CHAIN-023Снятие категории со стопа⚠ backend passstop-lists
TC-CHAIN-024KDS settings update✅ passF40 (menu-availability inverted)menu-availability

Этап 2 — POS → KDS маршрутизация (zones/kds/, zones/pos/)

TCОписаниеStatusFindingsZone
TC-CHAIN-0301 кухонный товар → KDS-Кухня✅ passrouting
TC-CHAIN-031Только не-кухонные → не на KDS✅ passrouting
TC-CHAIN-032Микс кухня+бар⛔ blockedF2, F3, F40routing
TC-CHAIN-033Микс кухня+не-кухонный✅ pass (UX «поз. на других станциях»)routing
TC-CHAIN-034Модификаторы на KDS✅ passrouting
TC-CHAIN-035Комментарий к позиции на KDS◯ todorouting
TC-CHAIN-036Стол/номер заказа на KDS◯ todorouting
TC-CHAIN-037qty > 1 на KDS◯ todorouting
TC-CHAIN-038Race на 2 POS одновременно⛔ blocked (нужен 2-й POS)orders
TC-CHAIN-039Multi-tenancy ТТ-A vs ТТ-B⏳ partial (через RBAC orders)auth-rbac
TC-CHAIN-040Изменить kitchen_station_id после in_progress◯ todorouting
TC-CHAIN-041Удалить позицию в new — KDS обновляется◯ todorouting
TC-CHAIN-042Добавить позицию в new — KDS обновляется◯ todorouting
TC-CHAIN-043KDS оффлайн → reconnect → catch-up◯ todorouting
TC-CHAIN-044Refresh KDS — состояние восстанавливается◯ todorouting

Этап 3 — Status flow (zones/orders/lifecycle.md)

TCОписаниеStatusFindingsZone
TC-CHAIN-050new → in_progress (на POS / KDS)⚪ N/A by-designF19 (сразу accepted)lifecycle
TC-CHAIN-051in_progress → ready (KDS «Готово»)✅ passlifecycle
TC-CHAIN-052ready → closed (выдача + оплата)⚠ backend passF25, F26lifecycle
TC-CHAIN-053Отмена в new✅ backend (API)F27 (UI нет)lifecycle
TC-CHAIN-054Отмена в in_progress◯ todoF27lifecycle
TC-CHAIN-055Отмена closed → отказ◯ todolifecycle
TC-CHAIN-056Add позицию в in_progress → отказ◯ todolifecycle
TC-CHAIN-057KDS откат «Готово»⚪ N/A by-designF20lifecycle
TC-CHAIN-058Per-position статусы✅ passlifecycle
TC-CHAIN-059Заказ остаётся accepted пока не все ready✅ passF29lifecycle
TC-CHAIN-060Race: 2 KDS жмут «Готово»◯ todolifecycle
TC-CHAIN-061Per-day numbering на полночь◯ todoF24 (пропуски)lifecycle

Этап 4 — Денормализация (zones/orders/denormalization.md)

TCОписаниеStatusFindingsZone
TC-CHAIN-070Денорм имени✅ passdenormalization
TC-CHAIN-071Денорм цены✅ passdenormalization
TC-CHAIN-072Денорм цены опции⚠ partial — нашли F44denormalization
TC-CHAIN-073Soft-delete товара после создания заказа◯ tododenormalization
TC-CHAIN-074Удалить группу модификаторов после заказа◯ todoF45denormalization
TC-CHAIN-075Переименование категории — category_path◯ tododenormalization
TC-CHAIN-076Shift-report за день⛔ blockedF15denormalization

Этап 5 — RBAC (zones/auth-rbac/*)

TCОписаниеStatusFindingsZone
TC-CHAIN-080Cashier ТТ-A POST orders ТТ-B⏳ partialaccess-matrix
TC-CHAIN-081Cashier ТТ-A GET orders ТТ-B✅ passaccess-matrix
TC-CHAIN-082KDS-оператор ТТ-A видит только ТТ-A◯ todoaccess-matrix
TC-CHAIN-083Manager POST /complete✅ passaccess-matrix
TC-CHAIN-084Manager mutation без permission → 403✅ passaccess-matrix
TC-CHAIN-085Cashier cancel чужого заказа◯ todoaccess-matrix
TC-CHAIN-086Franchisee cross-LE → 403⛔ blocked (нет creds Franchisee)access-matrix
TC-CHAIN-087PIN без pos.access◯ todoaccess-matrix
TC-CHAIN-088Cashier admin login отказан✅ pass by-designF12access-matrix
(extra)Курьер RBAC расширенный (read-leak)❌ failF13 (7 эндпоинтов)access-matrix

Этап 6 — Edge / exploratory

TCОписаниеStatusFindingsZone
TC-CHAIN-100Пустой заказ → попытка оплаты◯ todoorders
TC-CHAIN-10150+ позиций◯ todoorders
TC-CHAIN-102Длинный комментарий◯ todoorders
TC-CHAIN-103Длинная строка без пробелов◯ todoorders
TC-CHAIN-104POS оффлайн → создание заказа◯ todoorders
TC-CHAIN-105Catalog Service down◯ todoorders
TC-CHAIN-106Order Service down◯ todoorders
TC-CHAIN-107Сменить kitchen_station_id во время in_progress◯ todorouting
TC-CHAIN-108Рестарт pos-bff (рестарт WS)◯ todorouting
TC-CHAIN-109KDS показывает заказ → soft-delete товара◯ todorouting
TC-CHAIN-110qty=0/отрицательное на штучном◯ todoorders
TC-CHAIN-111Цена опции NULL → выбор⚠ см. F44modifiers
TC-CHAIN-112Часы POS уехали → создание◯ todoorders

Условные обозначения

  • pass — кейс прошёл успешно
  • fail — нашли баг (см. колонку Findings)
  • partial — частично прошёл / нашли что-то незавершённое
  • blocked — невозможно прогнать на текущем стенде (нужны вводные)
  • partial pass — прогнали частично (например только admin часть, POS-side не подтверждена)
  • todo — не запускали ещё
  • N/A by-design — кейс неприменим в текущей архитектуре