food-market/docs/verify-progress.md
nns ba54155225
Some checks failed
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Docker Web / Build + push Web (push) Has been cancelled
Docker Web / Deploy Web on stage (push) Has been cancelled
fix(stage): rate-limit 5/min на /connect/token, nginx route /metrics+/swagger, Swagger в Production через IncludeSwagger
Verify-Sprint баги A-D:
- A: на stage docker-compose.yml был "RateLimiting__PerMinute=200" — убран,
  теперь работают дефолты (5/мин, 20/час). 6-я попытка с тем же IP/паролем → 429.
- B: web-контейнер nginx не имел location = /metrics → запрос ловился SPA
  fallback'ом (index.html, 947 байт). Добавлен proxy_pass на api:8080.
- C: web-nginx не имел location /swagger/ → swagger.json возвращал SPA HTML.
  Добавлены /swagger/ + редирект /swagger → /swagger/.
- D: Swagger подключался только в Development. Добавлен флаг IncludeSwagger
  (env IncludeSwagger=true) — Program.cs включает UseSwagger() и в Production
  если флаг выставлен. На prod admin.food-market.kz флаг не ставим.

Проверено через https://test.admin.food-market.kz:
- 6 неверных логинов подряд: 1-5 → 400, 6-7 → 429 ✓
- /metrics → 14967 байт prometheus exposition ✓
- /swagger/v1/swagger.json → 422 КБ openapi 3.0.1 ✓
- /swagger/ → swagger-ui (redirect на /swagger/index.html) ✓

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 01:36:42 +05:00

3.1 KiB
Raw Blame History

Верификационный спринт — независимая проверка через домен

Цель: расхождения между «отчёт говорит [x]» и «реально работает на https://test.admin.food-market.kz».

Старт: 2026-06-04. Исполнитель: Claude Opus 4.7 (автономный режим).

Правила

  • Всё через https://test.admin.food-market.kz, не localhost.
  • Каждая проверка либо [x] подтверждено + работает, либо [x] подтверждено + баг найден + починен + retest зелёный.
  • Когда баг: reproduce → fix → build + тесты → ~/deploy-stage.sh → retest → коммит порцией.
  • НЕ трогать: global.json, прод admin.food-market.kz, POS WPF.

Предварительные баги (найдены пользователем)

  • A. Rate-limit на /connect/token не срабатывает — 7 неверных логинов → все 400, ни одного 429. И через nginx, и напрямую api:8085. Найти/починить middleware/конфиг.
  • B. /metrics через nginx-домен отдаёт SPA HTML — 947 байт SPA вместо prometheus. Прямой api работает. Routing.
  • C. /swagger/v1/swagger.json через nginx-домен отдаёт SPA. Аналогично.
  • D. Swagger вообще не подключён на api в Production — прямой api:8085 /swagger → 404. Включить для Stage.

Верификация фич (через домен)

  • 1. Каталог CRUD через UI (товар + картинка + дубликат).
  • 2. Складские документы (Supply/Enter/Loss/Transfer/Inventory/SupplierReturn/Demand) через UI с проверкой Stock.
  • 3. RetailSale + CustomerReturn через UI.
  • 4. Отчёты Sales/Stock/Profit/ABC через UI с проверкой чисел и экспорта.
  • 5. 2FA TOTP через UI (enroll → verify → двухшаговый login → disable).
  • 6. Permission-based authz через API (custom role без ProductsEdit → 403).
  • 7. OrgAuditLog через UI (3 действия + multi-tenant изоляция).
  • 8. SignalR real-time (2 вкладки, продажа в одной → toast/виджет в другой).
  • 9. Локализация ru/en (топ-5 страниц).
  • 10. Loyalty + Promotions через UI (карта + промокод в чеке).
  • 11. PWA (Lighthouse PWA ≥80, offline дашборд + 3 отчёта).
  • 12. Mobile 375x667 через Playwright.
  • 13. Inventory CSV-импорт через UI.
  • 14. POS Sync API с idempotency-key.
  • 15. Stock-инвариант под конкуренцией (5 параллельных POST, остаток=3).
  • 16. Email-шаблоны через smtp4dev.
  • 17. Telegram-бот (или пометить «требует юзера»).
  • 18. MinIO storage (картинка в bucket).

Журнал