food-market/src/food-market.domain
nns e93634fad4 feat(domain): Organization.IsArchived/AccountOwner + SuperAdminAuditLog + migration
Базовый domain-каркас для SuperAdmin console (Phase 1):

Organization:
- IsArchived bool + ArchivedAt DateTime? — архивная орга не видна
  юзерам, но данные сохраняются. Удалить навсегда можно только из
  архива >30 дней (логика в API на следующем коммите).
- AccountOwnerUserId Guid? — главный владелец, не путать с админами
  per-org. SuperAdmin может сменить через action c reason в audit-log.
- HasIndex(IsArchived) для быстрой фильтрации.

SuperAdminAuditLog (новая таблица super_admin_audit_log):
- Не tenant-scoped — лог общий по всей системе.
- ActionType (CreateOrg/EditOrg/ArchiveOrg/RestoreOrg/DeleteOrg/
  ChangeOwner/EditEntity), OrganizationId, EntityType+EntityId,
  Description, Reason, ChangesJson (jsonb), IpAddress.
- Индексы: CreatedAt, (SuperAdminUserId, CreatedAt),
  (OrganizationId, CreatedAt) — типовые запросы фильтра.

Migration Phase4_SuperAdminConsole добавляет 3 колонки в organizations
+ создаёт super_admin_audit_log с тремя композитными индексами.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 12:51:25 +05:00
..
Catalog feat(product-card): drop ShelfLifeDays + recompose classification + auto-article + barcode trash hide 2026-04-26 00:50:05 +05:00
Common Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
Inventory phase2a: stock foundation (Stock + StockMovement) + OtherSystem counterparty import 2026-04-22 00:51:07 +05:00
Organizations feat(domain): Organization.IsArchived/AccountOwner + SuperAdminAuditLog + migration 2026-04-26 12:51:25 +05:00
Purchases phase3b: product card cleanup + supply form simplification 2026-04-26 01:00:06 +05:00
Sales phase2c: RetailSale document — посты в stock как минусовые движения 2026-04-22 16:07:37 +05:00
food-market.domain.csproj Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00