Some checks are pending
Sprint 9 пункт 3 (mobile-адаптация):
- DataTable: min-w-max sm:min-w-[640px] → узкие таблицы (Loyalty, Promotions)
влезают на 375px без horizontal-scroll, широкие (Products) скроллятся
внутри overflow-auto родителя.
- Mobile-audit спека (stage-ui-s9-mobile-audit) — 20 screenshot'ов в
reports/mobile/ (375 + 768 viewport × 10 страниц + seed-demo).
Smoke: no console-errors, layouts читаемы.
Sprint 9 пункт 4 (P2-9 PWA):
- public/manifest.webmanifest — read-only PWA владельца. Shortcuts:
Дашборд, Sales/Profit/Stock отчёты. display=standalone (homescreen icon).
- public/sw.js — service worker:
• SPA navigate: network-first + offline-fallback на /offline.html.
• GET /api/*: network-first + cache-fallback (read-only кеш).
• CSS/JS/SVG: stale-while-revalidate.
• Мутации (POST/PUT/DELETE): не вмешиваемся, сеть.
- public/offline.html — статический fallback с кнопкой «Открыть дашборд».
- index.html: <link rel='manifest'>, apple-touch-meta, lang=ru-KZ.
- main.tsx: navigator.serviceWorker.register('/sw.js') в production only
(dev hot-reload не мешает).
- deploy/nginx.conf: /sw.js no-cache, /manifest.webmanifest правильный
content-type, /offline.html static.
Stage e2e:
- stage-ui-s9-loyalty.spec (4/4 ✓): programs/cards/promotions endpoints
+ UI рендер + SALE20 на 500₸ → total=400 (валидно через API).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
Sprint 9 — лояльность, акции, mobile-адаптация, PWA
Цель: программы лояльности (баллы/% скидка) для постоянных покупателей, промокоды/акции в чеке, починить узкие экраны (телефон/планшет), PWA-обёртка владельца для отчётов с homescreen-икоником.
Старт: 2026-06-01. Исполнитель: Claude Opus 4.7 (автономный режим).
Это последний автономно-безопасный спринт. Дальше нужен человек: ОФД-интеграция, MoySklad-токены, POS WPF на Windows, kz-локализация, прод-деплой.
Принципы
- Multi-tenant обязателен (
OrganizationIdна каждой новой таблице, query filter). - Каждый пункт:
dotnet build+ локальные тесты +~/deploy-stage.sh+ retest наhttps://test.admin.food-market.kz(включая mobile viewport 375x667). - НЕ трогать:
global.json, прод-стек (admin.food-market.kz), POS WPF.
Чек-лист
- 1. P2-12 Loyalty (программы + карты) — Phase9b миграция.
LoyaltyProgramsController+LoyaltyCardsController(/issue, /lookup, /block). RetailSale: input.LoyaltyCardNumber → расчёт скидки/баллов; Post начисляет в card.Balance. UI:/loyalty/programs,/loyalty/cards. Тесты: 3/3 integration + 2/2 stage. - 2. P2-13 Promotions (промокоды/акции) —
Promotion(Percent|FixedDiscount, Scope, jsonb-массивы Guid, период, Code unique per org).PromotionsController. RetailSale: input.PromotionCode → lookup+matchingSubtotal+snapshot. UI:/promotions. Тесты: 2/2 integration + 2/2 stage. - 3. Mobile-адаптация — 375x667 + 768x1024 audit всех ключевых страниц. Таблицы → карточный режим на узких. Sidebar → drawer (уже есть). Screenshots до/после.
- 4. P2-9 PWA владельца (read-only) — manifest.json + SW + offline-fallback на /dashboard/sales/profit/stock. Установка на homescreen. Lighthouse-аудит.
Журнал
2026-06-01 — старт
Sprint 8 закрыт (docs/sprint8-progress.md, 4/4 ✓, 8/8 stage e2e). Перехожу к пункту 1 (Loyalty).