food-market/src/food-market.infrastructure/Persistence/Migrations
nns f38d34f42d feat(domain): Employee, EmployeeRole, RolePermissions entities + migration
Базовый каркас модуля «Сотрудники и Роли» (по образу сторонняя система):

Domain:
- Employee — сотрудник организации (UserId nullable: запись может
  существовать без логина), ФИО + Position + Email/Phone + Role + IsActive
  + FiredAt + RetailPointAssignments.
- EmployeeRole — роль с IsSystem флагом и owned RolePermissions.
- RolePermissions — 21 булев флаг по группам (Каталог/Закупки/Продажи/
  Контрагенты/Отчёты/Настройки) + helper All() для админа.
- EmployeeRetailPointAssignment — ассоциация сотрудника с RetailPoint
  (для роли Кассир — к каким кассам привязан).

Infrastructure:
- OrganizationsHrConfigurations с OwnsOne(...).ToJson("permissions")
  для permissions — JSONB-колонка вместо отдельной таблицы.
- DbSet<EmployeeRole/Employee/EmployeeRetailPointAssignment>.
- Уникальные индексы: (OrgId, RoleName), (OrgId, UserId) с filter
  WHERE UserId IS NOT NULL, (EmployeeId, RetailPointId).

Migration Phase4_EmployeesAndRoles создаёт три таблицы. Сидер
системных ролей и привязка существующего admin'а к Employee —
следующим коммитом, контроллеры и UI — далее.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 12:00:30 +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 feat(domain): Employee, EmployeeRole, RolePermissions entities + migration 2026-04-26 12:00:30 +05:00
AppDbContextModelSnapshot.cs feat(domain): Employee, EmployeeRole, RolePermissions entities + migration 2026-04-26 12:00:30 +05:00