nexx-api.srv.acebox.eu, пароль у всех demo-pass-123):demo.context.switcher@example.com — менеджер 3 компаний: Demo Buyer SIA (покупатель) · Demo Supplier Food SIA (поставщик) · Demo Both Trade SIA (оба). Активная компания переключается в меню аккаунта справа сверху.demo.onboarding.target@example.com — пустой юзер (без компаний) для онбординга и создания компании; состояние сбрасывается при пересиде.no-reply@nexx.business, проверьте «Спам»). Lursoft-автопоиск не нажимать (платная квота) — компанию заводить вручную. Действия с заказами/связями необратимы — гоняйте на ненужных демо-записях.
/auth/register. форма «Создать аккаунт» (e-mail, пароль, повтор)/auth/verify-email, текст «письмо отправлено с no-reply@nexx.business»?token. «E-mail подтверждён» → кнопка «Продолжить онбординг»/auth/login, ввести верный e-mail + неверный пароль → «Войти». остаётся на форме, ошибка «E-mail или пароль неверны»demo.context.switcher@example.com / demo-pass-123 → «Войти». сессия сохранена → рабочее пространство /app (или онбординг, если не пройден)demo.onboarding.target@example.com. шаг «Профиль» (степпер 1/5)/app с созданной компанией, роль «Администратор», карточки домена «Снабжение»/ без логина. витрина HoReCa: hero, поиск, секции, панель вертикалей; без редиректа на logindemo.context.switcher, активная компания = Demo Buyer SIA. Открыть /app/procurement/suppliers. 5 связей со статусами (активна/ожидает/приостановлена/прекращена), счётчик «N подключено»/app/sales/requests. входящие запросы, фильтр «Ожидают/Все», счётчик/app/sales/buyers) → «Приостановить» (причина) / «Возобновить» / «Отключить». статус покупателя меняется соответственно/app/catalog → у товара подключённого поставщика «В корзину». бейдж «× N» на товаре, счётчик корзины в шапке растёт/app/cart. позиции сгруппированы по поставщикам, ±количество/удаление, справа доставка (из профиля) + net/НДС/итог/app/procurement/orders → открыть новый заказ. степпер «создан», позиции/итоги, блок экспорта NEXX Engine (внешний ID), действия «Принять»/«Отменить»/app/sales/orders → заказ «создан» → деталь → «Подтвердить». степпер сдвигается на «подтверждён», действия → «Отгрузить»/«Отменить»/app/procurement/orders/<id>) в статусе «доставлен» → «Принять». степпер «принят» (финал)Модель: сначала личный аккаунт-человек (register + подтверждение e-mail), затем регистрация компании внутри онбординга.
| Экран | Путь | Как тестировать | Ожидание | Статус |
|---|---|---|---|---|
| Вход (entry) | / | Открыть корень приложения | Редирект на /auth/login, язык LV | LIVE |
| Язык | — | Переключатель LV/EN/RU справа сверху | Мгновенный перевод формы и бренд-панели; выбор запоминается (cookie) | LIVE |
| Регистрация | /auth/register | E-mail + пароль + повтор → «Создать аккаунт» | Письмо подтверждения от no-reply@nexx.business; переход на verify-email | LIVE |
| Подтверждение e-mail | /auth/verify-email | Открыть ссылку из письма (с ?token) | «E-mail подтверждён» → «Продолжить онбординг» | LIVE |
| Вход | /auth/login | E-mail + пароль → «Войти» | Сессия сохранена → /onboarding/profile | LIVE |
| Сброс пароля | /auth/password-reset | E-mail → ссылка → /set → новый пароль | Письмо со ссылкой; новый пароль применён | LIVE |
| Профиль | /onboarding/profile | Имя, фамилия, телефон → «Продолжить» | Сохраняется на бэке (PATCH /users/me/profile) | LIVE |
| Компании | /onboarding/companies | Рег.номер → «Найти автоматически» (Lursoft, LV); роль покупатель/поставщик; страна LV/LT/EE → «Добавить компанию» | Автозаполнение по Lursoft; компания создана и активна | LIVE |
| Интеграции | /onboarding/integrations | «Пропустить» | Шаг-заглушка (каталог ERP/POS — позже) | stub |
| Поставщики | /onboarding/suppliers | Поиск по каталогу → «Отправить запрос» | Запрос на связь отправлен (relationships) | LIVE |
| Подтверждение | /onboarding/confirm | Отметить согласия (правила + перс. данные обязательны) → «Создать workspace» | Согласия записаны (POST /users/me/consents) → «Workspace готов» | LIVE |
| Подключение к существующей компании | — | — | Отложено (отдельный кейс) | deferred |
/api/internal/v1/users/me/profile и /users/me/consents, задеплоены на staging + prod (миграция 0031, additive). Письма уходят с no-reply@nexx.business.Гостевой режим (без логина). Данные демонстрационные — публичного каталога-API пока нет (v1-каталог требует auth + компанию). Весь маркетплейс трилингвальный (LV/EN/RU) — переключатель в шапке витрины.
| Экран / блок | Путь | Как тестировать | Ожидание | Статус |
|---|---|---|---|---|
| Главная (витрина) | / | Открыть корень без логина | B2B-витрина HoReCa: hero + контекстный поиск, секции товары / услуги / app-market / новости на реальном дереве категорий. Больше не редиректит на login. | LIVE |
| i18n витрины | — | Переключатель LV/EN/RU в шапке (главная / каталог / карточки) | Мгновенный трилингв-перевод всего текста маркетплейса; названия категорий из общего дерева, юр.названия поставщиков остаются как есть; выбор запоминается (cookie) | LIVE |
| Верхняя панель вертикалей | — | Чипы вертикалей на главной и в каталоге | 8 вертикалей (procurementArea), лейблы трилингв; food-beverage активна → ведёт в каталог, остальные 7 — приглушённые «скоро» (нет пилот-данных) | LIVE |
| Каталог товаров | /catalog | Открыть из шапки «Каталог товаров»; выбрать категорию в сайдбаре; /catalog?group=<slug> открывает с фильтром | Хлебные крошки + сайдбар категорий (реальное HoReCa-дерево, иконки + счётчики поставщиков, пустые группы скрыты) + сетка товаров по выбранной группе (демо) | LIVE |
| Карточка поставщика | /catalog/supplier/<slug> | Открыть из плитки «поставщики» на главной | Реальные данные реестра HoReCa: шапка (verified/уровень/группы) + «о поставщике» (рег.№/адрес/сайт/EDI/ERP) + плитки групп товаров + честный guest-гейт (каталог/цены/запрос связи — после входа → Войти/Регистрация) | LIVE |
| Карточка товара | /catalog/product/<id> | Открыть из карточки товара в каталоге/на главной | Картинка + характеристики + описание + цена (со скидкой) + guest-гейт (заказ после входа) + «та же позиция у других поставщиков» (ссылки на карточки) + похожие товары | LIVE |
| Разделы-заглушки нав-бара | /services · /companies · /app-market · /partners | Клик по табам шапки, не ведущим в каталог | Трилингв «скоро»-заглушка (бейдж + заголовок + «на главную») — нав больше не ведёт в 404 | LIVE (stub) |
| Корзина | /catalog/cart | — | Добавление позиций, мультипоставщик — переезжает в Stage 3 (нужна авторизованная зона) | Stage 3 |
| База компаний (полный листинг) | — | Поиск/листинг поставщиков, рейтинги | Отдельный листинг компаний (профиль поставщика уже доступен через карточку выше); сейчас — заглушка | planned |
/catalog (с deep-link ?group=) → карточка поставщика → карточка товара. Общий модуль демо-каталога со стабильными id. Тесты: vitest 19 passed, eslint+tsc чисто, браузер LV/EN/RU без ошибок консоли. Дальше: подключение реального v1-каталог-API + листинг «База компаний» — после авторизованной зоны (Stage 2).Каркас рабочего пространства (/app) на реальном бэкенде (живой JWT + /auth/token/me), без mock-авторизации. Экраны связей построены поверх каркаса и ходят в живой /relationships/ (контракт v1.6.2–v1.6.4). Тест-вход: demo.context.switcher@example.com / demo-pass-123 — менеджер 3 компаний (Demo Buyer SIA · покупатель, Demo Supplier Food SIA · поставщик, Demo Both Trade SIA · оба); переключайте активную компанию в шапке, чтобы увидеть оба вида.
| Блок | Путь | Как тестировать | Статус |
|---|---|---|---|
| Каркас рабочего пространства | /app | Пройти онбординг (или войти тест-логином) → лендинг показывает активную компанию + роль + режим и живые карточки доменов по роли (Снабжение / Продажи). Гость без сессии на /app → редирект на login | LIVE |
| Переключатель компании / роли | — | Меню аккаунта в шапке: сменить активную компанию; для роли «оба» — тумблер Покупатель/Поставщик; выход | LIVE |
| Покупатель · Мои поставщики | /app/procurement/suppliers | Активная компания-покупатель → список связей (active/requested/suspended/terminated) с бейджами статусов, поиск по названию, дата запроса. Кнопка «Прекратить» на активных/приостановленных (модалка с причиной); на «ожидает» — пометка «ожидает подтверждения» | LIVE |
| Поставщик · Запросы на подключение | /app/sales/requests | Активная компания-поставщик → входящие запросы; фильтр Ожидают/Все; «Подтвердить» (активирует связь) и «Отклонить» (модалка с причиной). Под-навигация Запросы ↔ Покупатели | LIVE |
| Поставщик · Мои покупатели | /app/sales/buyers | Активные/приостановленные связи; «Приостановить» (причина) / «Возобновить» / «Отключить» (причина) | LIVE |
/app/procurement/suppliers, /app/sales/requests, /app/sales/buyers), трилингв LV/EN/RU с локале-зависимыми датами, живой /relationships/ + переходы (activate/reject/suspend/resume/terminate). E2E на staging: вход тест-логином, оба вида, round-trip приостановка→возобновление подтверждён на бэкенде. Тесты: vitest 28 passed, eslint+tsc(src) чисто, прод-сборка зелёная. Дальше: Stage 3 (корзина/оформление/заказ, бэкенд готов v1.6.6).Полный цикл заказа поверх каркаса /app на живом бэкенде (контракт v1.6.5–v1.6.6): каталог → корзина → оформление с гейтами → создание заказов → жизненный цикл + mock-экспорт в NEXX Engine. Тест-вход: demo.context.switcher@example.com / demo-pass-123 (покупатель Demo Buyer SIA уже имеет демо-корзину и ~35 заказов во всех статусах; поставщик Demo Supplier Food SIA видит входящие). Трилингв LV/EN/RU.
| Блок | Путь | Как тестировать | Статус |
|---|---|---|---|
| Каталог + в корзину | /app/catalog | Активная компания-покупатель → товары подключённых поставщиков (поиск + фильтр по поставщику); «В корзину» добавляет позицию (бейдж «× N»). Цена скрыта, если поставщик не опубликовал прайс | LIVE |
| Корзина | /app/cart | Позиции сгруппированы по поставщикам, ± количество / удаление, подытоги; справа — доставка (резолв из профиля), net/НДС/итог, комментарий | LIVE |
| Оформление + гейты | /app/cart | Гейты на группу: нет связи / прайс не опубликован / сумма ниже мин. заказа / нет адреса. Поставщики без блокировок → «связь активна» и попадают в заказ; «оформить» создаёт по одному заказу на поставщика (выборочный checkout), корзина обновляется | LIVE |
| Покупатель · Мои заказы | /app/procurement/orders · /{id} | История + фильтр по статусу; деталь: степпер created→…→accepted, позиции, итоги, блок экспорта (NEXX Engine mock — статус + внешний ID), действия «принять»/«отменить» | LIVE |
| Поставщик · Заказы | /app/sales/orders · /{id} | Активная компания-поставщик → входящие заказы; деталь с действиями «подтвердить»/«отгрузить»/«доставлено»/«отменить» (по availableActions); степпер сдвигается по статусу | LIVE |
/cart/ + /checkout/validate/ + /orders/ (+ переходы confirm/ship/deliver/accept/cancel), mock-экспорт order.created (контракт v1.6.6). E2E на staging: гейт мин.заказа (блок → разблок), создание заказа #37 c экспортом MOCK-ORD-37 (done), деталь покупателя и поставщика, цикл подтверждение→отмена, затем откат (заказ отменён, корзина восстановлена). Тесты: vitest 34 passed, eslint+tsc(src) чисто, прод-сборка зелёная. Дальше: Stage 4 (живой коннектор Engine + события жизненного цикла) — вне текущего среза.