docs(sprint1): P1-21 done — все 9 пунктов выполнены, итог
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
f2dad91e05
commit
9ef9df3ed5
|
|
@ -51,9 +51,39 @@
|
|||
✅ 23 теста зелёные. Чистая логика вынесена в Application (`MovingAverageCost`,
|
||||
`RetailPaymentValidator`) и используется контроллерами. StockService + query-filter на
|
||||
SQLite in-memory (EF8 поддерживает `ToJson`). `FakeTenantContext`, `SqliteDb` helper.
|
||||
9. [ ] **P1-21 Integration-тесты** — Testcontainers.PostgreSql + WebApplicationFactory:
|
||||
9. [x] **P1-21 Integration-тесты** — Testcontainers.PostgreSql + WebApplicationFactory:
|
||||
signup-flow, supply post→unpost, retail overselling, tenant isolation A vs B, permission-проверки.
|
||||
✅ `tests/food-market.IntegrationTests` — 10 тестов зелёные на реальном postgres:16-alpine
|
||||
(Ryuk off, RateLimiting off через env). `ApiFactory`+`ApiActor`. Все 5 сценариев покрыты.
|
||||
|
||||
## Итог
|
||||
|
||||
**Все 9 пунктов выполнены.** Спринт 1 (стабилизация P0/P1-инфра) завершён 2026-05-27.
|
||||
|
||||
Сводка:
|
||||
- **P0-3** rate-limit (5/мин+20/час на IP, конфигурируем) — `AuthRateLimiterExtensions`.
|
||||
- **P0-4** health `/health/live` + `/health/ready` (БД+миграции), compose/Dockerfile healthcheck.
|
||||
- **P0-5** permission-based authz (`[RequiresPermission]` + handler по флагам роли), 10 контроллеров.
|
||||
- **P0-1** OpenIddict prod X509-ключи из конфига, persistent self-signed.
|
||||
- **P0-6** авто-бэкап (systemd timer + скрипт + ротация 30д) + `backup-restore.md`.
|
||||
- **P0-8** `deploy/.env.example` + `secrets.md`.
|
||||
- **P0-9** `release-checklist.md`.
|
||||
- **P1-20** unit-тесты (23) — `MovingAverageCost`, `RetailPaymentValidator`, StockService, query-filter.
|
||||
- **P1-21** integration-тесты (10) — Testcontainers + WebApplicationFactory.
|
||||
|
||||
Сборка зелёная (`dotnet build src/food-market.api`); тесты: **23 unit + 10 integration = 33 зелёных**.
|
||||
POS (net8.0-windows) на Linux не собирается — ожидаемо, вне scope.
|
||||
|
||||
Пропущено намеренно (по инструкции): P0-7 ОФД (нужен внешний оператор), gateway nginx HTTPS,
|
||||
`global.json` (локальный даунгрейд не коммитим). Установка backup-таймера/сертификатов на
|
||||
prod-vm — отдельный деплой-шаг (артефакты готовы).
|
||||
|
||||
### Эффект на код вне P0/P1
|
||||
- Чистая логика вынесена в Application (`MovingAverageCost`, `RetailPaymentValidator`) — контроллеры используют её.
|
||||
- `Program` стал `public partial` для WebApplicationFactory.
|
||||
- e2e `roles` step08: gap → реальная проверка permission-enforcement (8/8 зелёный).
|
||||
|
||||
## Лог
|
||||
|
||||
(заполняется по ходу)
|
||||
- Каждый пункт: build + тесты + коммит порцией + отметка [x] + коммит прогресса.
|
||||
- Все правки на ветке `main` (origin Forgejo), без коммита `global.json`.
|
||||
|
|
|
|||
Loading…
Reference in a new issue