// Đồng bộ tay với BE SolutionErp.Domain.Identity.MenuKeys
export const MenuKeys = {
  Dashboard: 'Dashboard',
  Master: 'Master',
  Suppliers: 'Suppliers',
  Projects: 'Projects',
  Departments: 'Departments',
  // 4 master catalogs cho Details add form autocomplete (Plan CA S29 — UI sang fe-user)
  Catalogs: 'Catalogs',
  CatalogUnits: 'CatalogUnits',
  CatalogMaterials: 'CatalogMaterials',
  CatalogServices: 'CatalogServices',
  CatalogWorkItems: 'CatalogWorkItems',
  // [K1 — S164, Mig 70] Danh mục Hợp đồng SOL-CCM-SP-002 (86 dòng × 8 nhóm duyệt).
  // Mirror BE MenuKeys.cs:28 — leaf thứ 5 dưới group `Catalogs`, page dùng chung
  // CatalogsPage qua `:kind` = `contract-catalog`.
  ContractCatalog: 'ContractCatalog',
  Contracts: 'Contracts',
  Forms: 'Forms',
  Reports: 'Reports',
  System: 'System',
  Users: 'Users',
  Roles: 'Roles',
  Permissions: 'Permissions',
  MenuVisibility: 'MenuVisibility',
  Workflows: 'Workflows',
  PurchaseEvaluations: 'PurchaseEvaluations',
  PeWorkflows: 'PeWorkflows',
  // Quy trình duyệt MỚI (Mig 22 — Session 17, 2026-05-08)
  ApprovalWorkflowsV2: 'ApprovalWorkflowsV2',
  AwV2_DuyetNcc: 'AwV2_DuyetNcc',
  AwV2_DuyetNccPhuongAn: 'AwV2_DuyetNccPhuongAn',
  // [W2e S182] 8 leaf Designer theo NHÓM DUYỆT của Kế hoạch ký kết HĐ.
  // Mirror BE `MenuKeys.cs:127-134` (8 key này VÀO `All` ⇒ 32 policy AwV2_KhkkN{n}.{R,C,U,D}).
  // ⚠️ File này là bản chép TAY của BE và hiện chỉ dùng cho `can(menuKey, action)`;
  // 8 key dưới đây CHƯA có call-site nào — chép vào để bảng đối chiếu FE↔BE không
  // khuyết, tránh lượt sau đọc chỗ này rồi kết luận "BE chưa có key nhóm".
  // Đường vào sidebar KHÔNG đi qua đây: sidebar dựng từ `/api/menus/me` rồi
  // `Layout.tsx:188` (`/^KhkkN[1-8]$/`) mới đổi key thành đường dẫn.
  AwV2_KhkkN1: 'AwV2_KhkkN1',
  AwV2_KhkkN2: 'AwV2_KhkkN2',
  AwV2_KhkkN3: 'AwV2_KhkkN3',
  AwV2_KhkkN4: 'AwV2_KhkkN4',
  AwV2_KhkkN5: 'AwV2_KhkkN5',
  AwV2_KhkkN6: 'AwV2_KhkkN6',
  AwV2_KhkkN7: 'AwV2_KhkkN7',
  AwV2_KhkkN8: 'AwV2_KhkkN8',
  // [S61 Mig 50] Module Ngân sách cũ (Budgets + Bg_*) XÓA — thay bằng bảng
  // "Tổng hợp ngân sách trình ký" per (Dự án, Hạng mục) trong phiếu PE.
  // Module Hồ sơ Nhân sự (Mig 34 — Phase 10.1 G-H1 Session 33, 2026-05-26)
  Hrm: 'Hrm',
  HrmHoSo: 'Hrm_HoSo',
  // Cấu hình HRM (Mig 35 — Phase 10.2 G-H2 Session 34, 2026-05-27)
  HrmConfig: 'Hrm_Config',
  HrmConfigLeaveTypes: 'Hrm_Config_LeaveTypes',
  HrmConfigHolidays: 'Hrm_Config_Holidays',
  HrmConfigShifts: 'Hrm_Config_Shifts',
  HrmConfigOtPolicies: 'Hrm_Config_OtPolicies',
  // P11-C (S51) — danh mục xe công + tài xế (dùng khi đặt xe)
  HrmConfigVehicles: 'Hrm_Config_Vehicles',
  HrmConfigDrivers: 'Hrm_Config_Drivers',
  // Module Văn phòng số — Danh bạ nội bộ (Phase 10.2 G-O1 Session 34, 2026-05-27)
  Off: 'Off',
  // Bảng điều khiển Văn phòng số (landing dashboard — admin auto via All)
  OffDashboard: 'Off_Dashboard',
  OffDanhBa: 'Off_DanhBa',
  // Văn phòng số — Phòng họp (Phase 10.2 G-O2 — Mig 36 Session 36, 2026-05-28)
  OffPhongHop: 'Off_PhongHop',
  OffPhongHopView: 'Off_PhongHop_View',
  OffPhongHopManage: 'Off_PhongHop_Manage',
  OffPhongHopBook: 'Off_PhongHop_Book',
  // Phase 10.3 G-O3 (S37) — Đề xuất (Proposal)
  OffDeXuat: 'Off_DeXuat',
  OffDeXuatList: 'Off_DeXuat_List',
  OffDeXuatCreate: 'Off_DeXuat_Create',
  OffDeXuatInbox: 'Off_DeXuat_Inbox',
  // Phase 10.3-10.4 G-O4+G-O5+G-O6+G-P1+G-H3 (S38) — Workflow Apps skeleton
  OffDonTu: 'Off_DonTu',
  OffDonTuLeave: 'Off_DonTu_Leave',
  OffDonTuOt: 'Off_DonTu_Ot',
  OffDonTuTravel: 'Off_DonTu_Travel',
  OffDatXe: 'Off_DatXe',
  OffItTicket: 'Off_ItTicket',
  OffChamCong: 'Off_ChamCong',
  // P11-E (S52) — Báo cáo chấm công (admin-only leaf dưới Văn phòng số)
  OffAttendanceReport: 'Off_AttendanceReport',
  HrmDashboard: 'Hrm_Dashboard',
  // [S57] Nhóm "Cá nhân" (mirror Puro) — Chấm công re-parent Off → Personal
  Personal: 'Personal',
} as const

export type MenuKey = typeof MenuKeys[keyof typeof MenuKeys]
export type CrudAction = 'Read' | 'Create' | 'Update' | 'Delete'
