docs(sprint5): TD-5 done — все 4 пункта выполнены, итог
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
b963adfa2e
commit
c43f68c39b
|
|
@ -35,10 +35,41 @@ query filter. E2E на изоляцию A vs B где применимо.
|
||||||
`Resources/EmailTemplates/*.html` (Subject: первой строкой). Шаблоны:
|
`Resources/EmailTemplates/*.html` (Subject: первой строкой). Шаблоны:
|
||||||
invite/weekly-summary/low-stock. Hangfire: weekly понедельник 07:00,
|
invite/weekly-summary/low-stock. Hangfire: weekly понедельник 07:00,
|
||||||
low-stock ежедневно 08:00. 8 unit-тестов.
|
low-stock ежедневно 08:00. 8 unit-тестов.
|
||||||
4. [ ] **TD-5 ImportJobRegistry в БД** — сейчас in-memory `ConcurrentDictionary`,
|
4. [x] **TD-5 ImportJobRegistry в БД** — сейчас in-memory `ConcurrentDictionary`,
|
||||||
теряется при рестарте. Перевод на таблицу `ImportJobs` (Id, OrgId, Status,
|
теряется при рестарте. Перевод на таблицу `ImportJobs` (Id, OrgId, Status,
|
||||||
Progress, Total, StartedAt, FinishedAt, Errors JSON). Миграция.
|
Progress, Total, StartedAt, FinishedAt, Errors JSON). Миграция.
|
||||||
`MoySkladImportController` использует. Тесты.
|
`MoySkladImportController` использует. Тесты.
|
||||||
|
✅ `Domain.Integrations.ImportJob` (TenantEntity); миграция `Phase8c_ImportJobs`.
|
||||||
|
`ImportJobRegistry` теперь IServiceScopeFactory-backed: `Create` пишет
|
||||||
|
строку немедленно, `SaveAsync` обновляет, `Get/RecentlyFinished` читают
|
||||||
|
из БД. Контроллер `MoySkladImportController.RunInBackgroundAsync` дополнен
|
||||||
|
periodic flush через Timer (каждые 2 сек) + финальный flush в finally —
|
||||||
|
UI видит реальный прогресс, terminal-state сохраняется через рестарт.
|
||||||
|
3 интеграционных теста (survives across scope, RecentlyFinished, tenant-isolation).
|
||||||
|
|
||||||
|
## Итог
|
||||||
|
|
||||||
|
**Все 4 пункта выполнены.** Спринт 5 завершён 2026-05-28.
|
||||||
|
|
||||||
|
Сводка:
|
||||||
|
- **P1-5 Demand** — оптовая отгрузка контрагенту-юрлицу с `DemandPayment.Credit`
|
||||||
|
и `PaidAmount`-полем; 3 интеграционных.
|
||||||
|
- **P1-18 OrgAuditLog** — per-tenant журнал через `SaveChangesInterceptor`,
|
||||||
|
atomic с мутацией, diff в jsonb; 3 интеграционных.
|
||||||
|
- **P1-22 Email** — `IEmailSender.SendHtmlAsync` (multipart) + mustache-light
|
||||||
|
renderer + 3 шаблона + 2 recurring Hangfire-джоба; 8 unit.
|
||||||
|
- **TD-5 ImportJob** — persistence в БД, переживает рестарт, periodic flush
|
||||||
|
для live-прогресса; 3 интеграционных.
|
||||||
|
|
||||||
|
**Сборка:** зелёная.
|
||||||
|
**Тесты:** 35 unit + 68 integration = **103 зелёных**.
|
||||||
|
|
||||||
|
### Что осталось вне scope
|
||||||
|
- ОФД-оператор (нужен внешний участник: `Транском`/`Касса24`);
|
||||||
|
- MoySklad webhook-токены прод;
|
||||||
|
- WPF/POS UI (Windows-SDK);
|
||||||
|
- Стейдж→прод-деплой;
|
||||||
|
- Real SMTP-сервер для прод (Mailgun/Sendgrid/etc).
|
||||||
|
|
||||||
## Лог
|
## Лог
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue