| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import assert from 'node:assert/strict'
- import { normalizeEntityDetail } from '../src/modules/cockpit/domain/entityDetail.js'
- // —— 「等级明明能拿到却标注未知」的三种输入形状都要认 ——
- const fromNumber = normalizeEntityDetail({ kind: 'event', id: 'W1', family: 'WARNING' }, { warningNo: 'W1', level: 2 })
- assert.equal(fromNumber.summary.find((s) => s.label === '等级').value, '2级')
- assert.equal(fromNumber.tone, 'lv2')
- const fromTaggedObject = normalizeEntityDetail({ kind: 'event', id: 'W2', family: 'WARNING' }, {
- code: 'W2', level: { tone: 'lv3', label: '3级' }, statusText: '待处理',
- })
- assert.equal(fromTaggedObject.summary.find((s) => s.label === '等级').value, '3级')
- assert.equal(fromTaggedObject.tone, 'lv3')
- const fromLevelName = normalizeEntityDetail({ kind: 'event', id: 'A1', family: 'ALARM' }, { alarmNo: 'A1', alarmLevel: '二级预警' })
- assert.equal(fromLevelName.summary.find((s) => s.label === '等级').value, '2级')
- const unknown = normalizeEntityDetail({ kind: 'event', id: 'X1', family: 'ALARM' }, { alarmNo: 'X1' })
- assert.equal(unknown.summary.find((s) => s.label === '等级').value, '等级未知')
- // —— 预警与报警的处置流程必须分开(阶段节点不同) ——
- assert.deepEqual(fromNumber.stage.map((s) => s.label), ['发布', '接收', '处置', '核验', '解除'])
- assert.deepEqual(fromLevelName.stage.map((s) => s.label), ['产生', '确认', '处置', '关闭'])
- assert.notDeepEqual(fromNumber.stage.map((s) => s.label), fromLevelName.stage.map((s) => s.label))
- // —— 预警与报警的详情标签也不同 ——
- assert.deepEqual(fromNumber.tabs.map((t) => t.label), ['预警信息', '处置记录', '关联报警', '附件'])
- assert.deepEqual(fromLevelName.tabs.map((t) => t.label), ['报警信息', '设备信息', '处置记录', '附件'])
- // —— 工单:有主键就能展开,不得再说「缺少工单主键」 ——
- const order = normalizeEntityDetail({ kind: 'work-order', id: '42' }, {
- order: { orderId: 42, orderNo: 'WO42', orderStatus: 3, orderDesc: '测试', deviceName: '水位计' },
- logs: [{ operationType: '接单', operationTime: '2026-10-29 10:00:00', orderStatus: 2 }],
- })
- assert.equal(order.order.id, '42')
- assert.equal(order.order.code, 'WO42')
- assert.ok(order.track, '工单应有处置轨迹')
- assert.deepEqual(order.tabs.map((t) => t.label), ['工单信息', '处理流程', '设备信息', '附件'])
- // —— 预警详情的移动端信封(basicInfo + 分区)要能读出真实字段 ——
- const envelope = normalizeEntityDetail({ kind: 'event', id: 'W9', family: 'WARNING' }, {
- basicInfo: { warningNo: 'W9', warningName: '电导率预警', warningLevel: 2, status: 'PENDING', deviceName: '测试设备' },
- disposalHistory: [{ disposalContent: '已现场核实' }],
- attachmentList: [{ attachmentName: '报告.pdf' }, { attachmentName: '照片.jpg' }],
- alarmList: [{ alarmNo: 'A-1', alarmName: '关联报警一', auditStatusName: '确认报警' }],
- supervisionList: [{}],
- })
- assert.equal(envelope.summary.find((s) => s.label === '等级').value, '2级')
- assert.equal(envelope.attachments.length, 2)
- assert.equal(envelope.relatedAlarms.length, 1)
- assert.ok(envelope.records.length >= 1)
- console.log('t65-warning-detail: 24/24')
|