| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import assert from 'node:assert/strict'
- import { test } from 'node:test'
- import { planMarker } from '../src/modules/cockpit/domain/markerPlan.js'
- import { facilityStatusTone } from '../src/modules/cockpit/domain/entityDetail.js'
- import { effectProfileFor, planDeviceEffects, combineEffectPlans } from '../src/modules/cockpit/domain/deviceEffects.js'
- import { facilityPointsWithDetails, facilityPointMarkers } from '../src/modules/cockpit/domain/facilityPoints.js'
- test('维护中设施使用蓝色工单状态,并复用设备旋转环参数', () => {
- const plan = planMarker({ kind: 'facility-point', facilityType: 'WATER_PLANT', status: '1' })
- assert.equal(plan.tint, 'lv3')
- assert.equal(facilityStatusTone('1'), 'lv3')
- assert.equal(plan.effectStatus, 'WORK_ORDER')
- assert.equal(plan.inner.icon, 'facilityPlant')
- const profile = effectProfileFor(plan.effectStatus)
- assert.deepEqual([profile.effect, profile.layers, profile.periodMs, profile.glow], ['spin', 1, 18000, false])
- })
- test('报警、显式预警与正常设施按真实状态取特效,未知码不按色键猜测', () => {
- for (const [status, tint, effectStatus, effect] of [
- ['2', 'lv1', 'ALARM', 'pulse'], ['WARNING', 'lv2', 'WARNING', 'blink'],
- [0, 'lv4', 'NORMAL', ''], ['OFFLINE', 'neutral', 'OFFLINE', ''],
- [undefined, 'neutral', '', ''], ['3', 'neutral', '', ''], ['constructor', 'neutral', '', ''],
- ]) {
- const plan = planMarker({ kind: 'facility-point', facilityType: 'PUMP_STATION', status })
- assert.equal(plan.tint, tint)
- assert.equal(plan.effectStatus, effectStatus)
- assert.equal(effectProfileFor(plan.effectStatus)?.effect || '', effect)
- }
- const overridden = planMarker({ kind: 'facility-point', status: '0', tone: 'lv1' })
- assert.equal(effectProfileFor(overridden.effectStatus), null)
- })
- test('详情状态优先,设施原始状态和实体主键不被视觉归一覆盖', () => {
- const rows = [{ key: 'WATER_PLANT|A', id: 'A', code: 'WP001', type: 'WATER_PLANT', status: '2' }]
- const points = facilityPointsWithDetails(rows, {
- 'WATER_PLANT|A': { ok: true, detail: { status: '1', coordinates: { longitude: 110.38, latitude: 28.43 } } },
- })
- const [row] = facilityPointMarkers(points)
- assert.equal(row.key, 'facility-point|WATER_PLANT|A')
- assert.equal(row.status, '1')
- assert.equal(row.tone, 'lv3')
- assert.equal(planMarker({ kind: row.kind, facilityType: row.type, status: row.status }).effectStatus, 'WORK_ORDER')
- assert.equal(rows[0].status, '2')
- })
- test('设施与设备共用开关和阈值,维修不计异常,跨图层超限只收敛', () => {
- const devices = ['1', '2', 'WARNING', '0', 'unknown'].map((status, index) => ({
- code: `facility-point|${index}`,
- status: planMarker({ kind: 'facility-point', status }).effectStatus,
- }))
- const off = planDeviceEffects({ devices, enabled: false })
- assert.deepEqual(off.animated, [])
- const on = planDeviceEffects({ devices, enabled: true, abnormalLimit: 2 })
- assert.deepEqual(on.animated.map((row) => row.effect), ['spin', 'pulse', 'blink'])
- assert.equal(on.ownAbnormalCount, 2)
- assert.equal(on.degraded, false)
- const other = planDeviceEffects({ devices: [{ code: 'device-A', status: 'ALARM' }], enabled: true })
- const combined = combineEffectPlans([on, other], { enabled: true, abnormalLimit: 2 })
- assert.equal(combined.abnormalCount, 3)
- assert.equal(combined.animatedCount, 4)
- assert.equal(combined.degraded, true)
- assert.deepEqual(combined.converge, { peak: 0.6, alpha: 0.5 })
- })
|