food-market/docs/menu-links-progress.md
nns b82adc414c feat(menu): новые экраны s31 в sidebar+Cmd+K+Cmd+J + split-кнопки, orphan-audit
Три новых роута из Sprint 31 были достижимы только по прямому URL —
в sidebar/командной палитре их не было. Добавлено:

- AppLayout: «Накладные (по фото)» (/purchases/invoices) в разделе
  «Закупки», «Инвентаризация с телефона» (/inventory/mobile) в
  «Остатках» — для Admin и Storekeeper, видно в простом режиме;
  i18n ru + en.
- SplitButtonMenu — переиспользуемая dropdown-кнопка «Новая…».
  SuppliesPage: вручную / по фото / сканированием. InventoriesPage:
  вручную / с телефона.
- CommandPalette (Cmd+K): новые static-pages invoices, supply-scan,
  inventories (был пропущен), inventory-mobile.
- QuickActionsPalette (Cmd+J): invoice-new, supply-scan,
  inventory-mobile.
- Параллельно всплыл сирота /admin/diagnostic — добавили ссылку
  в sidebar под Admin'ом.

Playwright stage-ui-menu-links.spec.ts: demo-keeper + demo-admin,
desktop 1280×800 + mobile 375×667 — кликами с главной до всех
трёх новых экранов, скриншоты в reports/. Негатив для demo-cashier
проверяет, что ему эти пункты не видны.

Orphan-audit: tests/scripts/menu-orphans-audit.mjs парсит App.tsx и
диффит против фактических точек входа (sidebar/Cmd+K/Cmd+J/split-
кнопок). После всех правок — 0 сирот (отчёт docs/menu-orphans-report.md).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-10-04 22:50:14 +05:00

2.9 KiB
Raw Blame History

Menu links: достижимость новых страниц Sprint 31

Проблема (от координатора). Маршруты /purchases/invoices, /purchases/invoices/:id, /purchases/supplies/scan и /inventory/mobile объявлены в App.tsx, но пользователь к ним никак не доберётся: ни в sidebar (AppLayout.tsx), ни в CommandPalette, ни в QuickActionsPalette ссылок нет. На страницах /purchases/supplies и /inventory/inventories тоже нет кнопок, которые бы вели на новые UX-ветки.

Условия задачи.

  • Админ + Кладовщик видят новые пункты; Кассир — нет.
  • Пункты видны в простом режиме (isAdvancedMode === false) тоже — это базовые приёмка/инвентаризация, а не расширенные фичи.
  • i18n: ru обязательно, en — потому что меню переводится.
  • Playwright-проход «кликами с главной» на desktop (1280×800) + mobile (375×667) под demo-keeper и demo-admin; плюс негатив-проход для demo-cashier.
  • Аудит сирот: диффим <Route path> из App.tsx против фактических точек входа.

Границы. Не трогаем прод, global.json, deploy/*/nginx.

Чек-лист

  • 1. Главное меню AppLayout — пункты «Накладные (по фото)» (/purchases/invoices) в разделе «Закупки» и «Инвентаризация с телефона» (/inventory/mobile) в разделе «Остатки» для ролей Admin / Storekeeper; видны в простом режиме; i18n ru + en.
  • 2. Dropdown-кнопки входа на /purchases/supplies и /inventory/inventories: «Новая приёмка ▾» → Вручную / По фото накладной / Сканированием; «Новая инвентаризация ▾» → Вручную / С телефона.
  • 3. CommandPalette (Cmd+K) + QuickActionsPalette (Cmd+J): добавить invoices, supply-scan, inventory-mobile в соответствующие списки.
  • 4. ПРОВЕРКА ГЛАЗАМИ — Playwright stage-ui-menu-links.spec.ts: 3 новых страницы кликами с главной под demo-keeper и demo-admin, desktop + mobile; скриншоты в tests/e2e/reports/. Негатив для demo-cashier.
  • 5. Аудит «сирот» — скрипт tests/scripts/menu-orphans-audit.mjs, отчёт в docs/menu-orphans-report.md.
  • 6. ~/deploy-stage.sh + ретест п.4 на свежем stage.

Протокол выполнения

(заполняется построчно; номера шагов — из чек-листа выше.)