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

36 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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