# Sprint 7 — UX-полировка stage + демо-данные Цель: `https://test.admin.food-market.kz` открывается → наполненные модули видны сразу, UI удобен (confirm на destructive, toast'ы, скелеты, empty-states, breadcrumbs, shortcuts). Старт: 2026-05-29. Исполнитель: Claude Opus 4.7 (автономный режим). ## Принципы - Каждый пункт: build + тесты + `~/deploy-stage.sh` + Playwright-скриншот retest на стенде + коммит + `[x]` в этом доке. - НЕ трогать: global.json, прод-стек (admin.food-market.kz), POS WPF. - Команды для теста UI на стенде: `cd src/food-market.web && pnpm dev` локально к API; либо Playwright против `https://test.admin.food-market.kz` после деплоя. ## Чек-лист - [x] **1. Demo-data seeder для stage** — POST /api/admin/seed-demo + admin-кнопка «Заполнить демо-данными». 50 товаров / 5 групп / 10 контрагентов / 5 приёмок / 30 продаж / 1 опт / 1 списание / 1 перемещение / 1 инвентаризация. Идемпотентно (маркер DEMO-). E2E 5/5 ✓ на стейдже. - [ ] **2. ConfirmDialog на destructive actions** — общий компонент. Удаление товара / контрагента / документа, archive org, unpost, disable 2FA, удаление сотрудника. Esc=cancel. - [ ] **3. Toast-система ошибок** — замена console.error в `src/lib/api.ts`. 4xx/5xx → error toast c message из API; мутации 2xx → success. Top-right, 5s autoclose. - [ ] **4. Loading skeletons** — на DataTable и edit-pages вместо «Загрузка…» — shimmer-скелет. Reusable ``. - [ ] **5. Empty states с CTA** — list-страницы при `items.length === 0` показывают центрированный блок с иконкой, текстом и кнопкой «Создать первый …». - [ ] **6. Breadcrumbs** — на edit-страницах Reusable ``. - [ ] **7. Keyboard shortcuts** — edit: Ctrl+S = save, Esc = cancel/back; list: `/` = focus search, `n` = create. Hint в footer / `?` overlay. ## Журнал ### 2026-05-29 — старт - Stage-testing спринта 6 закрыт (`docs/stage-testing-progress.md`, 13 сценариев / 94/94 шага ✓). - Создан этот файл, перехожу к пункту 1. ### 2026-05-30 — пункт 1 ✓ - `DemoTenantSeeder` + `DemoSeedController` + UI-секция «Демо-данные» в OrganizationSettingsPage. - Идемпотентность через маркер `Article startsWith "DEMO-"`. - E2E `stage-demo-seed` (5 шагов) — green локально + на `test.admin.food-market.kz` (после deploy-stage.sh). - Коммит: `ad09b56 feat(stage): demo-data seeder для test.admin.food-market.kz`.