Files
solution-erp/.claude/workflows/runs/2026-07-31-S164-4gd-khkk-fanout/sub-implbe-k4a.md
2026-08-01 08:51:46 +07:00

1.9 KiB

IMPLBE-K4A: IN-PROGRESS

Lane BE K4a — 49 row menu KHKK 8-nhóm + MenuKeys.All + labelBackfill + grant

Bắt đầu: 2026-08-01. 0-migration. Scope: MenuKeys.cs + DbInitializer.cs ONLY.

Nhật ký từng bước (append sau MỖI file sửa xong)

  • B0 artifact tạo (dòng này = bằng chứng file ra đời TRƯỚC mọi Read)
  • B1 đọc spec pin 2 file + re-ground anchor THẬT (đo lại, không tin số spec):
    • DbInitializer.cs khối menu KHKK G1: :1950-1963 (root :1951 + Khkk_G1 :1956 + 6 leaf :1958-1963) — icon group FileCheck, leaf Network/List/Plus/CheckCircle2/CheckCheck/Trash2, Order 1-6 ✔ khớp brief
    • upsert-block THẬT (trước khi tôi sửa): existingItems :2111 → foreach :2114-2131; nhánh key-đã-tồn-tại chỉ re-set Order rồi continue = :2116-2128
    • labelBackfill dict :2141-2183 · apply-loop :2184-2198
    • 2 comment stale tự-trỏ ":1893-1905": :2095:2149 ✔ (số THẬT sẽ đo LẠI sau khi thêm 49 row)
    • site-1 SeedAdminPermissionsAsync loop MenuKeys.All :2246 (chỉ Admin) · site-2 KhkkKeys() :2373-2377 (feed reviewKeys :2398-2412, CanRead mọi role, skip-existing) · site-3 SeedKeHoachKyKetAccessAsync :2603 · site-4 revoker gọi :2285, prefix Hrm*/Off*/Personal :2487-24880 match Khkk (đã soi trực tiếp, đúng vá-11)
    • MenuKeys.All hiện đếm tay = 64 (khớp mốc brief) — số THẬT sẽ đo bằng runtime ở B6
    • GetMyMenuTreeQuery.cs:96 HasAccess(n) = n.CanRead || n.Children.Any(HasAccess)group-key KHÔNG cần CanRead row của chính nó (vá-10 đúng: lý-do "group cần row để render" trong invest doc là SAI) — nhưng leaf thì CẦN
    • nhãn 8 nhóm đối chiếu nguồn danh-muc-sp002-transcribe.md:22-29 → khớp 8/8 brief, N2 CÓ vế "phá dỡ" ✔
  • B2 MenuKeys.cs +49 key vào All