# 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 1. **"masih belum ada list network agent"** — Agents page masih menampilkan 0 agent untuk COMPANY roles 2. **"view as network agent"** — Banner masih bilang "Network Agent" bukan nama user/role 3. **"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:** 1. Tambah `startViewAsUser()` helper di `admin-api.ts` yang menyimpan `view_as_type: 'user'`, `user_name`, `user_role`, dan `agent_label` (label dari registry) secara terpisah. 2. Tambah endpoint `/api/dashboard/agents/list` untuk lookup label agent. 3. `user-accounts/page.tsx` sekarang 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 |