diff --git a/docs/sprint6-progress.md b/docs/sprint6-progress.md index ed21a96..4a74bbb 100644 --- a/docs/sprint6-progress.md +++ b/docs/sprint6-progress.md @@ -37,9 +37,39 @@ unit + integration тесты, коммит порцией, отметка `[x]` `food-market.application`. 3 handler-образца с абстракциями (`ISupplyWriter`, `IRetailSalePoster`) — testable без EF/БД. Контроллеры остались на прежнем flow (поэтапная миграция). 6 unit-тестов. -5. [ ] **P2-4 2FA для админов (TOTP)** — `AuthenticatorTokenProvider`, +5. [x] **P2-4 2FA для админов (TOTP)** — `AuthenticatorTokenProvider`, endpoints `/api/me/2fa/enroll`, `/api/me/2fa/verify`, `/api/me/2fa/disable`. Опционально для Admin+SuperAdmin. При логине с включённым 2FA — два шага. + ✅ Identity `AuthenticatorTokenProvider` (RFC 6238). Endpoints: + /api/me/2fa/{status, enroll, verify, disable} с QR-URI. Password-grant + на `/connect/token` принимает custom param `otp_code`; при включённом + 2FA без него — `invalid_grant` с `error_description=2fa_required`. + 4 интеграционных теста (тест сам генерит TOTP через RFC 6238). + +## Итог + +**Все 5 пунктов выполнены.** Спринт 6 завершён 2026-05-28. + +Сводка: +- **TD-6 RowVersion** — Postgres `xmin` через `UseXminAsConcurrencyToken` + на 5 документах, 409 при conflict. Bonus: исправил Supply.Update. +- **TD-2 FluentValidation** — `ValidationFilter` + 5 validator'ов + (Supply, RetailSale, Product, Counterparty, Employee). +- **TD-4 Structured logging** — `LogEnrichmentMiddleware` (OrgId/UserId/ + CorrelationId в LogContext), business-логи на Post-операциях. +- **TD-1 CQRS partial** — MediatR + 3 handler-образца с testable-абстракциями. +- **P2-4 TOTP 2FA** — endpoints + интеграция в password-grant. + +**Сборка:** зелёная. +**Тесты:** 57 unit + 74 integration = **131 зелёных**. + +### Что осталось вне scope автономной работы +- ОФД-оператор (`Транском`/`Касса24`), +- MoySklad webhook-токены прод, +- WPF/POS UI на Windows, +- Стейдж→прод-деплой, +- Реальный SMTP-провайдер прод (Mailgun/Sendgrid), +- Backup-коды для 2FA recovery (отдельная задача). ## Лог