Files
Deep-Package-Inspection/docs/log/2026-07-28-2235-n-fix-agents-viewas.md
T

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

  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