All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m24s
Anh yêu cầu (screenshot eoffice): ẩn các tính năng chưa golive + thu hồi phân quyền user thường; nhóm Danh mục đưa xuống cuối. - NEW RevokeTemporarilyHiddenModulesAsync (chạy cuối seed pipeline): set 4 cờ CRUD=false cho MỌI role TRỪ Admin trên keys Hrm* (gồm Hrm_Config*) + Off* (gồm Off_ChamCong thuộc Cá nhân) + Personal. Giữ row (không xóa) — flip lại nhanh khi golive. Menu tự ẩn cả 2 app (GetMyMenuTree lọc CanRead). - SeedAllRolesReviewReadPermissionsAsync: thu hẹp grant scope còn Master/Catalogs/Pe_* (bỏ Hrm/Off/Personal — không re-grant cái vừa revoke). - Menu "Danh mục" (Master) Order 20→80 — cuối vùng nghiệp vụ, trước System 90. Main upsert tự re-set Order trên DB cũ (idempotent sẵn). - KHÔNG đụng: Pe_* (sếp cần all-role) + Master/Catalogs CanRead (flow PE cần xem master data) + Admin (quản trị) + IsVisible layer (Menu eOffice toggle). Runtime-proof Dev: MasterOrder=80 · NonAdminHrmOffPersonalCanRead=0 · AdminHrmOffCanRead=28 · NonAdminPeCanCreate=120 · NonAdminMasterCanRead=48. Build 0/0, test 240 PASS. Lưu ý mức che: menu + permission matrix; URL gõ trực tiếp chưa chặn (FE không PermissionGuard per-route — chấp nhận "tạm ẩn"). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>