food-market/docs/uat-per-control-progress.md
nns 605c1bac2c test(uat): браузерные per-control проверки + гейтинг прав по прямым URL
- stage-ui-uat-controls: в браузере контролы списков шлют правильный параметр
  (поиск→search, сортировка→sort, фильтр→свой параметр, пагинация→page=2,
  экспорт→/export&format), + жизненный цикл документа приёмки (провести чекбоксом
  «Проведено»→POST /post, снять→/unpost, удалить→DELETE). 16/16 ✓. Семантику
  параметр→строки независимо держит filters-sweep.
- stage-ui-uat-permissions: кассир/кладовщик по ПРЯМОМУ URL к админ-разделам видят
  «Нет доступа» (RoleGuard), разрешённые разделы открываются. 2/2 ✓.
- docs/uat-per-control-progress.md — реестр экранов × контролов.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:06:02 +05:00

61 lines
4.5 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.

# UAT по каждому элементу управления — прогресс
Доделываем то, что в `docs/uat-report-2026-10-09.md` честно помечено «не покрыто»:
per-control UI-UAT P2–P4 в браузере + UI-гейтинг прав по ролям (кнопки и прямые URL).
Правило владельца: НЕ перепроверять уже покрытое (часть A отчёта, filters-sweep 21/21,
mobile-390, ошибки ввода) — только непокрытое.
Легенда: [x] готово · [~] частично · [ ] не начато.
## Как устроены списки (чтобы тестировать осмысленно)
Все list-страницы используют общий `useCatalogList(url, extraParams)` → `search`, `page`,
`sortKey/sortOrder` (клик по заголовку колонки), фильтры — `<Select>`; экспорт — `ExportButton`
(с текущими фильтрами); действия документа (провести/отменить/удалить/на основании/печать) —
на страницах редактирования (`*/new`, `*/:id`). Права в UI — `RoleGuard` (показывает
«Нет доступа») и `useCan()`/`AdvancedModeGuard`.
## Реестр экранов × контролов (P1–P4)
Контролы: S=поиск, F=фильтры (период/статус/склад/точка/кассир/контрагент/группа), O=сортировка
по колонкам, P=пагинация, R=сброс, X=экспорт-с-фильтрами, A=действия (провести/отменить/удалить/
печать/на основании), G=гейтинг прав (кнопки + прямой URL).
| Экран | URL | Контролы | Статус |
|---|---|---|---|
| Товары | /catalog/products | S F O P X A | [ ] |
| Остатки | /inventory/stock | (покрыт filters-sweep) | [x] |
| Движения | /inventory/movements | S F O P | [ ] |
| Приёмки | /purchases/supplies | S F O P X A | [ ] |
| Накладные по фото | /purchases/invoices | S F A | [ ] |
| Оприходования | /inventory/enters | S F O P A | [ ] |
| Списания | /inventory/losses | S F O P A | [ ] |
| Инвентаризации | /inventory/inventories | S F O P A | [ ] |
| Возвраты поставщику | /purchases/supplier-returns | S F O P A | [ ] |
| Продажи (чеки) | /sales/retail | S F O P X A | [ ] |
| Контрагенты | /catalog/counterparties | S F O P A G | [ ] |
| Сотрудники | /settings/employees | S A G | [ ] |
| Точки продаж | /catalog/retail-points | A G | [ ] |
| Склады | /catalog/stores | A G | [ ] |
| Счета | /money/accounts | A G | [ ] |
| Платежи/транзакции | /money/transactions | S F O P G | [ ] |
| Смены | /money/shifts | F O P A | [ ] |
| Долги поставщикам | /money/supplier-debts | S F O P G | [ ] |
| Отчёт продаж | /reports/sales | F X G | [ ] |
| Отчёт прибыли | /reports/profit | F X G | [ ] |
| Отчёт денег | /money/report | F X G | [ ] |
| Отчёт остатков | /reports/stock | F X | [ ] |
| Проверка данных | /catalog/data-quality | (покрыт) | [x] |
## План
1. [ ] Browser e2e `stage-ui-uat-controls.spec.ts`: по каждому экрану — осмысленная проверка
контролов (поиск сужает до известного, фильтр меняет набор, сортировка меняет порядок,
пагинация разбивает, экспорт отдаёт файл). Ожидаемое считает тест по данным temp-орга.
2. [ ] Browser e2e действий документа: черновик → провести → отменить проведение → удалить →
создать на основании (приёмка/оприходование/списание/чек).
3. [ ] Browser e2e прав `stage-ui-uat-permissions.spec.ts`: кассир/кладовщик — RoleGuard-URL →
«Нет доступа»; кнопки «Удалить/Отменить проведение» скрыты без прав.
4. [ ] Сводка в uat-report (часть C): экран → элемент → ✓/✗, сначала ✗. P1–P2 в nightly.
## Что НЕ трогаем
Прод, shared-postgres, global.json, gateway nginx, sklad.