[CLAUDE] Docs: chốt Session 20 turn 7 — Admin Ẩn/Hiện + Đổi tên menu eOffice (Chunk E)
Wrap-up docs cho 4 chunk code đã push: -2ea2d27Chunk A — Mig 27 MenuItem +IsVisible +DisplayLabel + 3-file rule -ef394f8Chunk B — BE PATCH /menus/{key} + extend DTOs + UpdateMenuItemCommand -059bfcbChunk C — FE Admin MenuVisibilityPage ~210 LOC + menu key + seed -1ed6530Chunk D — FE User Layout filter !isVisible + render effectiveLabel Files updated: - docs/STATUS.md — Last updated + Recently Done row S20 turn 7 trên cùng (giữ S20 PE Detail UI row nguyên văn §6.5) - docs/HANDOFF.md — Last updated + TL;DR Session 20 turn 7 trên đầu + pending S21+ + carry blockers (giữ TL;DR Session 20 + 19 nguyên §6.5) - docs/changelog/migration-todos.md — Phase 9 Session 20 turn 7 done section + 3 defer item S21+ (giữ S20 + S19 nguyên §6.5) - docs/changelog/sessions/2026-05-11-1700-menu-visibility-mig27.md (NEW) — session log đầy đủ Q&A + 4 chunk + verify chain + stats KHÔNG đụng rules / architecture / PROJECT-MAP / workflow-contract / forms-spec / database-guide / schema-diagram / CLAUDE.md per §6.5 (drift S20 turn 7 defer cron audit 2026-06-01 — Mig 27 + 1 endpoint + 1 menu key sẽ check chung lúc đó). Path filter CI sẽ skip (docs-only commit). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -157,6 +157,28 @@ Session log: `2026-04-28-chot-session-4-budget.md`.
|
||||
|
||||
## 📝 Phase 9 — UAT + Ops + carry over (Session 6+ active)
|
||||
|
||||
### ✅ Session 20 turn 7 done (2026-05-11) — Admin Ẩn/Hiện + Đổi tên menu eOffice (Mig 27, 5 chunk `2ea2d27` → `ef394f8` → `059bfcb` → `1ed6530` → Chunk E Docs)
|
||||
|
||||
User UAT yêu cầu admin quản lý menu eOffice (fe-user) — Ẩn/Hiện + Đổi tên. Confirm "chưa có" → tạo mới. User Q2=b clarify quan trọng: DisplayLabel CHỈ áp fe-user, admin sidebar giữ Label gốc.
|
||||
|
||||
- [x] **Chunk A (`2ea2d27`) Schema + Mig 27** — Domain MenuItem +IsVisible bool=true +DisplayLabel string?(200). EF config HasDefaultValue + HasMaxLength. Migration 27 `AddVisibilityAndDisplayLabelToMenuItems` (2 AddColumn) — 3-file rule. Apply LocalDB `_Dev` + `_Design` qua --connection override (memory `feedback_designtime_runtime_db`).
|
||||
|
||||
- [x] **Chunk B (`ef394f8`) BE API** — DTO MenuNodeDto + MenuItemDto +isVisible +displayLabel. GetMyMenuTreeQueryHandler pass through (KHÔNG filter server-side, 2 FE tự quyết). NEW UpdateMenuItemCommand + Validator + Handler (whitespace → null). MenusController +PATCH /api/menus/{key} [Authorize Policy="Permissions.Update"] body `{isVisible, displayLabel}`.
|
||||
|
||||
- [x] **Chunk C (`059bfcb`) FE Admin** — Domain MenuKeys +MenuVisibility + All[]. DbInitializer +leaf "Menu eOffice" Icon=Eye Order=94 (Workflows shift 94→95). Manual seed Mig 27 LocalDB Dev (INSERT MenuItems + Permissions Admin). FE Admin types/menu.ts mirror, menuKeys.ts +const, Layout resolver +/system/menu-visibility, App.tsx +Route. NEW pages/system/MenuVisibilityPage.tsx ~210 LOC: PageHeader + 4 StatCard + Search + Table 5 cột (Key mono + parentKey↳ / Tên gốc / Input "Tên hiển thị" inline / Toggle Eye-EyeOff emerald-amber / Save dirty + Khôi phục custom). onSuccess invalidate ['menus','all'] + ['my-menu'] live update sidebar.
|
||||
|
||||
- [x] **Chunk D (`1ed6530`) FE User** — fe-user types/menu.ts mirror. Layout.tsx filterForUser 2 tầng (USER_HIDDEN_KEYS hardcode structural + !isVisible dynamic). Helper effectiveLabel(n) = displayLabel?.trim() || label. Replace 3 callsite {node.label} → {effectiveLabel(node)}. USER_FIXED_TOP "__inbox" +isVisible:true cho type check. **fe-admin Layout KHÔNG đụng** — admin sidebar render Label gốc + show hết menu (user Q2=b).
|
||||
|
||||
- [x] **Chunk E Docs (current)** — STATUS Recently Done top + Last updated S20 turn 7. HANDOFF TL;DR Session 20 turn 7 trên đầu (giữ S20 prev nguyên §6.5). migration-todos done section (file này) + pending S21+. Session log `2026-05-11-1700-menu-visibility-mig27.md`. KHÔNG đụng rules / architecture / PROJECT-MAP / workflow-contract / forms-spec / database-guide / schema-diagram / CLAUDE.md (defer cron audit 2026-06-01).
|
||||
|
||||
**Stats Session 20 turn 7:** 26→**27 mig** (+1 AddVisibilityAndDisplayLabelToMenuItems), 59 DB tables (no change), ~141→**142 endpoints** (+1 PATCH /menus/{key}), 33→**34 FE pages** (+1 MenuVisibilityPage), ~60→**61 menu key** (+1 MenuVisibility), 81 test pass (Q4 UAT defer), 44 gotcha (no new). Memory entries 14 (no new).
|
||||
|
||||
**Defer Session 21+ (mới sau S20 turn 7):**
|
||||
|
||||
- [ ] Test PATCH /api/menus/{key} validate Key required + DisplayLabel trim
|
||||
- [ ] Skill `permission-matrix` cross-ref section "menu visibility" — defer cron audit 2026-06-01
|
||||
- [ ] UX verify trong UAT: admin ẩn menu cha → children có ẩn theo không? (FE filter check per-node `!n.isVisible`, parent vẫn hiện thì children render. Có thể cần propagate hidden tree-level nếu UAT phản hồi)
|
||||
|
||||
### ✅ Session 20 done (2026-05-11) — PE Detail UI restructure 3 yêu cầu UX user (4 chunk `9dee00d` → `2bba851` → `f2f01f4` → Chunk D Docs)
|
||||
|
||||
User UAT live feedback: "Logic khá OK rồi, điều chỉnh UI Duyệt NCC 1 tý". 3 yêu cầu cụ thể chốt qua Q&A 4 câu (Q1=a giữ Section "Chọn NCC TP" / Q2=a NCC shared + 1 hạng mục demo / Q3=a chỉ hiện NV đã ký / Q4 public luôn skip dotnet test). FE-only restructure (1 hook BE nhẹ auto-seed Detail).
|
||||
|
||||
Reference in New Issue
Block a user