food-market/docs/uat-per-control-progress.md
nns a539c31cbc
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
docs(uat): часть C отчёта (per-control в браузере) + прогресс done + nightly step 3d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:11:33 +05:00

5.1 KiB
Raw Permalink Blame History

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: контрол шлёт правильный параметр (поиск→search, сорт→sort, фильтр→свой параметр, пагинация→page=2, экспорт→/export&format); семантику параметр→строки держит filters-sweep. 21/21 ✓ на стенде.
  2. Browser e2e действий документа: приёмка черновик → провести (чекбокс «Проведено») → снять проведение → удалить — настоящими кнопками UI, проверяем POST/DELETE 2xx.
  3. Browser e2e прав stage-ui-uat-permissions.spec.ts: кассир/кладовщик по прямому URL → «Нет доступа» на всех RoleGuard-разделах. 2/2 ✓. (Кнопки действий без прав недоступны: данные отдают 403 → страница без данных и без действий; меню/API-403 — в full-chain.)
  4. Сводка в uat-report (часть C): экран → контрол → ✓/✗ (✗ нет). P1–P2 в nightly (step 3d).

Итог (2026-10-09)

Per-control UI-UAT в браузере доделан: контролы списков (поиск/фильтры/сортировка/пагинация/ сброс/экспорт) + жизненный цикл документа кнопками + гейтинг прав по прямым URL. 21/21 + 2/2 ✓ на стенде; добавлено в nightly (step 3d). Отчёт — часть C в docs/uat-report-2026-10-09.md.

Что НЕ трогаем

Прод, shared-postgres, global.json, gateway nginx, sklad.