import fs from 'node:fs'; const BASE = 'http://192.168.110.96:8301/api/cockpit/v1'; const DEVICES = ['21119740','41010500001320000001','41010500001320000002','860347065467627','8652052334','TEST-CBLL222222222','TEST-CBYL5432168','TEST-CNXHS0000001','TEST-TCLLJ002215','TEST_001']; const OPEN_WO = new Set([0,1,2,3,4,6]); const OPEN_WARN = new Set(['PENDING','PROCESSING','HANDLING','RELEASED']); async function get(path, file) { const res = await fetch(BASE + path); const text = await res.text(); if (file) fs.writeFileSync(file, text); return { status: res.status, json: JSON.parse(text) }; } const rows = []; for (const c of DEVICES) { let agg, wo; try { agg = await get('/equipments/' + encodeURIComponent(c) + '/detail-aggregate', 'agg-' + c + '.json'); } catch (e) { agg = null; } try { wo = await get('/equipments/' + encodeURIComponent(c) + '/work-orders', 'wo-' + c + '.json'); } catch (e) { wo = null; } const d = agg && agg.json && agg.json.data ? agg.json.data : {}; const alarms = (d.alarms && d.alarms.data) || []; const warnings = (d.warnings && d.warnings.data) || []; const workOrders = (d.workOrders && d.workOrders.data) || []; const unhandled = alarms.filter(a => a.alarmStatus === 0 || a.alarmStatus === '0' || a.status === 0); const openWarn = warnings.filter(w => OPEN_WARN.has(String(w.status||'').toUpperCase())); const openWo = workOrders.filter(o => OPEN_WO.has(Number(o.orderStatus ?? o.stateCode ?? o.status))); rows.push({ code: c, aggState: d.aggregateState, alarmsAll: alarms.length, alarmsUnhandled: unhandled.length, alarmStatusSample: alarms.slice(0,3).map(a=>({alarmStatus:a.alarmStatus, workOrderId:a.workOrderId, code:a.alarmNo||a.alarmCode})), warningsAll: warnings.length, warningsOpen: openWarn.length, warningStatuses: [...new Set(warnings.map(w=>w.status))], woInAggregate: workOrders.length, woOpen: openWo.length, woStatuses: workOrders.map(o=>({id:o.workOrderId||o.orderId, s:o.orderStatus??o.stateCode??o.status})), woEndpointCount: wo && wo.json && wo.json.data ? ((wo.json.data.list||wo.json.data.records||wo.json.data).length ?? null) : null, woEndpointData: wo && wo.json ? JSON.stringify(wo.json.data).slice(0,200) : null, }); } fs.writeFileSync('device-facts.json', JSON.stringify(rows,null,1)); for (const r of rows) console.log(JSON.stringify(r));