food-market/docs/sprint5-progress.md
2026-05-28 16:10:35 +05:00

2.1 KiB
Raw Blame History

Спринт 5 — оптовые продажи, email, аудит, надёжность import-job

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

Multi-tenant: все новые сущности — TenantEntity с OrganizationId + query filter. E2E на изоляцию A vs B где применимо.

Чек-лист

  1. P1-5 Оптовая отгрузка (Demand) — Domain Demand+DemandLine (CounterpartyId юрлица, способ оплаты нал/безнал, цена опт., НДС). EF + миграция. Контроллер CRUD + Post/Unpost. Web /sales/demands. StockMovement тип WholesaleSale. Multi-tenant. Тесты.
  2. P1-18 Аудит мутаций tenant'а — Domain OrgAuditLog (как SuperAdminAuditLog, но per-org). Hook через EF SaveChangesInterceptor на Supply/Sale/Demand/Product/Counterparty. UI: /audit-log для админа. Multi-tenant строго. Тесты.
  3. P1-22 Email-шаблоны — расширить MailKit-сервис: Resources/EmailTemplates/*.html. Шаблоны: приглашение сотрудника с временным паролем (sendInvite=true), еженедельный summary владельцу (Hangfire recurring), low-stock alert (Hangfire daily). Тесты рендеринга.
  4. TD-5 ImportJobRegistry в БД — сейчас in-memory ConcurrentDictionary, теряется при рестарте. Перевод на таблицу ImportJobs (Id, OrgId, Status, Progress, Total, StartedAt, FinishedAt, Errors JSON). Миграция. MoySkladImportController использует. Тесты.

Лог

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