/** * v1.7.6 — _READ_SUCCESS / _WRITE_SUCCESS SIMPLE 命令终态后缀回归测试 * * 触发:v1.7.5 wire 联调 req_1778811285514_oan6qa (SYNC_FUNCTIONS_SWITCH_READ_SUCCESS) * 设备端 0.7s 内返回 status: COMPLETED 但 SUFFIX_RULES 缺规则 * → 命中 _SUCCESS 误判 IN_PROGRESS → Edge 协议校验拒收 → 30s 假 timeout * * 修复:新增 _READ_SUCCESS / _WRITE_SUCCESS 终态后缀规则(优先级 > _SUCCESS) */ import { resolveCodeMeta, isKnownCode, MessageStatus } from '../code-meta'; describe('v1.7.6 — _READ_SUCCESS / _WRITE_SUCCESS SIMPLE 终态后缀', () => { describe('SIMPLE READ 命令终态', () => { test('SYNC_FUNCTIONS_SWITCH_READ_SUCCESS 落终态成功(修复 wire 联调)', () => { const meta = resolveCodeMeta('SYNC_FUNCTIONS_SWITCH_READ_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.status).toBe(MessageStatus.COMPLETED); expect(meta.semantic).toBe('success'); expect(meta.level).toBe('INFO'); expect(meta.requiresErrorBlock).toBe(false); }); test('SYNC_PROGRAM_CONTROL_READ_SUCCESS 终态', () => { const meta = resolveCodeMeta('SYNC_PROGRAM_CONTROL_READ_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.status).toBe(MessageStatus.COMPLETED); }); test('DEVICE_DATETIME_INFORMATION_READ_SUCCESS 终态', () => { const meta = resolveCodeMeta('DEVICE_DATETIME_INFORMATION_READ_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.status).toBe(MessageStatus.COMPLETED); }); test('DEVICE_SELF_TEST_RESULTS_READ_SUCCESS 终态', () => { const meta = resolveCodeMeta('DEVICE_SELF_TEST_RESULTS_READ_SUCCESS'); expect(meta.isTerminal).toBe(true); }); }); describe('SIMPLE WRITE 命令终态', () => { test('SYNC_FUNCTIONS_SWITCH_WRITE_SUCCESS 终态成功', () => { const meta = resolveCodeMeta('SYNC_FUNCTIONS_SWITCH_WRITE_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.status).toBe(MessageStatus.COMPLETED); expect(meta.semantic).toBe('success'); }); test('SYNC_PROGRAM_PUZZLE_WRITE_SUCCESS 终态', () => { const meta = resolveCodeMeta('SYNC_PROGRAM_PUZZLE_WRITE_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.status).toBe(MessageStatus.COMPLETED); }); }); describe('优先级:EXPLICIT_META > SUFFIX_RULES', () => { test('SYNC_MONITORING_TABLE_READ_SUCCESS 命中 EXPLICIT_META 而非 SUFFIX', () => { // 这条已显式 explicit,新 suffix rule 不影响 const meta = resolveCodeMeta('SYNC_MONITORING_TABLE_READ_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.status).toBe(MessageStatus.COMPLETED); expect(meta.semantic).toBe('success'); }); }); describe('优先级:长后缀优先(_READ_SUCCESS > _SUCCESS)', () => { test('XXX_READ_SUCCESS 命中 _READ_SUCCESS 终态规则', () => { const meta = resolveCodeMeta('XXX_READ_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.semantic).toBe('success'); }); test('XXX_WRITE_SUCCESS 命中 _WRITE_SUCCESS 终态规则', () => { const meta = resolveCodeMeta('XXX_WRITE_SUCCESS'); expect(meta.isTerminal).toBe(true); expect(meta.semantic).toBe('success'); }); test('PROGRAM_DOWNLOAD_HEADER_SUCCESS 落 _SUCCESS 阶段进度(非终态)', () => { // 阶段成功(不含 READ/WRITE)仍是 IN_PROGRESS step_success const meta = resolveCodeMeta('PROGRAM_DOWNLOAD_HEADER_SUCCESS'); expect(meta.isTerminal).toBe(false); expect(meta.status).toBe(MessageStatus.IN_PROGRESS); expect(meta.semantic).toBe('step_success'); }); }); describe('回归:其他 SUFFIX_RULES 保持非终态', () => { test('_FAILED 非终态(阶段错误)', () => { const meta = resolveCodeMeta('PROGRAM_DOWNLOAD_HEADER_FAILED'); expect(meta.isTerminal).toBe(false); expect(meta.status).toBe(MessageStatus.IN_PROGRESS); expect(meta.semantic).toBe('phase_failed'); }); test('_START 非终态', () => { const meta = resolveCodeMeta('PROGRAM_DOWNLOAD_START'); expect(meta.isTerminal).toBe(false); expect(meta.status).toBe(MessageStatus.IN_PROGRESS); }); test('_PROGRESS 非终态', () => { const meta = resolveCodeMeta('PROGRAM_DOWNLOAD_PROGRESS'); expect(meta.isTerminal).toBe(false); expect(meta.status).toBe(MessageStatus.IN_PROGRESS); }); test('_COMPLETED 阶段结束(仍非终态)', () => { const meta = resolveCodeMeta('PROGRAM_DOWNLOAD_COMPLETED'); expect(meta.isTerminal).toBe(false); expect(meta.semantic).toBe('phase_end'); }); test('_WARN 非终态告警', () => { const meta = resolveCodeMeta('PROGRAM_UPLOAD_CAN_BUS_ALARM_WARN'); expect(meta.isTerminal).toBe(false); expect(meta.semantic).toBe('warning'); }); }); describe('isKnownCode:新后缀计为已知', () => { test('SYNC_FUNCTIONS_SWITCH_READ_SUCCESS 是已知 code', () => { expect(isKnownCode('SYNC_FUNCTIONS_SWITCH_READ_SUCCESS')).toBe(true); }); test('SYNC_FUNCTIONS_SWITCH_WRITE_SUCCESS 是已知 code', () => { expect(isKnownCode('SYNC_FUNCTIONS_SWITCH_WRITE_SUCCESS')).toBe(true); }); test('完全陌生的 code 不是已知', () => { expect(isKnownCode('TOTALLY_RANDOM_GARBAGE')).toBe(false); }); }); });