food-market/src/food-market.domain/Organizations
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
..
Employee.cs feat(employee): add Salary, TaxNumber, Description, ImageUrl + radio role picker 2026-04-26 12:48:27 +05:00
EmployeeRole.cs feat(domain): Employee, EmployeeRole, RolePermissions entities + migration 2026-04-26 12:00:30 +05:00
Organization.cs feat(domain): Organization.IsArchived/AccountOwner + SuperAdminAuditLog + migration 2026-04-26 12:51:25 +05:00
RolePermissions.cs feat(roles): permissions matrix grouped by section + clone-from-template flow 2026-04-26 12:44:53 +05:00
SuperAdminAuditLog.cs feat(domain): Organization.IsArchived/AccountOwner + SuperAdminAuditLog + migration 2026-04-26 12:51:25 +05:00