docs(sprint5): P1-18 done
This commit is contained in:
parent
a189a5dd6e
commit
ee0cd3ae86
|
|
@ -16,10 +16,15 @@ query filter. E2E на изоляцию A vs B где применимо.
|
||||||
(постоплата/дебиторка), `PaidAmount` для отслеживания. Permissions
|
(постоплата/дебиторка), `PaidAmount` для отслеживания. Permissions
|
||||||
переиспользуют существующие `DemandsEdit/Post`. Метрики
|
переиспользуют существующие `DemandsEdit/Post`. Метрики
|
||||||
`documents_posted{type="demand"}`. 3 интеграционных теста.
|
`documents_posted{type="demand"}`. 3 интеграционных теста.
|
||||||
2. [ ] **P1-18 Аудит мутаций tenant'а** — Domain `OrgAuditLog` (как
|
2. [x] **P1-18 Аудит мутаций tenant'а** — Domain `OrgAuditLog` (как
|
||||||
`SuperAdminAuditLog`, но per-org). Hook через EF SaveChangesInterceptor
|
`SuperAdminAuditLog`, но per-org). Hook через EF SaveChangesInterceptor
|
||||||
на Supply/Sale/Demand/Product/Counterparty. UI: `/audit-log` для админа.
|
на Supply/Sale/Demand/Product/Counterparty. UI: `/audit-log` для админа.
|
||||||
Multi-tenant строго. Тесты.
|
Multi-tenant строго. Тесты.
|
||||||
|
✅ `OrgAuditInterceptor` снимает diff на `SavingChanges` (до commit) —
|
||||||
|
атомарно с мутацией. ChangesJson: `{"field":{"before":X,"after":Y}}`.
|
||||||
|
Белый список типов: Supply/SupplierReturn/RetailSale/Demand/Product/
|
||||||
|
ProductPrice/ProductBarcode/Counterparty. Web `/audit-log` с фильтрами
|
||||||
|
и diff-viewer'ом. Tenant-isolation через query-filter. 3 интеграционных.
|
||||||
3. [ ] **P1-22 Email-шаблоны** — расширить MailKit-сервис:
|
3. [ ] **P1-22 Email-шаблоны** — расширить MailKit-сервис:
|
||||||
`Resources/EmailTemplates/*.html`. Шаблоны: приглашение сотрудника с
|
`Resources/EmailTemplates/*.html`. Шаблоны: приглашение сотрудника с
|
||||||
временным паролем (sendInvite=true), еженедельный summary владельцу
|
временным паролем (sendInvite=true), еженедельный summary владельцу
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue