From a15100f3bc6152b24d8dcdb6c45f9be235e9f1fe Mon Sep 17 00:00:00 2001 From: nns Date: Wed, 27 May 2026 02:14:25 +0500 Subject: [PATCH] =?UTF-8?q?docs(sprint1):=20=D1=87=D0=B5=D0=BA-=D0=BB?= =?UTF-8?q?=D0=B8=D1=81=D1=82=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B0=20=D1=81=D1=82=D0=B0=D0=B1=D0=B8=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- docs/sprint1-progress.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs/sprint1-progress.md diff --git a/docs/sprint1-progress.md b/docs/sprint1-progress.md new file mode 100644 index 0000000..159507e --- /dev/null +++ b/docs/sprint1-progress.md @@ -0,0 +1,33 @@ +# Спринт 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-limit** — `Microsoft.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 authz** — `PermissionHandler` + `[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-8** — `deploy/.env.example` + `docs/secrets.md`. +7. [ ] **P0-9** — `docs/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-проверки. + +## Лог + +(заполняется по ходу)