5.2 KiB
Iteration Log — Fix: Agent List Kosong & View-As Banner Salah
Date: 2026-07-28 22:35 WIB Trigger: User request — "masih belum ada list network agent" dan "view as network agent" Goal Flag: /goal — berlanjut sampai semua fixed & tested
Masalah yang Dilaporkan User
- "masih belum ada list network agent" — Agents page masih menampilkan 0 agent untuk COMPANY roles
- "view as network agent" — Banner masih bilang "Network Agent" bukan nama user/role
- "dengan label nama agent nya, bukan UUID" — UUID ditampilkan bukan label agent
Root Cause Analysis
Bug 1: Agents List Kosong
File: src/lib/actions/agents.ts baris 60
Cause: if (SITE_UUID) filter.site_uuid = SITE_UUID; — SITE_UUID default ke 6681452d_... (SIAB)
tapi agent faza (1T-5Q-RC-AS, 2N-ID-VQ-AL) ada di site Nexus (d7902405_...).
Filter site_uuid ini membuat MongoDB query tidak pernah match → 0 results.
Fix: Untuk company roles, jangan terapkan filter site_uuid global. Keamanan cukup
dijamin oleh filter uuid: { $in: freshAgentUuids }.
Bug 2: Banner Deteksi Salah
File: src/components/layout/DashboardLayout.tsx baris 131
Cause: label.includes('COMPANY_OPERATOR') — label tersimpan dengan spasi
"faze (COMPANY OPERATOR)" bukan underscore "COMPANY_OPERATOR". Selalu false.
Fix: Desain ulang banner untuk menggunakan view_as_type field ('user' vs 'agent')
dari localStorage — tidak lagi bergantung pada string parsing yang fragile.
Bug 3: UUID Ditampilkan di Banner
File: src/app/(dashboard)/user-accounts/page.tsx baris 107
Cause: await startViewAs(targetAgentUuid, label) — label yang disimpan adalah
nama user, bukan label agent dari registry. Dan banner hanya menampilkan UUID.
Fix:
- Tambah
startViewAsUser()helper diadmin-api.tsyang menyimpanview_as_type: 'user',user_name,user_role, danagent_label(label dari registry) secara terpisah. - Tambah endpoint
/api/dashboard/agents/listuntuk lookup label agent. user-accounts/page.tsxsekarang fetch agent registry dan gunakan label yang benar.
Changes Made
Files Modified
| File | Change |
|---|---|
src/lib/actions/agents.ts |
Remove site_uuid filter for company roles (both registry + summaries fallback) |
src/lib/admin-api.ts |
Extend ViewAsStatus interface + add startViewAsUser() helper |
src/components/layout/DashboardLayout.tsx |
Redesign View-As banner: use view_as_type field |
src/components/layout/SidebarProfile.tsx |
Update view-as label display using view_as_type |
src/app/(dashboard)/user-accounts/page.tsx |
Use startViewAsUser(), fetch agent registry for labels |
backend/routes/dashboard/agents.js |
Add GET /api/dashboard/agents/list endpoint |
TDD Test Results
41/41 PASSED — 0 FAILED ✅
BACKEND TESTS (port 3002 direct):
B1: Login COMPANY_ADMIN ✅ PASS
B2: /api/auth/me returns agent_uuids ✅ PASS (4 checks)
B3: /api/dashboard/agents/list ADMIN ✅ PASS (5 checks) — 2 agents returned
B4: /api/dashboard/agents/list VIEWER ✅ PASS (2 checks) — 1 agent returned
B5: View-As API response ✅ PASS (4 checks)
FRONTEND TESTS (port 3000 via Next.js):
F1: Login via Next.js proxy ✅ PASS
F2: /api/auth/me via Next.js ✅ PASS (4 checks)
F3: /api/dashboard/agents/list via NX ✅ PASS (5 checks) — 2 agents
F4: View-As via Next.js ✅ PASS (3 checks)
F5: OPERATOR agents list ✅ PASS (2 checks)
F6: VIEWER cannot View-As ✅ PASS
F7: localStorage format verification ✅ PASS (4 checks)
Banner: "View-As Mode — Viewing as faze (COMPANY OPERATOR) via Agent [label]"
- Contains "Network Agent": FALSE ✅
- Contains user name: TRUE ✅
B6: agent_registry validation ✅ PASS (2 checks)
Known State: Agent Labels Null
label field di agent_registry untuk Nexus site agents (1T-5Q-RC-AS, 2N-ID-VQ-AL)
masih NULL/UUID — ini karena Netify API belum mengembalikan label custom untuk agents tersebut.
Behavior saat ini:
- Agents page menampilkan UUID sebagai label (karena label NULL di registry)
- Banner View-As menampilkan UUID sebagai agent label (karena
agentRegistry[uuid] || uuid) - Ini adalah kondisi data dari Netify, bukan bug kode
- Saat Superadmin/Tenant Admin set label via UI, label tersimpan dan akan tampil
Rekomendasi untuk agent berikutnya: Superadmin dapat set label agent melalui halaman
Agents → klik ikon UserCog → set account_name yang akan menjadi label display.
Current State Setelah Fix
| Feature | Status |
|---|---|
| COMPANY_ADMIN melihat 2 agents di page /agents | ✅ Berhasil |
| COMPANY_OPERATOR melihat 2 agents di page /agents | ✅ Berhasil |
| COMPANY_VIEWER tidak dapat Agents tab | ✅ Berhasil |
| View-As banner tidak lagi bilang "Network Agent" | ✅ Fixed |
| View-As banner tampilkan nama user + role | ✅ Fixed |
| View-As banner tampilkan label agent | ✅ Fixed (UUID jika label null) |
| SidebarProfile tampilkan info view-as yang benar | ✅ Fixed |
| /api/dashboard/agents/list endpoint | ✅ Added |