food-market/src/food-market.infrastructure/Persistence/Migrations
nns fc3f63c49a feat(super-admin): настраиваемый retention period для архивных орг
Раньше «удалить орг навсегда» было захардкожено на 30 дней архива.
Теперь — глобальная системная настройка SuperAdmin'а.

Domain/DB:
- SystemSettings : Entity (single-row table system_settings).
  Поле ArchiveRetentionDays (int, default 30). Структура расширяется
  именованными полями по мере необходимости — без key-value generic'а.
- Migration Phase4e_SystemSettings создаёт таблицу с default 30.
- DevDataSeeder: при первом старте создаёт single-row дефолт.

API:
- GET /api/super-admin/settings — текущие настройки.
- PUT /api/super-admin/settings — обновить с валидацией [0..3650].
  Audit-log запись ActionType=EditSystemSettings с before/after.
- SuperAdminOrganizationsController.Delete: хардкод 30 заменён
  чтением SystemSettings.ArchiveRetentionDays. При retention=0 —
  удаление доступно сразу после архивации.

UI:
- /super-admin/settings — страница «Системные настройки».
  Select из 6 опций (0/1/3/7/14/30), warning-баннер при выборе
  «Немедленно». Кнопка «Сохранить» disabled пока нет изменений.
- В SuperAdminLayout убрана пометка «скоро» с пункта «Системные
  настройки» — раздел активен.
- SuperAdminOrganizationsPage: кнопка «Удалить навсегда» теперь
  читает retentionDays из API; tooltip показывает оставшиеся дни
  «Доступно через X дн. (retention N)»; при retention=0 — всегда
  active для архивных орг.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 17:59:24 +05:00
