food-market/docs/sprint1-progress.md
nns a15100f3bc docs(sprint1): чек-лист прогресса стабилизации
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 02:14:25 +05:00

2.4 KiB

Спринт 1 — стабилизация (P0 код/инфра)

Автономная работа. После каждого пункта: dotnet build (SDK 8.0.126), релевантные тесты, коммит порцией, отметка [x] здесь, коммит прогресса.

Сборка: POS-проект (food-market.pos, net8.0-windows) на Linux не собирается — это ожидаемо (нужен Windows SDK). Эталон сборки — dotnet build src/food-market.api/food-market.api.csproj

  • solution-сборка тестовых проектов.

Чек-лист

  1. P0-3 Rate-limitMicrosoft.AspNetCore.RateLimiting (sliding window) на /connect/token и /api/auth/signup. 5/мин/IP, 20/час/IP. Тест: 6-я попытка за минуту → 429.
  2. P0-4 Health checks/health/live (alive) + /health/ready (DB ping + миграции применены). docker-compose healthcheck → /health/ready.
  3. P0-5 Permission-based authzPermissionHandler + [RequiresPermission("...")] читающий флаги RolePermissions. Заменить [Authorize(Roles=...)] в каталоге/документах. E2E: кастомная роль без ProductsEdit → 403 на PUT товара.
  4. P0-1 OpenIddict prod-ключи — signing+encryption сертификаты из пути в конфиге, persistent self-signed если файла нет. Dev-поведение не ломать. Документировать.
  5. P0-6 Авто-бэкапdeploy/food-market-backup.service + .timer, скрипт backup+ротация 30 дней, docs/backup-restore.md. Только артефакты в репо.
  6. P0-8deploy/.env.example + docs/secrets.md.
  7. P0-9docs/release-checklist.md.
  8. P1-20 Unit-тестыtests/food-market.UnitTests: StockService.ApplyMovement, расчёт Cost в SuppliesController.Post, валидация платежа RetailSalesController.Post, multi-tenant query filter.
  9. P1-21 Integration-тесты — Testcontainers.PostgreSql + WebApplicationFactory: signup-flow, supply post→unpost, retail overselling, tenant isolation A vs B, permission-проверки.

Лог

(заполняется по ходу)