import assert from 'node:assert/strict' import { createPinia, setActivePinia } from 'pinia' import { useRuntimeStore } from '../../../src/modules/cockpit/stores/runtimeStore.js' import { useEventStore } from '../../../src/modules/cockpit/stores/eventStore.js' import { useOverviewStore } from '../../../src/modules/cockpit/stores/overviewStore.js' import { useDetailStore } from '../../../src/modules/cockpit/stores/detailStore.js' setActivePinia(createPinia()) const runtime = useRuntimeStore() const events = useEventStore() const overview = useOverviewStore() const detail = useDetailStore() const calls = [] events.loadPanels = async () => { calls.push('events') } overview.loadPanels = async () => { calls.push('overview') } detail.loadEquipmentAggregate = async (code) => { calls.push(code) } detail.selection = { level: 'equipment', deviceCode: 'EQ-1' } const frame = { serverUpdatedAt: '2026-10-09T12:00:00+08:00', scanIntervalMs: 60000, items: [{ code: 'WO-1', deviceCode: 'EQ-1', stateCode: 4 }] } assert.equal(runtime.ingestWorkOrders(frame), true) assert.deepEqual(calls, ['events', 'overview', 'EQ-1']) assert.equal(runtime.orderScanIntervalMs, 60000) assert.equal(runtime.ingestWorkOrders(frame), false) assert.equal(runtime.ingestWorkOrders({ ...frame, serverUpdatedAt: '2026-10-08T12:00:00+08:00' }), false) assert.equal(calls.length, 3) assert.equal(runtime.ingestWorkOrders({ ...frame, items: [{ code: 'WO-2', deviceCode: 'EQ-2' }] }), true) assert.deepEqual(calls.slice(3), ['events', 'overview']) assert.equal(detail.selection.deviceCode, 'EQ-1') assert.deepEqual(runtime.statusState.deviceStates, {}) detail.setSection('equipmentAggregate', { state: 'success', data: { deviceCode: 'EQ-1', sections: {} } }) detail.closeDetail() assert.equal(runtime.ingestWorkOrders({ ...frame, serverUpdatedAt: '2026-10-09T12:01:00+08:00' }), true) assert.equal(detail.sections.equipmentAggregate.loaded, false) detail.selection = { level: 'equipment', deviceCode: 'EQ-1' } const before = calls.length runtime.ingest({ deviceCode: 'EQ-1', status: 'ALARM', serverUpdatedAt: '2026-10-09T12:02:00+08:00', eventId: 'ALARM-1' }) assert.deepEqual(calls.slice(before), ['events', 'overview', 'EQ-1']) runtime.reset() console.log('T16 real Pinia store routing passed: stale rejection, same-time different orders, affected detail only, device state isolation.')