| 1234567891011121314151617181920212223242526272829303132333435 |
- 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));
|