..
20260421082113_InitialSchema.cs Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
20260421082113_InitialSchema.Designer.cs Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
20260421141151_Phase1Catalog.cs phase1a: catalog domain (countries, currencies, vat, units, counterparties, stores, retail points, products) 2026-04-21 19:16:10 +05:00
20260421141151_Phase1Catalog.Designer.cs phase1a: catalog domain (countries, currencies, vat, units, counterparties, stores, retail points, products) 2026-04-21 19:16:10 +05:00
20260421191122_Phase1e_WidenArticleBarcode.cs fix(catalog): widen Article + Barcode.Code to 500 chars for real-world catalogs 2026-04-22 00:15:00 +05:00
20260421191122_Phase1e_WidenArticleBarcode.Designer.cs fix(catalog): widen Article + Barcode.Code to 500 chars for real-world catalogs 2026-04-22 00:15:00 +05:00
20260421194521_Phase2a_Stock.cs phase2a: stock foundation (Stock + StockMovement) + OtherSystem counterparty import 2026-04-22 00:51:07 +05:00
20260421194521_Phase2a_Stock.Designer.cs phase2a: stock foundation (Stock + StockMovement) + OtherSystem counterparty import 2026-04-22 00:51:07 +05:00
20260421195644_Phase2b_Supply.cs phase2b: Supply document (приёмка) — posts to stock atomically 2026-04-22 01:06:08 +05:00
20260421195644_Phase2b_Supply.Designer.cs phase2b: Supply document (приёмка) — posts to stock atomically 2026-04-22 01:06:08 +05:00
20260422110503_Phase2c_RetailSale.cs phase2c: RetailSale document — посты в stock как минусовые движения 2026-04-22 16:07:37 +05:00
20260422110503_Phase2c_RetailSale.Designer.cs phase2c: RetailSale document — посты в stock как минусовые движения 2026-04-22 16:07:37 +05:00
20260423161923_Phase2c4_ReconcileStage.cs fix(db): reconcile stage schema — drop TrackingType, add IsMarked 2026-04-23 21:23:45 +05:00
20260423161923_Phase2c4_ReconcileStage.Designer.cs fix(db): reconcile stage schema — drop TrackingType, add IsMarked 2026-04-23 21:23:45 +05:00
20260423234500_Phase3_OrganizationMoySkladToken.cs feat(other-system-import): async jobs с прогрессом + токен в настройках 2026-04-23 23:49:11 +05:00
20260423234500_Phase3_OrganizationMoySkladToken.Designer.cs feat(other-system-import): async jobs с прогрессом + токен в настройках 2026-04-23 23:49:11 +05:00
20260424001500_Phase4_CountryCurrencyOrgDefaults.cs feat(org-settings): Country↔Currency, Organization.DefaultCurrency/MultiCurrency/DefaultVat + UI настроек 2026-04-24 11:03:25 +05:00
20260424001500_Phase4_CountryCurrencyOrgDefaults.Designer.cs feat(org-settings): Country↔Currency, Organization.DefaultCurrency/MultiCurrency/DefaultVat + UI настроек 2026-04-24 11:03:25 +05:00
20260424002000_Phase4b_ProductPackaging.cs feat(product): enum Packaging (штучный/весовой/разливной) вместо IsWeighed 2026-04-24 11:08:43 +05:00
20260424002000_Phase4b_ProductPackaging.Designer.cs feat(product): enum Packaging (штучный/весовой/разливной) вместо IsWeighed 2026-04-24 11:08:43 +05:00
20260424062000_Phase5_VatAsCountryProperty.cs feat(vat): ставка в стране + опц. переопределение на товаре 2026-04-24 11:56:28 +05:00
20260424062000_Phase5_VatAsCountryProperty.Designer.cs feat(vat): ставка в стране + опц. переопределение на товаре 2026-04-24 11:56:28 +05:00
20260424180000_Phase5b_DropCountrySortOrder.cs refactor(countries): drop SortOrder, sort by Name, auto-width columns 2026-04-24 12:14:01 +05:00
20260424180000_Phase5b_DropCountrySortOrder.Designer.cs refactor(countries): drop SortOrder, sort by Name, auto-width columns 2026-04-24 12:14:01 +05:00
20260424200000_Phase5c_ShowServiceMarkedOnProduct.cs feat(org-settings): галки «Услуга»/«Маркируемый» скрываются по умолчанию 2026-04-24 16:39:06 +05:00
20260424200000_Phase5c_ShowServiceMarkedOnProduct.Designer.cs feat(org-settings): галки «Услуга»/«Маркируемый» скрываются по умолчанию 2026-04-24 16:39:06 +05:00
20260424210000_Phase5d_ProductVatDecimal.cs refactor(vat): Product.Vat как decimal(5,2), поле видно только при VatEnabled 2026-04-24 16:51:11 +05:00
20260424210000_Phase5d_ProductVatDecimal.Designer.cs refactor(vat): Product.Vat как decimal(5,2), поле видно только при VatEnabled 2026-04-24 16:51:11 +05:00
20260424220000_Phase5e_DropCurrencyIsActive.cs refactor(currencies): убрать IsActive и MinorUnit из UI/API 2026-04-24 19:01:13 +05:00
20260424220000_Phase5e_DropCurrencyIsActive.Designer.cs refactor(currencies): убрать IsActive и MinorUnit из UI/API 2026-04-24 19:01:13 +05:00
20260424230000_Phase5f_ShowMinMaxStock.cs feat(org-settings): настройка ShowMinMaxStock для мин/макс остатков 2026-04-24 19:02:53 +05:00
20260424230000_Phase5f_ShowMinMaxStock.Designer.cs feat(org-settings): настройка ShowMinMaxStock для мин/макс остатков 2026-04-24 19:02:53 +05:00
20260425000000_Phase5g_RequiredProductGroup.cs feat(product): группа обязательна, ≥1 штрихкод, умные дефолты на новом 2026-04-25 11:24:10 +05:00
20260425000000_Phase5g_RequiredProductGroup.Designer.cs feat(product): группа обязательна, ≥1 штрихкод, умные дефолты на новом 2026-04-25 11:24:10 +05:00
20260425010000_Phase5h_AllowFractionalPrices.cs feat(org-settings): AllowFractionalPrices — переключатель дробных цен 2026-04-25 12:21:04 +05:00
20260425010000_Phase5h_AllowFractionalPrices.Designer.cs feat(org-settings): AllowFractionalPrices — переключатель дробных цен 2026-04-25 12:21:04 +05:00
20260425110000_Phase3a_PricingModel.cs feat(domain): pricing model rename and new fields (Phase3a) 2026-04-25 20:59:09 +05:00
20260425110000_Phase3a_PricingModel.Designer.cs feat(domain): pricing model rename and new fields (Phase3a) 2026-04-25 20:59:09 +05:00
20260425170000_Phase3b_PricingCleanup.cs feat(phase3b): drop IsActive, add ShelfLifeDays, restore PriceType IsSystem/IsRequired 2026-04-25 22:46:34 +05:00
20260425170000_Phase3b_PricingCleanup.Designer.cs feat(phase3b): drop IsActive, add ShelfLifeDays, restore PriceType IsSystem/IsRequired 2026-04-25 22:46:34 +05:00
20260425190000_Phase3b_FixPriceTypeIsSystem.cs fix(price-types): correct is-system seeder + require value > 0 + system-price filter/sort 2026-04-25 23:31:31 +05:00
20260425190000_Phase3b_FixPriceTypeIsSystem.Designer.cs fix(price-types): correct is-system seeder + require value > 0 + system-price filter/sort 2026-04-25 23:31:31 +05:00
20260426010000_Phase3b_DropPriceTypeIsDefault.cs chore(price-types): drop IsDefault flag + rename IsRetail label + uniqueness 2026-04-26 00:15:29 +05:00
20260426010000_Phase3b_DropPriceTypeIsDefault.Designer.cs chore(price-types): drop IsDefault flag + rename IsRetail label + uniqueness 2026-04-26 00:15:29 +05:00
20260426020000_Phase3b_DropProductShelfLifeDays.cs phase3b: product card cleanup + supply form simplification 2026-04-26 01:00:06 +05:00
20260426020000_Phase3b_DropProductShelfLifeDays.Designer.cs phase3b: product card cleanup + supply form simplification 2026-04-26 01:00:06 +05:00
20260426030000_Phase3b_DropSupplyInvoiceFields.cs phase3b: product card cleanup + supply form simplification 2026-04-26 01:00:06 +05:00
20260426030000_Phase3b_DropSupplyInvoiceFields.Designer.cs phase3b: product card cleanup + supply form simplification 2026-04-26 01:00:06 +05:00
20260426040000_Phase3b_AddShowDescriptionOnProduct.cs fix(migrations): catch-up Phase3b_AddShowDescriptionOnProduct 2026-04-26 01:10:36 +05:00
20260426040000_Phase3b_AddShowDescriptionOnProduct.Designer.cs fix(migrations): catch-up Phase3b_AddShowDescriptionOnProduct 2026-04-26 01:10:36 +05:00
20260427010000_Phase4_EmployeesAndRoles.cs feat(domain): Employee, EmployeeRole, RolePermissions entities + migration 2026-04-26 12:00:30 +05:00
20260427010000_Phase4_EmployeesAndRoles.Designer.cs fix(migrations): drop Employee.Navigation(RetailPointAssignments) to fix snapshot order 2026-04-26 12:11:13 +05:00
20260427020000_Phase4b_RolesSimplify.cs fix(roles): keep only Admin + Cashier as system, demote others to custom + migration 2026-04-26 12:41:13 +05:00
20260427020000_Phase4b_RolesSimplify.Designer.cs fix(roles): keep only Admin + Cashier as system, demote others to custom + migration 2026-04-26 12:41:13 +05:00
20260427030000_Phase4c_EmployeeExtraFields.cs feat(employee): add Salary, TaxNumber, Description, ImageUrl + radio role picker 2026-04-26 12:48:27 +05:00
20260427030000_Phase4c_EmployeeExtraFields.Designer.cs feat(employee): add Salary, TaxNumber, Description, ImageUrl + radio role picker 2026-04-26 12:48:27 +05:00
20260427040000_Phase4_SuperAdminConsole.cs feat(domain): Organization.IsArchived/AccountOwner + SuperAdminAuditLog + migration 2026-04-26 12:51:25 +05:00
20260427040000_Phase4_SuperAdminConsole.Designer.cs feat(domain): Organization.IsArchived/AccountOwner + SuperAdminAuditLog + migration 2026-04-26 12:51:25 +05:00
20260427050000_Phase4d_OptionalTenantOnDirectories.cs fix(migration): Phase4d таблица называется units_of_measure, не units 2026-04-26 16:32:52 +05:00
20260427050000_Phase4d_OptionalTenantOnDirectories.Designer.cs feat(directories): двухуровневые справочники Группы и Ед.измерения (системные + tenant) 2026-04-26 16:20:47 +05:00
20260427060000_Phase4e_SystemSettings.cs feat(super-admin): настраиваемый retention period для архивных орг 2026-04-26 17:59:24 +05:00
20260427060000_Phase4e_SystemSettings.Designer.cs feat(super-admin): настраиваемый retention period для архивных орг 2026-04-26 17:59:24 +05:00
AppDbContextModelSnapshot.cs feat(super-admin): настраиваемый retention period для архивных орг 2026-04-26 17:59:24 +05:00