food-market/docs/sprint6-progress.md
2026-05-28 17:00:27 +05:00

1.9 KiB
Raw Blame History

Спринт 6 — технический долг + 2FA

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

Не ломать auth. НЕ трогать global.json/POS/nginx/ОФД.

Чек-лист

  1. TD-6 Concurrency-токены на документахRowVersion (PostgreSQL xmin через IsRowVersion) на Supply/Demand/RetailSale/Transfer/Inventory. Миграция. EF concurrency check. 409 при конфликте. Тест: два параллельных PUT → один 200, другой 409.
  2. TD-2 FluentValidationFluentValidation.AspNetCore, validator'ы для SupplyInputDto/RetailSaleInputDto/ProductInputDto/CounterpartyInputDto/ EmployeeInputDto. Auto-register. Тесты на каждый.
  3. TD-4 Структурные log-fields в SerilogLogContext.PushProperty в middleware: OrgId, UserId, CorrelationId. Бизнес-логи (Supply.Post, Sale.Post) — структурно. docs/logging.md.
  4. TD-1 CQRS partial (MediatR)CreateSupplyCommand, PostRetailSaleCommand, GetSalesReportQuery. Показать паттерн, не полный рефакторинг. Тесты на handlers.
  5. P2-4 2FA для админов (TOTP)AuthenticatorTokenProvider, endpoints /api/me/2fa/enroll, /api/me/2fa/verify, /api/me/2fa/disable. Опционально для Admin+SuperAdmin. При логине с включённым 2FA — два шага.

Лог

  • Каждый пункт: build + тесты + коммит порцией + отметка [x] + коммит прогресса.
  • Все правки на main (origin Forgejo), без коммита global.json.