// src/services/avModalService.js import { logger } from '../utils/logger.js'; import { enrichAVForStore } from './enrichment/avEnrichmentCore.js'; export async function getAVDevicesForModal(storeNumber) { const storeNum = String(storeNumber).trim(); logger('av:modal', `Building enriched AV data for store ${storeNum}`); try { const enrichedDevices = await enrichAVForStore(storeNum, { shape: 'dashboard' }); // Simple clients for the grid only const clients = enrichedDevices.map(dev => ({ identifier: dev.identifier, deviceType: dev.isAtlasAmp ? 'wired-client' : (dev.meraki?.isWireless ? 'wireless-client' : 'wired-client'), name: dev.name, connectionType: dev.meraki?.connectionType || 'Wired', ip: dev.ip || '—', mac: dev.mac || '—', vlan: dev.vlan || '—', })); // Build fullDevices map - use the ORIGINAL enriched device const fullDevicesMap = {}; enrichedDevices.forEach(dev => { const key = (dev.identifier || '').toUpperCase().trim(); if (key) { fullDevicesMap[key] = { deviceType: dev.isAtlasAmp ? 'wired-client' : (dev.meraki?.isWireless ? 'wireless-client' : 'wired-client'), data: { ...dev }, // spread to ensure a clean full copy identifier: dev.identifier }; } }); // Debug AMP specifically if (fullDevicesMap['US002477AMP']) { const ampData = fullDevicesMap['US002477AMP'].data; logger('av:modal', `AMP in fullDevicesMap - isAtlasAmp: ${ampData.isAtlasAmp}`); logger('av:modal', `AMP full data keys: ${Object.keys(ampData)}`); } logger('av:modal', `Pre-loaded ${enrichedDevices.length} enriched devices → ${Object.keys(fullDevicesMap).length} in lookup map`); return { success: true, storeNumber: storeNum, clients, fullDevices: fullDevicesMap }; } catch (err) { logger('av:modal', `Error: ${err.message}`, 'error'); return { success: false, message: err.message }; } }