Багфиксы — стадия 5 (2026-05-07)
Продолжение серии stage1/2/3/4. Тема дня — прогон сценария «официант → стол → кухня → выдача» перед демо клиенту. Прогон через web-POS + KDS на ПК (нативная сборка) + админку.
Стенд: https://erp-test.nirbi.ru/admin/ и /pos/. Аккаунт: demo3@nirbi.ru / <password — см. private/creds.md> (отдельная свежая франшиза для онбординга с нуля). KDS — нативное desktop-приложение на ПК.
⚠️ КОНТРАКТ ЧТЕНИЯ — ВАЖНО
Документ содержит два вида находок, не путайте:
- 🐛 BUG — есть однозначная сломанная функциональность, известно «что починить». Можно фиксить.
- 💡 PROPOSAL — архитектурный/UX-вопрос, требует продуктового решения. Перед любым изменением — обсуждение с продактом / архитектором. НЕ ФИКСИТЬ АВТОМАТИЧЕСКИ.
Если этот документ обрабатывает Claude Code — по разделу PROPOSAL не вызывайте инструменты редактирования, только покажите вопросы пользователю.
📋 Сводка найденного
🐛 BUG (фиксить):
| ID | Severity | Кратко | Зона |
|---|---|---|---|
| F66 | 🟡 Major | Текст «Только менеджеру ТТ» — пользователю, который и есть менеджер. Misleading | pos/tables |
| F67 | 🔴 Critical | Имя официанта не появляется автоматически нигде (POS-карточка стола, страница заказа, KDS) | pos/tables, orders/lifecycle, kds |
| F69 | 🔴 Critical | Z-отчёт смены формируется без предупреждения о висящих неоплаченных заказах | pos/shift, orders/lifecycle |
| F70 | 🟡 Major | В POS «Назначить официанта» показывает всех сотрудников с pos.access, не только официантов | pos/tables, auth-rbac |
| F71 | 🟢 Minor | Резерв стола в админке через нативный prompt(). Зависит от PROPOSAL-1 | admin/stores/tables |
| F72 | 🟡 Major | На KDS подпись стола = последние 2 hex-символа table_id (FB), а не реальный номер №26 | kds, orders/lifecycle |
| F73 | 🟡 Major | Таймер на KDS «через 114 мин» для блюда со временем приготовления 10 — нерелевантно. Тянется из порогов станции, не из assembly_time. Связано с F61 | kds, catalog/products |
| F74 | 🟡 Major | На схеме зала только 2 цвета (зелёный/красный). Нет визуальной индикации «готово к выдаче». Зависит от PROPOSAL-5 | pos/tables, orders/lifecycle |
| F75 | 🔴 Critical | Заказ автоматически становится «Выдан» когда повар закрыл кухонные позиции. Никто блюдо не выдавал. Связано с F25, F51 | orders/lifecycle, pos/tables |
🔁 Подтверждения вчерашних находок (без новых ID):
- F56 — на KDS видна некухонная позиция (Капучино) — снаружи как «+1 поз. на других станциях», внутри раздел «Без станции» с серой неактивной карточкой. Воспроизводится в актуальной сборке.
- F61 — единицы
assembly_timeбез явного unit. Сегодня дополнительно проявилось в таймере на KDS (см. F73).
💡 PROPOSAL (требуют решения, НЕ фиксить):
| ID | Кратко | Связанные BUG |
|---|---|---|
| P1 | Оставлять ли оперативные действия со столами в админке? | F66, F71 |
| P2 | Как хранить связь «заказ ↔ официант» для отчётности | F67 |
| P3 | Что делать с открытыми заказами/столами при закрытии смены | F69 |
| P4 | Резерв стола: модель и UX | F71 |
| P5 | Явная фаза «Готов к выдаче → Выдан клиенту» в lifecycle заказа | F25, F51, F74, F75 |
🔴 Critical
F67 — Имя официанта не появляется автоматически нигде (POS, страница заказа, KDS)
Официант на POS выбирает свободный стол → «Открыть заказ» → пробивает позиции → отправляет на кухню. Стол на схеме зала становится «Занят» (красный), но в карточке стола имя официанта не появляется (поле «Кто обслуживает» пустое). На странице заказа №007 в POS — «ОФИЦИАНТ: не назначен». На KDS у заказа имени официанта тоже нет нигде.
Чтобы появилось имя — кто-то должен зайти в карточку стола в POS и явно «Назначить официанта». На рабочей точке этим вручную никто не занимается.
Эффект: менеджер на схеме зала не видит, кто из официантов работает за каким столом → не может координировать смену. Передача стола другому официанту — непонятно, у кого забирать. Отчёты по официантам строить не на чем (см. P2). Повар на KDS не знает, кому позвонить если возник вопрос по блюду.
Где смотреть:
- pos-bff
POST /pos/api/v1/pos/orders/open— при создании заказа сtable_idустанавливатьtables.current_waiter_id = <текущий пользователь>, если оно null - БД: поле
tables.current_waiter_idуже существует, но не пишется при открытии заказа - KDS контракт: проверить, передаётся ли имя официанта в карточку заказа на KDS (если planned, но не передаётся — pos-bff/order-service отдают неполный payload)
- Связано с PROPOSAL-2 (надо ли вообще хранить waiter на столе или дублировать на заказе)
F69 — Z-отчёт смены формируется без предупреждения о висящих неоплаченных заказах
Кассир в конце дня жмёт «Закрыть смену» → видит экран Z-отчёта с «Продажи: 0 шт · 0,00 ₽» → жмёт «Сформировать Z-отчёт» → смена закрыта. Но в реальности на ТТ за столом висит непробитый/неоплаченный заказ на 670 ₽ (status accepted, paid_at: null). Стол остаётся occupied.
Эффект: на следующий день новый кассир видит «занятый» стол с непонятным заказом из вчера, не знает что с ним делать. Бухгалтерия видит «по факту еду съели» (в KDS заказ был), но в выручке его нет. Кассир уходит домой, не подозревая что что-то не так.
Воспроизведение:
- Открыть смену в POS
- За столом открыть заказ, отправить на кухню (но не оплачивать)
- Жмём «Закрыть смену»
- На экране Z-отчёта — продажи 0₽, никаких предупреждений
- «Сформировать Z-отчёт» → смена закрыта
- Через API: заказ всё ещё
status: accepted, paid_at: null, столstatus: occupied
Где смотреть:
- pos-bff endpoint закрытия смены — добавить проверку открытых заказов (
status IN (new, accepted, ready)&&store_id) - Экран
/pos/shift/close— добавить блок «Открытые заказы» перед кнопкой Z-отчёта с блокирующим предупреждением - Связано с PROPOSAL-3 (полный сценарий передачи смены)
F75 — Заказ автоматически становится «Выдан» после готовности кухни — без действия официанта
Когда повар на KDS отмечает «Готово» на последней кухонной позиции заказа, в POS статус заказа сразу становится «Выдан». Никто не нажимал «Выдать клиенту», блюдо не унесли на стол гостя — а в системе оно уже «вручено». При этом заказ ещё не оплачен (висит «Ожидает оплаты на Касса 3в1»).
Эффект:
- Audit trail неверный: в БД написано «выдан» в момент готовности, не в момент реального handover
- Если блюдо потерялось на раздаче или клиент не пришёл — следов в системе нет
- Время реального вручения клиенту нигде не фиксируется → нельзя посчитать «время от заказа до подачи»
- Конфликт состояний: заказ «Выдан», но не оплачен, стол всё ещё «Занят»
Воспроизведение:
- Создать заказ с кухонными позициями (Цезарь, Греческий) + некухонной (Капучино)
- Отправить на кухню
- На KDS: «В работу» на каждой позиции, потом «Готово» на каждой
- После последнего «Готово» — открыть страницу заказа в POS
- Видим статус «Выдан» автоматически
Где смотреть:
- Order-service: логика перехода статуса заказа когда последний
kitchen_status: ready - Не фиксить точечно «не переводить в Выдан автоматически». Это локально решит F75, но не закроет F25 / F51 / F74 системно — это архитектурный вопрос (PROPOSAL-5): нужна явная фаза
ready → handover → closed
🟡 Major
F66 — Текст «Действие доступно только менеджеру ТТ» — пользователю, который уже является менеджером
При попытке сменить официанта на столе, если у роли пользователя нет нужного permission’а, POS показывает сообщение «Действие доступно только менеджеру ТТ». На практике это может увидеть пользователь, который и есть «Менеджер» (по названию роли) — реально проверка идёт по конкретному permission’у pos.settings.edit, а не по имени роли.
Эффект: пользователь читает «нужна роль менеджера», смотрит на свою — там уже «Менеджер», решает что приложение сломано, идёт в техподдержку.
Воспроизведение:
- Создать кастомную роль «Менеджер» с типичным набором POS-прав, но без
pos.settings.edit - Назначить её сотруднику
- Войти в POS под этим сотрудником, открыть стол с активным заказом
- Нажать «Сменить официанта» → выбрать любого
- Видим ошибку «Действие доступно только менеджеру ТТ»
Где смотреть:
- pos-bff handler для
PATCH /pos/api/v1/pos/tables/{id}/waiter— error response при недостатке прав - Заменить код
MANAGER_REQUIREDнаINSUFFICIENT_PERMISSIONSс указанием требуемого permission’а в тексте - Связано с PROPOSAL-1 (нейминг permission’а — отдельный вопрос:
pos.settings.editотвечает за управление столами, что неинтуитивно — стоит переименовать вpos.tables.manage)
F70 — В POS «Назначить официанта» показывает всех сотрудников с POS-доступом, не только официантов
Менеджер на POS открывает стол → «Назначить официанта» → видит 8 человек: Demo3 Owner (Администратор), Анна Админова (Админ), Борис Баристов (Бариста), Иван Иванов (Админ), Кира Кассирова (Кассир), Михаил Менеджеров (Менеджер), Олег Официантов (Официант), Пётр Поваров (Повар). Должны быть только сотрудники с ролью «Официант».
Эффект: менеджер легко тыкает не туда (особенно при схожих именах) — назначает повара / бариста / админа на стол. У этого «официанта» появляются столы в его POS-сессии. Если по этому потом строится отчёт — в отчёте «продажи официанта» появляется повар.
Где смотреть:
- pos-bff endpoint списка сотрудников для модала «Назначить официанта»
- Фильтрация: либо по role-id с конкретной ролью «Официант» (если решено хранить как системную), либо по permission’у уровня официанта
- Связано с PROPOSAL-1 (где определять «кто официант»: в коде, в роли, в флаге сотрудника)
F72 — KDS показывает «Стол FB» вместо номера стола №26
На экране KDS у заказа в подписи стола отображается FB — это последние 2 символа table_id (67e0aa8e-99b9-4c1d-acbf-b311d0079cfb), а не реальный номер стола (№26). Повар видит «Стол FB» и не понимает, за каким столом готовить.
Эффект:
- Повар не может соориентироваться: «Стол FB» в реальном зале не существует
- При нескольких параллельных заказах разные столы выглядят как случайные двухсимвольные коды (
FB,7C,4A…) - Замедляет работу кухни, увеличивает риск перепутать заказы
Где смотреть:
- KDS-сборка / контракт
pos-bff → KDSдля поля стола: вместо короткой формы UUID передаватьtables.number(илиlabelесли задан) - Order-service: убедиться, что в WebSocket/REST для KDS отдаётся реальный номер стола, а не id
F73 — Таймер на KDS показывает «через 114 мин» для блюда со временем готовки 10
На главном экране KDS у карточки заказа отображается «через 114 мин» (время идёт на убывание). Для блюда с заявленным временем приготовления 10 (мин/сек?) это нерелевантное число — повар не понимает, к чему таймер.
Похоже, KDS берёт время не из assembly_time блюда, а из yellow_threshold_minutes / red_threshold_minutes станции «Кухня» (default ~120 минут) — отсчитывает «до жёлтого предупреждения станции».
Эффект:
- Повар видит «осталось 114 мин» — приоритизирует другие заказы как «более срочные»
- Нет связи с реальным
assembly_timeблюда - В реальной кухне таймер должен отражать «успеваешь / не успеваешь приготовить» по конкретному блюду
Связано с F61 (stage4) — единицы assembly_time без явного unit (UI «N мин», в БД _seconds). Если KDS пытается читать assembly_time и трактует не в тех единицах — это часть проблемы.
Где смотреть:
- KDS-сборка: что именно показывается в таймере, какое поле
- Связка
kitchen_stations.yellow_threshold_minutes↔ KDS UI - Зависит от решения по F61 (в каких единицах хранится
assembly_time)
F74 — На схеме зала нет визуальной индикации «готово к выдаче» — стол всегда красный пока занят
На схеме зала в POS используется только 2 цвета: зелёный = свободен, красный = занят. Никакого 3-го цвета (например жёлтого) для «есть готовые позиции, нужно выдать клиенту» нет. Повар на KDS закончил приготовление — стол на схеме зала остаётся таким же красным, как когда блюдо ещё готовилось.
Эффект:
- Официант, обходя зал, не видит на каком столе уже готово к выдаче — приходится открывать каждый красный стол по очереди
- Готовое блюдо стоит на раздаче и остывает, пока официант не догадается проверить
- Снижается качество обслуживания и увеличивается время выдачи
Где смотреть:
- POS схема зала — компонент рендера стола
- Логика цвета: учитывать
current_order_id+kitchen_statusвсех позиций (если хотя бы однаreadyи заказ не выдан — другой цвет) - Зависит от PROPOSAL-5 (фаза handover). До решения по нему — не вводить новый цвет точечно
🟢 Minor
F71 — Резерв стола в админке открывает нативный браузерный prompt() с одним полем
В админке Карточка ТТ → Столы → выбрать свободный стол → "Забронировать" открывается стандартный браузерный диалог с подписью «Примечание брони (кто, на сколько)» и одной строкой ввода. Без полей гость / время / число человек / телефон. Без UI приложения.
Эффект: выглядит как баг сайта, не как функция приложения. Пользователь в недоумении что вводить в одно поле.
Где смотреть:
- Admin SPA, компонент управления столами в карточке ТТ
- ВАЖНО: до решения по PROPOSAL-1 (оставлять ли оперативные действия со столами в админке вообще) — не дорабатывать резерв здесь. Если решение «убрать оперативку из админки» — баг закрывается удалением кнопки. См. также PROPOSAL-4 (модель резерва, если оставляется).
💡 PROPOSAL — требуют решения, НЕ ФИКСИТЬ АВТОМАТИЧЕСКИ
⚠️ Этот раздел — НЕ задачи на фикс. Это вопросы к продакту/архитектору. Если читаете через Claude Code или другой автоматизированный инструмент — не вызывайте инструменты редактирования, только обсудите с командой.
PROPOSAL-1 — Оставлять ли оперативные действия со столами в админке?
Сейчас: в Карточка ТТ → Столы в админке есть кнопки:
- «Назначить официанта» (PATCH endpoint в admin не существует — 404)
- «Освободить стол»
- «Забронировать» (через
prompt()— F71) - «Сменить статус»
Что предложено: оставить в админке только структурное управление (number / label / capacity / position_x/y / удалить стол). Оперативные действия (кто работает за столом, бронь, занят/свободен) — только в POS.
Почему: оперативное состояние зала — ответственность POS (текущая смена, кассир/менеджер на терминале). Админка управляет каталогом, ценами, расписанием. Аналоги (iiko, R-Keeper, Poster) — назначение официанта и бронь делаются в POS. Опционально — read-only схема зала в админке для офисного управляющего.
Что решить:
- (а) Убрать оперативные кнопки из админки — UI становится чисто структурным.
- (б) Оставить — но тогда нужен полноценный UX (модал брони с полями, фильтрация официантов, права read/write).
- (в) Read-only схема в админке для офисного управляющего, операции — только из POS.
Что разработчику делать до решения:
- НЕ фиксить admin endpoint для назначения официанта (тот, что сейчас 404)
- НЕ дорабатывать резерв через
prompt()(F71) - НЕ удалять кнопки самостоятельно
**Также по неймингу permission'ов:** сейчас pos.settings.editотвечает за управление столами. Это неинтуитивно. Стоит ввести отдельныйpos.tables.manageилиtables.assign_waiter` и обновить RBAC-матрицу. Но это часть общего дизайна прав — обсуждать вместе.
Связанные BUG: F66, F70, F71
PROPOSAL-2 — Как хранить связь «заказ ↔ официант» для отчётности
Сейчас: в схеме orders нет поля waiter_id. Есть только:
created_by— кто создал заказ (может быть кассир, не обязательно официант)accepted_by— кто принялtables.current_waiter_id— кто сейчас за столом (живёт только пока стол занят)
При смене официанта посередине обеда / закрытии стола — информация о том, кто обслуживал этот заказ, теряется.
Что предложено варианты:
- (а) Добавить
orders.waiter_id(snapshot на момент создания/закрытия заказа) - (б) Вести отдельную таблицу истории
order_waiter_assignments— кто когда обслуживал - (в) Ограничиться
created_by— кто открыл, тому и идёт продажа (даже если стол передавали)
Что решить:
- Какая модель отчёта «продажи по официантам»? Один на заказ или несколько с распределением?
- Влияет на формулы зарплаты, расчёт чаевых, KPI официантов
- Если бизнес-кейс «передача стола между официантами» важен — нужна история (б)
- Если упрощённый формат «кто открыл = тот и работал» — достаточно (в)
Что разработчику делать до решения:
- НЕ добавлять поле
waiter_idвordersбез согласования - НЕ менять источник для отчёта по официантам (если он есть)
Связанные BUG: F67
PROPOSAL-3 — Что делать с открытыми заказами/столами при закрытии смены
Сейчас: смена закрывается беспрепятственно (см. F69). Открытые заказы остаются accepted, paid_at: null, столы остаются occupied. Передача между сменами не предусмотрена.
Что предложено варианты:
- (а) Минимум: блокирующее предупреждение «N открытых заказов» (это покрывает F69)
- (б) Принудительно закрывать заказы при закрытии смены (с пометкой «закрыт принудительно»)
- (в) Передача заказов на следующую смену (новый кассир принимает «дежурство»)
- (г) В выходной день (последняя смена) — особый сценарий: нужно ли что-то особое?
Что решить:
- Какой бизнес-флоу передачи смены в реальной кофейне/ресторане у клиента?
- Должен ли уходящий кассир обязательно закрыть/отменить все заказы перед уходом?
- Или приходящий кассир принимает open orders как часть приёма дежурства?
Что разработчику делать до решения:
- Минимум — реализовать F69 (блокирующее предупреждение)
- Большие изменения (автозакрытие, передача) — НЕ делать без решения продукта
Связанные BUG: F69
PROPOSAL-4 — Резерв стола: модель и UX
Сейчас: резерв реализован минимально — tables.reserved_note (одна строка) + reserved_until. UI в админке через prompt() (см. F71). UX в POS не проверен.
Что предложено: полноценная модель резерва, если функция нужна:
- Поля: гость (имя или ссылка на customer), телефон, число человек, время начала, длительность, статус (создан / клиент пришёл / no-show / отменён)
- UI: кастомный модал, не
prompt() - Уведомления: оповещать назначенного официанта при наступлении времени резерва
- Пересечения: блокировать резерв на занятое время / пересекающиеся столы
- Привязка к CRM: автоматически создавать запись клиента
- Перенос: возможность отодвинуть время
Что решить:
- Нужен ли резерв на этапе MVP вообще? (Может быть out-of-scope для первого релиза)
- Если нужен — какой минимальный функционал?
- Где живёт UI: админка, POS, оба?
- Связь с CRM (если она есть на этом этапе)
Что разработчику делать до решения:
- НЕ дорабатывать
prompt()в админке (F71) - НЕ расширять схему
tablesполями резерва без обсуждения
Связанные BUG: F71
PROPOSAL-5 — Явная фаза «Готов к выдаче → Выдан клиенту» в lifecycle заказа
Сейчас: в lifecycle заказа нет явной фазы handover между «готов» и «закрыт». Симптомы во многих местах:
- F75 (сегодня) — заказ автоматически становится «Выдан» когда повар закрыл кухню; никто его не выдавал
- F25 (stage4) — после оплаты заказ исчезает с активного списка POS, найти можно только в «Возвратах»
- F51 (stage4) — вкладка «Готовы» на POS смешивает «готов к выдаче» и «уже закрыт»
- F74 (сегодня) — на схеме зала нет визуальной индикации «готово к выдаче», стол остаётся красным
Все четыре — симптомы одной архитектурной проблемы: фазы handover в системе нет.
Что предложено: ввести явную фазу ready (всё готово к выдаче, не унесено) и явное действие «Выдать клиенту»:
- Поле
orders.handed_over_at: timestamp NULL(сейчас, видимо, заполняется неявно или нет) - Статус
readyпосле готовности всех кухонных позиций — заказ не закрывается, но и не «выдан» - Кнопка «Выдать клиенту» на POS (карточка заказа / на столе) — переводит в
handed_over(записываетhanded_over_at) - На схеме зала — отдельный цвет/индикатор для «готов к выдаче» (фикс F74)
- Закрытие заказа (
closed) — после оплаты И после handover, не одного из них
Что решить:
- Принять архитектурно: добавить фазу
ready → handed_over → closed? - Или: заказ закрывается строго оплатой (handover отдельно учитывать только метрикой)?
- Когда происходит
closed— после оплаты ИЛИ после handover ИЛИ оба обязательно? - В случае delivery (курьер) — фаза
in_deliveryуже есть, не сломать совместимость - Влияние на отчётность: «время от заказа до подачи», «время простоя на раздаче»
Что разработчику делать до решения:
- НЕ менять lifecycle заказа точечно (например «не переводить в Выдан автоматически» — это локально решит F75, но не закроет F25/F51/F74 системно)
- НЕ добавлять кнопку «Выдать клиенту» в POS без понимания общей модели
- F74 (цвет на схеме зала) — зависит от наличия фазы
ready. До решения — не вводить новый цвет
Связанные BUG: F25, F51, F74, F75
🔗 Связи между находками (важно для приоритизации)
- F25 + F51 + F74 + F75 + PROPOSAL-5 — все четыре про отсутствующую фазу handover. Решать через PROPOSAL-5 системно, не латать локально каждый симптом.
- F73 + F61 — F73 (таймер 114 мин на KDS) тянет проблему из F61 (единицы
assembly_time). Если решить F61 — таймер на KDS встанет ровно. - F66 + F70 + F71 + PROPOSAL-1 — все три бага связаны с архитектурным вопросом «оперативка в админке или нет». До решения — не «чинить» admin endpoint назначения официанта.
- F67 + PROPOSAL-2 — F67 решается локально (auto-link
current_waiter_idпри открытии заказа), но долгосрочное решение через PROPOSAL-2 (как хранить связь «заказ ↔ официант»). - F69 + PROPOSAL-3 — F69 минимальный фикс «не дать закрыть смену с висящим заказом», PROPOSAL-3 — полный сценарий передачи смены.
🎯 Приоритизация для разраба
Если время ограничено, начинать с самого болезненного:
- F75 — заказы помечаются как «Выдан» без выдачи (audit trail сломан, бухгалтерия искажена). НО — это PROPOSAL-5, нужно сначала продуктовое решение.
- F69 — закрытие смены теряет заказы. Минимальный фикс (предупреждение) можно делать прямо сейчас.
- F67 — имя официанта нигде не видно. Локальный фикс (auto-link) можно делать сейчас, не дожидаясь PROPOSAL-2.
- F72 — на KDS подпись стола нечитаемая. Чисто фронтовый фикс.
- F66, F70 — фиксить вместе с архитектурным решением по PROPOSAL-1.
PROPOSAL’ы 1-5 — выносить на встречу с продактом/архитектором, не пилить вслепую.
📌 Что Александр (POS-desktop тестировщик) проверит после фиксов
Когда придёт сборка с фиксами F67/F69/F70/F72/F73/F74:
- Открыть стол как официант → имя официанта появилось на столе автоматически (POS + KDS) (F67)
- Закрыть смену с открытым заказом — должно блокировать с предупреждением (F69)
- Назначить официанта на стол — в выпадашке только официанты (F70)
- На KDS у заказа подпись стола = реальный номер, не двухсимвольный код (F72)
- На KDS таймер = реальное время приготовления блюда, не порог станции (F73)
- На схеме зала — стол меняет цвет когда позиции готовы (F74, зависит от PROPOSAL-5)
Для F75 — отдельный PROPOSAL-5 (архитектурное решение). Александр проверит после когда модель определена.
📂 Источники
- Сессия:
sessions/2026-05-07-waiter-table-walkthrough.md - Findings index:
findings.md(F66, F67, F69-F75 добавлены сегодня) - Прошлые стадии:
archive/BUGS-FOR-DEV-stage{1,2,3,4}.md - Зоны:
zones/stores/overview.md,zones/orders/lifecycle.md,zones/pos/orders.md,zones/kds/overview.md,zones/auth-rbac/index.md - Стенд:
https://erp-test.nirbi.ru/admin/и/pos/. Аккаунтdemo3@nirbi.ru / <password — см. private/creds.md>(отдельная тестовая франшиза).