@thejrsoft/subway-protocol 1.4.13 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,148 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.5.0] - 2026-05-12
4
+
5
+ ### ⚠️ BREAKING CHANGES — 无兼容、无 fallback(系统未上线)
6
+
7
+ #### 1. 统一失败信号 schema(`data.error` 嵌套对象)
8
+
9
+ 所有失败上报(`level=ERROR` / `status=FAILED`)必须使用新 schema:
10
+
11
+ ```json
12
+ {
13
+ "report": {
14
+ "code": "PROGRAM_UPLOAD_FAILED",
15
+ "level": "ERROR",
16
+ "message": "Program download timed out",
17
+ "messageEn": "Program download timed out",
18
+ "data": {
19
+ "error": {
20
+ "phase": "PROGRAM_FETCH",
21
+ "step": "Download",
22
+ "category": "TIMEOUT",
23
+ "detail": "HTTP 504 from CDN after 30s, 3/3 attempts"
24
+ }
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ #### 2. 新增 / 移除字段
31
+
32
+ **新增**:
33
+ - `ReportMessage.messageEn?: string` — 英文文本(与 message 同义,便于 i18n 兼容)
34
+ - `ReportData` 接口(含 `error?: ErrorInfo` + 业务字段 index signature)
35
+ - `ErrorInfo` 接口(`phase` / `step` / `category` / `detail` 4 字段全必填)
36
+ - `ErrorPhase` 类型(15 个值,与 ProgressPhase 对齐)
37
+ - `ErrorStep` 类型(21 个值的 closed enum)
38
+ - `ErrorCategory` 类型(**7 类**:在 v1.4.14 的 4 类基础上加 `CONFIGURATION` / `PROTOCOL` / `AUTHORIZATION`)
39
+ - `ERROR_STEP_BY_PHASE` 映射常量(强校验 step ↔ phase 归属)
40
+ - 工具函数:`VALID_ERROR_CATEGORIES` / `isValidErrorCategory()` / `normalizeErrorCategory()` / `isValidErrorStepForPhase()`
41
+ - `ProgressPhase` 枚举新增 2 个值:`PROGRAM_INIT`(任务初始化)/ `PROGRAM_COMPLETE`(终态边界)
42
+
43
+ **删除**:
44
+ - `ReportMessage.category` 顶层字段(下沉到 `data.error.category`)
45
+ - `ReportCategory` 类型(重命名为 `ErrorCategory`,并扩到 7 类)
46
+ - `VALID_REPORT_CATEGORIES` / `isValidReportCategory()` / `normalizeReportCategory()`(重命名为 `VALID_ERROR_CATEGORIES` 等)
47
+ - `data.failedPhase` / `data.failedSubStage` / `data.failedReason` 平铺字段(合并到 `data.error.*`)
48
+ - PROGRAM 命令 6 个独立失败 code(统一为 `PROGRAM_UPLOAD_FAILED` + `data.error.*`):
49
+ - `PROGRAM_DOWNLOAD_FAILED`
50
+ - `PROGRAM_CHECKSUM_MISMATCH`
51
+ - `PROGRAM_COMPILE_FAILED`
52
+ - `PROGRAM_COMPILE_ERROR`
53
+ - `PROGRAM_DEPLOY_NOT_INITIALIZED`
54
+ - `PROGRAM_DEPLOY_ERROR`
55
+ - `failedReason` 6 值枚举(合并到 `category` + `step` + `detail`)
56
+
57
+ #### 3. COMPLEX 命令统一生命周期
58
+
59
+ 所有 COMPLEX 命令统一为 `{CMD}_INIT (progress=0%) → 业务 phase → {CMD}_COMPLETE (progress=100%)`:
60
+
61
+ - PROGRAM 命令新增 `PROGRAM_INIT` / `PROGRAM_COMPLETE` phase(8 phase 序列)
62
+ - 终态决策矩阵在 `PROGRAM_COMPLETE` 触发(唯一收尾点)
63
+ - BUSY 并发拒绝场景从"特例"变成 `PROGRAM_INIT.CheckConcurrency` 阶段正常失败
64
+
65
+ #### 4. PROGRAM phase 序列重排(6 → 8)
66
+
67
+ | 序号 | phase | progress |
68
+ |---|---|---|
69
+ | 0 | `PROGRAM_INIT` | 0% |
70
+ | 1 | `PROGRAM_FETCH` | 1~15% |
71
+ | 2 | `PROGRAM_EXTRACT` | 16~25% |
72
+ | 3 | `PROGRAM_PREPROCESS` | 26~50% |
73
+ | 4 | `PROGRAM_COMPILE` | 51~70% |
74
+ | 5 | `PROGRAM_UPLOAD` | 71~95% |
75
+ | 6 | `PROGRAM_STATS` | 96~99% |
76
+ | 7 | `PROGRAM_COMPLETE` | 100% |
77
+
78
+ ### Migration
79
+
80
+ 设备端 (C#):
81
+ 1. 新增 `ErrorPhase` / `ErrorStep` / `ErrorCategory` 强类型 enum
82
+ 2. `ReportMessage` 移除 `Category` 顶层,新增 `ReportData.Error`
83
+ 3. 新建 `ErrorClassifier` 集中归类异常 → (phase, step, category) 三元组
84
+ 4. PROGRAM 编排器 6 处独立失败 code 调用改用 `ErrorClassifier.Classify(...)` 生成 `ErrorInfo`
85
+ 5. 新增 `PROGRAM_INIT` / `PROGRAM_COMPLETE` phase 上报
86
+
87
+ 第三方 (TypeScript/JS):
88
+ ```javascript
89
+ function parseFailureMessage(msg) {
90
+ if (msg.report.level !== 'ERROR' && msg.status !== 'FAILED') return null;
91
+ const err = msg.report.data?.error;
92
+ if (!err) return null;
93
+ return {
94
+ category: err.category, // 粗分类(告警/聚合)
95
+ location: `${err.phase}.${err.step}`, // 细位置(诊断/UI)
96
+ i18nKey: `${err.phase}.${err.step}.${err.category}`, // i18n key
97
+ diagnostic: err.detail, // 日志/调试
98
+ };
99
+ }
100
+ ```
101
+
102
+ ### 协议设计依据
103
+
104
+ 完整设计原则、决策回放(11 个关键技术选择记录)、归类决策树、错误映射表见 `claude-docs/protocol-upgrade-proposal-v1.5.0.md`。
105
+
106
+ ---
107
+
108
+ ## [1.4.14] - 2026-05-11
109
+
110
+ ### Added (零破坏 / minor bump)
111
+ - **`ReportCategory` enum 扩展为 4 档**:在原 `TRANSPORT | TIMEOUT | BUSINESS` 基础上加 `RESOURCE`,表达设备端本地资源耗尽故障(磁盘满 / 内存不足 / 文件句柄耗尽 / cache 写入失败)。区别于网络层 `TRANSPORT` / 超时 `TIMEOUT` / 业务结果 `BUSINESS`
112
+ - 抽出独立 `export type ReportCategory` 公开类型(之前是 `ReportMessage.category` inline literal union)
113
+ - 新增 helper:`VALID_REPORT_CATEGORIES`(只读数组)、`isValidReportCategory()` 类型守卫、`normalizeReportCategory()` 降级函数(未知值 → BUSINESS)
114
+
115
+ ### Changed (文档约束放开,schema 零变更)
116
+ - **解除 v1.4.13 "仅 SIMPLE/BATCH 使用 category" 限制**:现允许 COMPLEX 命令(PROGRAM / QUICKLY_DETECTION / SYNC_MONITORING_TABLE)所有 PROGRESS_UPDATE 与终态响应使用 category。BATCH 聚合 COMMAND_RESPONSE 仍是唯一例外
117
+ - `ReportMessage.category` 字段类型从 inline literal union → `ReportCategory`(语义不变,类型抽离更清晰)
118
+
119
+ ### Compatibility
120
+ - 完全向后兼容
121
+ - 旧版客户端(v1.4.13)发 v1.4.14 服务端:仍发 3 档值,type 兼容
122
+ - 新版服务端(v1.4.14)发 `RESOURCE` 给旧版客户端:旧客户端 enum 不识别 → 调用 `normalizeReportCategory()` 自动降级为 `BUSINESS`
123
+ - 字段始终 optional,缺省 = `BUSINESS`,老消息天然合法
124
+ - 文档约束放开是软约束,schema 零变更
125
+
126
+ ### Migration(消费方建议,不强制)
127
+ ```typescript
128
+ // 升级前
129
+ switch (msg.report?.category) {
130
+ case 'TRANSPORT': pageNetworkOps(); break;
131
+ case 'TIMEOUT': pageFieldEngineer(); break;
132
+ case 'BUSINESS':
133
+ default: ticketToProduct(); break;
134
+ }
135
+
136
+ // 升级后(接收 RESOURCE 路由到运维清磁盘)
137
+ switch (msg.report?.category) {
138
+ case 'TRANSPORT': pageNetworkOps(); break;
139
+ case 'TIMEOUT': pageFieldEngineer(); break;
140
+ case 'RESOURCE': pageDevOpsToCleanDisk(); break; // ← 新增
141
+ case 'BUSINESS':
142
+ default: ticketToProduct(); break;
143
+ }
144
+ ```
145
+
3
146
  ## [1.4.13] - 2026-05-09
4
147
 
5
148
  ### Added (Breaking)
package/dist/index.d.ts CHANGED
@@ -307,12 +307,14 @@ export interface ProgramResponseMessage extends BaseMessage {
307
307
  * 不通过协议消息流转,**不**列在此 enum 中(属于 Backend 内部 audit 字符串)。
308
308
  */
309
309
  export declare enum ProgressPhase {
310
+ PROGRAM_INIT = "PROGRAM_INIT",// v1.5.0 新增 — 任务初始化(参数校验、资源准备、并发检查)
310
311
  PROGRAM_FETCH = "PROGRAM_FETCH",// 拉取节目源文件(OSS / Edge / 其他)
311
312
  PROGRAM_EXTRACT = "PROGRAM_EXTRACT",// 解压归档(zip/tar/rar)
312
313
  PROGRAM_PREPROCESS = "PROGRAM_PREPROCESS",// 图片预处理(缩放/滤镜等)
313
314
  PROGRAM_COMPILE = "PROGRAM_COMPILE",// 编译为显示帧
314
315
  PROGRAM_UPLOAD = "PROGRAM_UPLOAD",// 上传到底层显示设备
315
316
  PROGRAM_STATS = "PROGRAM_STATS",// 上报统计信息
317
+ PROGRAM_COMPLETE = "PROGRAM_COMPLETE",// v1.5.0 新增 — 终态边界(决定 ALL_SUCCESS / PARTIAL / FAILED 等)
316
318
  EDGE_CACHE_FETCH = "EDGE_CACHE_FETCH",// Edge 从 OSS 拉文件中
317
319
  EDGE_CACHE_READY = "EDGE_CACHE_READY",// Edge 缓存就绪
318
320
  SYNC_EXPORT = "SYNC_EXPORT",// 同步器监播表导出 SYNC_MONITORING_TABLE
@@ -358,12 +360,25 @@ export declare enum ReportLevel {
358
360
  ERROR = "ERROR",
359
361
  CRITICAL = "CRITICAL"
360
362
  }
363
+ export type ErrorCategory = 'TRANSPORT' | 'TIMEOUT' | 'RESOURCE' | 'BUSINESS' | 'CONFIGURATION' | 'PROTOCOL' | 'AUTHORIZATION';
364
+ export type ErrorPhase = 'PROGRAM_INIT' | 'PROGRAM_FETCH' | 'PROGRAM_EXTRACT' | 'PROGRAM_PREPROCESS' | 'PROGRAM_COMPILE' | 'PROGRAM_UPLOAD' | 'PROGRAM_STATS' | 'PROGRAM_COMPLETE' | 'DETECT_INIT' | 'SWITCH_DETECT' | 'SWITCH_CONFIG_READ' | 'SYNC_DETECT' | 'BARGRAPH_DETECT' | 'RATER_DETECT' | 'SYNC_RECOVER' | 'DETECT_COMPLETE' | 'SYNC_EXPORT' | 'BATCH_EXECUTE';
365
+ export type ErrorStep = 'ValidateParameters' | 'PrepareResources' | 'LoadConfig' | 'CheckConcurrency' | 'Download' | 'VerifyChecksum' | 'ExtractZip' | 'ResizeImage' | 'AdjustColor' | 'GammaCorrect' | 'Histogram' | 'RGBCorrection' | 'CompileFrame' | 'MoveFrame' | 'VerifyFrameCount' | 'DeviceCheck' | 'DataTransfer' | 'ForbiddenTable' | 'StatusRecovery' | 'RetryLimitExceeded' | 'CloudReport';
366
+ export interface ErrorInfo {
367
+ phase: ErrorPhase;
368
+ step: ErrorStep;
369
+ category: ErrorCategory;
370
+ detail: string;
371
+ }
372
+ export interface ReportData {
373
+ error?: ErrorInfo;
374
+ [key: string]: any;
375
+ }
361
376
  export interface ReportMessage {
362
377
  level: ReportLevel;
363
378
  message: string;
364
379
  code?: string;
365
- data?: Record<string, any>;
366
- category?: 'TRANSPORT' | 'TIMEOUT' | 'BUSINESS';
380
+ messageEn?: string;
381
+ data?: ReportData;
367
382
  }
368
383
  export interface ProgressUpdateMessage extends BaseMessage {
369
384
  type: MessageType.PROGRESS_UPDATE;
@@ -410,6 +425,11 @@ export declare function isAuthorizationGrantedMessage(msg: any): msg is Authoriz
410
425
  export declare function isAuthorizationRejectedMessage(msg: any): msg is AuthorizationRejectedMessage;
411
426
  export declare function isDeviceApprovalRequestMessage(msg: any): msg is DeviceApprovalRequestMessage;
412
427
  export declare function isDeviceApprovalResponseMessage(msg: any): msg is DeviceApprovalResponseMessage;
428
+ export declare const VALID_ERROR_CATEGORIES: readonly ErrorCategory[];
429
+ export declare function isValidErrorCategory(value: any): value is ErrorCategory;
430
+ export declare function normalizeErrorCategory(value: any): ErrorCategory;
431
+ export declare const ERROR_STEP_BY_PHASE: Record<string, readonly ErrorStep[]>;
432
+ export declare function isValidErrorStepForPhase(step: any, phase: any): boolean;
413
433
  export declare class MessageFactory {
414
434
  /**
415
435
  * 创建注册消息
@@ -524,7 +544,7 @@ export declare class MessageFactory {
524
544
  success: boolean, message?: string, routeCount?: number): UpdateRoutesAckMessage;
525
545
  }
526
546
  export type AnyMessage = RegisterMessage | RegisterAckMessage | UnregisterMessage | UnregisterAckMessage | CommandMessage | CommandResponseMessage | ProgramMessage | ProgramResponseMessage | HeartbeatMessage | HeartbeatAckMessage | ProgressUpdateMessage | UpdateRoutesMessage | UpdateRoutesAckMessage | RegisterPendingMessage | AuthorizationGrantedMessage | AuthorizationRejectedMessage | DeviceApprovalRequestMessage | DeviceApprovalResponseMessage | ErrorMessage;
527
- export declare const PROTOCOL_VERSION = "1.4.13";
547
+ export declare const PROTOCOL_VERSION = "1.5.0";
528
548
  export declare const DEFAULT_TIMEOUT = 10000;
529
549
  export declare const DEFAULT_PRIORITY = Priority.NORMAL;
530
550
  export * from './command-types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
23
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ProtocolUtils = exports.MessageValidator = exports.DEFAULT_PRIORITY = exports.DEFAULT_TIMEOUT = exports.PROTOCOL_VERSION = exports.MessageFactory = exports.ReportLevel = exports.ProgressStatus = exports.ProgressPhase = exports.ProgramDirection = exports.ProgramType = exports.CommandType = exports.CommandStatus = exports.Priority = exports.OperationType = exports.ClientType = exports.MessageType = void 0;
26
+ exports.ProtocolUtils = exports.MessageValidator = exports.DEFAULT_PRIORITY = exports.DEFAULT_TIMEOUT = exports.PROTOCOL_VERSION = exports.MessageFactory = exports.ERROR_STEP_BY_PHASE = exports.VALID_ERROR_CATEGORIES = exports.ReportLevel = exports.ProgressStatus = exports.ProgressPhase = exports.ProgramDirection = exports.ProgramType = exports.CommandType = exports.CommandStatus = exports.Priority = exports.OperationType = exports.ClientType = exports.MessageType = void 0;
27
27
  exports.isRegisterMessage = isRegisterMessage;
28
28
  exports.isRegisterAckMessage = isRegisterAckMessage;
29
29
  exports.isUnregisterMessage = isUnregisterMessage;
@@ -43,6 +43,9 @@ exports.isAuthorizationGrantedMessage = isAuthorizationGrantedMessage;
43
43
  exports.isAuthorizationRejectedMessage = isAuthorizationRejectedMessage;
44
44
  exports.isDeviceApprovalRequestMessage = isDeviceApprovalRequestMessage;
45
45
  exports.isDeviceApprovalResponseMessage = isDeviceApprovalResponseMessage;
46
+ exports.isValidErrorCategory = isValidErrorCategory;
47
+ exports.normalizeErrorCategory = normalizeErrorCategory;
48
+ exports.isValidErrorStepForPhase = isValidErrorStepForPhase;
46
49
  // 消息类型枚举
47
50
  var MessageType;
48
51
  (function (MessageType) {
@@ -144,13 +147,16 @@ var ProgramDirection;
144
147
  */
145
148
  var ProgressPhase;
146
149
  (function (ProgressPhase) {
147
- // ---- 节目处理 pipeline(设备端,实施中)----
150
+ // ---- 节目处理 pipeline(设备端)----
151
+ // v1.5.0: PROGRAM 命令统一生命周期 — 加 INIT 起始 / COMPLETE 终态边界
152
+ ProgressPhase["PROGRAM_INIT"] = "PROGRAM_INIT";
148
153
  ProgressPhase["PROGRAM_FETCH"] = "PROGRAM_FETCH";
149
154
  ProgressPhase["PROGRAM_EXTRACT"] = "PROGRAM_EXTRACT";
150
155
  ProgressPhase["PROGRAM_PREPROCESS"] = "PROGRAM_PREPROCESS";
151
156
  ProgressPhase["PROGRAM_COMPILE"] = "PROGRAM_COMPILE";
152
157
  ProgressPhase["PROGRAM_UPLOAD"] = "PROGRAM_UPLOAD";
153
158
  ProgressPhase["PROGRAM_STATS"] = "PROGRAM_STATS";
159
+ ProgressPhase["PROGRAM_COMPLETE"] = "PROGRAM_COMPLETE";
154
160
  // ---- Edge 缓存可见性(v1.4.11 新增)----
155
161
  ProgressPhase["EDGE_CACHE_FETCH"] = "EDGE_CACHE_FETCH";
156
162
  ProgressPhase["EDGE_CACHE_READY"] = "EDGE_CACHE_READY";
@@ -245,6 +251,41 @@ function isDeviceApprovalRequestMessage(msg) {
245
251
  function isDeviceApprovalResponseMessage(msg) {
246
252
  return msg && msg.type === MessageType.DEVICE_APPROVAL_RESPONSE;
247
253
  }
254
+ // v1.5.0: ErrorCategory 类型守卫(消费方收到未知值时降级到 BUSINESS)
255
+ exports.VALID_ERROR_CATEGORIES = [
256
+ 'TRANSPORT',
257
+ 'TIMEOUT',
258
+ 'RESOURCE',
259
+ 'BUSINESS',
260
+ 'CONFIGURATION',
261
+ 'PROTOCOL',
262
+ 'AUTHORIZATION',
263
+ ];
264
+ function isValidErrorCategory(value) {
265
+ return typeof value === 'string' && exports.VALID_ERROR_CATEGORIES.includes(value);
266
+ }
267
+ // v1.5.0: normalizeErrorCategory — 未知值降级到 'BUSINESS'(forward-compatibility 标准做法)
268
+ function normalizeErrorCategory(value) {
269
+ return isValidErrorCategory(value) ? value : 'BUSINESS';
270
+ }
271
+ // v1.5.0: ErrorStep ↔ ErrorPhase 归属映射(强校验:step 必须属于 phase)
272
+ exports.ERROR_STEP_BY_PHASE = {
273
+ PROGRAM_INIT: ['ValidateParameters', 'PrepareResources', 'LoadConfig', 'CheckConcurrency'],
274
+ PROGRAM_FETCH: ['Download', 'VerifyChecksum'],
275
+ PROGRAM_EXTRACT: ['ExtractZip'],
276
+ PROGRAM_PREPROCESS: ['ResizeImage', 'AdjustColor', 'GammaCorrect', 'Histogram', 'RGBCorrection'],
277
+ PROGRAM_COMPILE: ['CompileFrame', 'MoveFrame', 'VerifyFrameCount'],
278
+ PROGRAM_UPLOAD: ['DeviceCheck', 'DataTransfer', 'ForbiddenTable', 'StatusRecovery', 'RetryLimitExceeded'],
279
+ PROGRAM_STATS: ['CloudReport'],
280
+ PROGRAM_COMPLETE: [],
281
+ // QUICKLY_DETECTION / SYNC_MONITORING_TABLE 在 v1.5.x 后续补充 step 归属
282
+ };
283
+ function isValidErrorStepForPhase(step, phase) {
284
+ if (typeof step !== 'string' || typeof phase !== 'string')
285
+ return false;
286
+ const allowed = exports.ERROR_STEP_BY_PHASE[phase];
287
+ return Array.isArray(allowed) && allowed.includes(step);
288
+ }
248
289
  // 消息工厂类 - 创建符合新协议的消息
249
290
  class MessageFactory {
250
291
  /**
@@ -563,7 +604,7 @@ class MessageFactory {
563
604
  }
564
605
  exports.MessageFactory = MessageFactory;
565
606
  // 导出常量
566
- exports.PROTOCOL_VERSION = '1.4.13';
607
+ exports.PROTOCOL_VERSION = '1.5.0';
567
608
  exports.DEFAULT_TIMEOUT = 10000;
568
609
  exports.DEFAULT_PRIORITY = Priority.NORMAL;
569
610
  // 导出强类型命令系统
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@thejrsoft/subway-protocol",
3
- "version": "1.4.13",
4
- "description": "Shared WebSocket protocol definitions for JRSoft Subway - Enhanced with clientId fields for response tracking",
3
+ "version": "1.5.0",
4
+ "description": "Shared WebSocket protocol definitions for JRSoft Subway - v1.5.0 unified failure schema (data.error nested) + COMPLEX lifecycle (INIT/COMPLETE) — BREAKING",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
@@ -0,0 +1,174 @@
1
+ /**
2
+ * v1.5.0: ErrorCategory (7 类) + ErrorInfo + step-phase 归属强校验
3
+ */
4
+
5
+ import {
6
+ ErrorCategory,
7
+ ErrorInfo,
8
+ VALID_ERROR_CATEGORIES,
9
+ isValidErrorCategory,
10
+ normalizeErrorCategory,
11
+ ERROR_STEP_BY_PHASE,
12
+ isValidErrorStepForPhase,
13
+ } from '../index';
14
+
15
+ describe('v1.5.0 ErrorCategory (7 类 closed enum)', () => {
16
+ describe('VALID_ERROR_CATEGORIES', () => {
17
+ test('包含完整 7 档', () => {
18
+ expect(VALID_ERROR_CATEGORIES).toEqual([
19
+ 'TRANSPORT',
20
+ 'TIMEOUT',
21
+ 'RESOURCE',
22
+ 'BUSINESS',
23
+ 'CONFIGURATION',
24
+ 'PROTOCOL',
25
+ 'AUTHORIZATION',
26
+ ]);
27
+ });
28
+
29
+ test('保留 v1.4.14 的 4 档', () => {
30
+ expect(VALID_ERROR_CATEGORIES).toContain('TRANSPORT');
31
+ expect(VALID_ERROR_CATEGORIES).toContain('TIMEOUT');
32
+ expect(VALID_ERROR_CATEGORIES).toContain('RESOURCE');
33
+ expect(VALID_ERROR_CATEGORIES).toContain('BUSINESS');
34
+ });
35
+
36
+ test('v1.5.0 新增 3 档', () => {
37
+ expect(VALID_ERROR_CATEGORIES).toContain('CONFIGURATION');
38
+ expect(VALID_ERROR_CATEGORIES).toContain('PROTOCOL');
39
+ expect(VALID_ERROR_CATEGORIES).toContain('AUTHORIZATION');
40
+ });
41
+ });
42
+
43
+ describe('isValidErrorCategory', () => {
44
+ test.each([
45
+ 'TRANSPORT', 'TIMEOUT', 'RESOURCE', 'BUSINESS',
46
+ 'CONFIGURATION', 'PROTOCOL', 'AUTHORIZATION',
47
+ ])('合法值 %s 通过', (v) => {
48
+ expect(isValidErrorCategory(v)).toBe(true);
49
+ });
50
+
51
+ test.each([
52
+ 'transport', // 大小写敏感
53
+ 'HARDWARE',
54
+ '',
55
+ null,
56
+ undefined,
57
+ 123,
58
+ {},
59
+ ])('非法值 %p 拒收', (v) => {
60
+ expect(isValidErrorCategory(v)).toBe(false);
61
+ });
62
+ });
63
+
64
+ describe('normalizeErrorCategory (forward-compatibility 降级)', () => {
65
+ test.each([
66
+ 'TRANSPORT', 'TIMEOUT', 'RESOURCE', 'BUSINESS',
67
+ 'CONFIGURATION', 'PROTOCOL', 'AUTHORIZATION',
68
+ ])('合法值 %s 原样返回', (v) => {
69
+ expect(normalizeErrorCategory(v)).toBe(v);
70
+ });
71
+
72
+ test('未知值降级为 BUSINESS', () => {
73
+ expect(normalizeErrorCategory('HARDWARE')).toBe('BUSINESS');
74
+ expect(normalizeErrorCategory('UNKNOWN_FUTURE_CATEGORY')).toBe('BUSINESS');
75
+ });
76
+
77
+ test('null / undefined / 非字符串值降级为 BUSINESS', () => {
78
+ expect(normalizeErrorCategory(undefined)).toBe('BUSINESS');
79
+ expect(normalizeErrorCategory(null)).toBe('BUSINESS');
80
+ expect(normalizeErrorCategory(123)).toBe('BUSINESS');
81
+ expect(normalizeErrorCategory({})).toBe('BUSINESS');
82
+ });
83
+ });
84
+ });
85
+
86
+ describe('v1.5.0 ErrorStep ↔ ErrorPhase 归属', () => {
87
+ test('PROGRAM_INIT 仅允许 4 个 step', () => {
88
+ expect(ERROR_STEP_BY_PHASE.PROGRAM_INIT).toEqual([
89
+ 'ValidateParameters', 'PrepareResources', 'LoadConfig', 'CheckConcurrency',
90
+ ]);
91
+ });
92
+
93
+ test('PROGRAM_FETCH 允许 Download / VerifyChecksum', () => {
94
+ expect(ERROR_STEP_BY_PHASE.PROGRAM_FETCH).toEqual(['Download', 'VerifyChecksum']);
95
+ });
96
+
97
+ test('PROGRAM_COMPLETE 无 step(终态边界)', () => {
98
+ expect(ERROR_STEP_BY_PHASE.PROGRAM_COMPLETE).toEqual([]);
99
+ });
100
+
101
+ describe('isValidErrorStepForPhase', () => {
102
+ test('Download 属于 PROGRAM_FETCH', () => {
103
+ expect(isValidErrorStepForPhase('Download', 'PROGRAM_FETCH')).toBe(true);
104
+ });
105
+
106
+ test('Download 不属于 PROGRAM_COMPILE', () => {
107
+ expect(isValidErrorStepForPhase('Download', 'PROGRAM_COMPILE')).toBe(false);
108
+ });
109
+
110
+ test('DeviceCheck 属于 PROGRAM_UPLOAD', () => {
111
+ expect(isValidErrorStepForPhase('DeviceCheck', 'PROGRAM_UPLOAD')).toBe(true);
112
+ });
113
+
114
+ test('未知 phase 拒收', () => {
115
+ expect(isValidErrorStepForPhase('Download', 'UNKNOWN_PHASE')).toBe(false);
116
+ });
117
+
118
+ test('未知 step 拒收', () => {
119
+ expect(isValidErrorStepForPhase('Bogus', 'PROGRAM_FETCH')).toBe(false);
120
+ });
121
+
122
+ test('非字符串值拒收', () => {
123
+ expect(isValidErrorStepForPhase(null, 'PROGRAM_FETCH')).toBe(false);
124
+ expect(isValidErrorStepForPhase('Download', null)).toBe(false);
125
+ expect(isValidErrorStepForPhase(123, 456)).toBe(false);
126
+ });
127
+ });
128
+ });
129
+
130
+ describe('v1.5.0 ErrorInfo 使用场景示例', () => {
131
+ test('PROGRAM_FETCH Download 超时 → TIMEOUT', () => {
132
+ const err: ErrorInfo = {
133
+ phase: 'PROGRAM_FETCH',
134
+ step: 'Download',
135
+ category: 'TIMEOUT',
136
+ detail: 'HTTP 504 from CDN after 30s, 3/3 attempts',
137
+ };
138
+ expect(isValidErrorCategory(err.category)).toBe(true);
139
+ expect(isValidErrorStepForPhase(err.step, err.phase)).toBe(true);
140
+ });
141
+
142
+ test('PROGRAM_INIT LoadConfig 配置缺失 → CONFIGURATION', () => {
143
+ const err: ErrorInfo = {
144
+ phase: 'PROGRAM_INIT',
145
+ step: 'LoadConfig',
146
+ category: 'CONFIGURATION',
147
+ detail: 'Line.config missing required field: bargraphResolution',
148
+ };
149
+ expect(isValidErrorCategory(err.category)).toBe(true);
150
+ expect(isValidErrorStepForPhase(err.step, err.phase)).toBe(true);
151
+ });
152
+
153
+ test('PROGRAM_UPLOAD DeviceCheck 同步器离线 → TRANSPORT', () => {
154
+ const err: ErrorInfo = {
155
+ phase: 'PROGRAM_UPLOAD',
156
+ step: 'DeviceCheck',
157
+ category: 'TRANSPORT',
158
+ detail: 'Synchronizer offline, switch[1,2,3] unreachable',
159
+ };
160
+ expect(isValidErrorCategory(err.category)).toBe(true);
161
+ expect(isValidErrorStepForPhase(err.step, err.phase)).toBe(true);
162
+ });
163
+
164
+ test('PROGRAM_INIT PrepareResources DAK 失效 → AUTHORIZATION', () => {
165
+ const err: ErrorInfo = {
166
+ phase: 'PROGRAM_INIT',
167
+ step: 'PrepareResources',
168
+ category: 'AUTHORIZATION',
169
+ detail: 'Device access key expired or revoked',
170
+ };
171
+ expect(isValidErrorCategory(err.category)).toBe(true);
172
+ expect(isValidErrorStepForPhase(err.step, err.phase)).toBe(true);
173
+ });
174
+ });
package/src/index.ts CHANGED
@@ -401,13 +401,16 @@ export interface ProgramResponseMessage extends BaseMessage {
401
401
  * 不通过协议消息流转,**不**列在此 enum 中(属于 Backend 内部 audit 字符串)。
402
402
  */
403
403
  export enum ProgressPhase {
404
- // ---- 节目处理 pipeline(设备端,实施中)----
404
+ // ---- 节目处理 pipeline(设备端)----
405
+ // v1.5.0: PROGRAM 命令统一生命周期 — 加 INIT 起始 / COMPLETE 终态边界
406
+ PROGRAM_INIT = 'PROGRAM_INIT', // v1.5.0 新增 — 任务初始化(参数校验、资源准备、并发检查)
405
407
  PROGRAM_FETCH = 'PROGRAM_FETCH', // 拉取节目源文件(OSS / Edge / 其他)
406
408
  PROGRAM_EXTRACT = 'PROGRAM_EXTRACT', // 解压归档(zip/tar/rar)
407
409
  PROGRAM_PREPROCESS = 'PROGRAM_PREPROCESS', // 图片预处理(缩放/滤镜等)
408
410
  PROGRAM_COMPILE = 'PROGRAM_COMPILE', // 编译为显示帧
409
411
  PROGRAM_UPLOAD = 'PROGRAM_UPLOAD', // 上传到底层显示设备
410
412
  PROGRAM_STATS = 'PROGRAM_STATS', // 上报统计信息
413
+ PROGRAM_COMPLETE = 'PROGRAM_COMPLETE', // v1.5.0 新增 — 终态边界(决定 ALL_SUCCESS / PARTIAL / FAILED 等)
411
414
 
412
415
  // ---- Edge 缓存可见性(v1.4.11 新增)----
413
416
  EDGE_CACHE_FETCH = 'EDGE_CACHE_FETCH', // Edge 从 OSS 拉文件中
@@ -471,13 +474,101 @@ export enum ReportLevel {
471
474
  CRITICAL = 'CRITICAL'
472
475
  }
473
476
 
474
- // 报告信息
477
+ // v1.5.0: ErrorCategory — 7 类 closed enum(v1.4.14 的 4 档扩展到 7 档)
478
+ // - TRANSPORT: 通讯层失败 — 网络断、CAN 总线告警、HTTP 4xx/5xx、设备离线
479
+ // - TIMEOUT: 等待响应超时 — HTTP 504、设备无应答、命令响应等待超时
480
+ // - RESOURCE: 资源不足/耗尽 — 磁盘满、内存不足、设备槽位耗尽、文件句柄耗尽
481
+ // - BUSINESS: 业务逻辑/状态/异常(兜底)— 业务规则违反、状态机错误、未预期异常
482
+ // - CONFIGURATION: 配置缺失/错误(v1.5.0 新增)— Line.config 字段缺、ParamSet 不完整
483
+ // - PROTOCOL: 协议层错误(v1.5.0 新增)— JSON 解析失败、字段缺失、消息格式错
484
+ // - AUTHORIZATION: 凭证/权限失败(v1.5.0 新增)— DAK 失效、设备未审批、命令权限不足
485
+ export type ErrorCategory =
486
+ | 'TRANSPORT'
487
+ | 'TIMEOUT'
488
+ | 'RESOURCE'
489
+ | 'BUSINESS'
490
+ | 'CONFIGURATION'
491
+ | 'PROTOCOL'
492
+ | 'AUTHORIZATION';
493
+
494
+ // v1.5.0: ErrorPhase — 错误可发生的所有 phase(命令的 ProgressPhase 子集)
495
+ // 与 ProgressPhase enum 完全对齐,只是命名 alias 以表达"用作错误归类"语义
496
+ export type ErrorPhase =
497
+ | 'PROGRAM_INIT'
498
+ | 'PROGRAM_FETCH'
499
+ | 'PROGRAM_EXTRACT'
500
+ | 'PROGRAM_PREPROCESS'
501
+ | 'PROGRAM_COMPILE'
502
+ | 'PROGRAM_UPLOAD'
503
+ | 'PROGRAM_STATS'
504
+ | 'PROGRAM_COMPLETE'
505
+ | 'DETECT_INIT'
506
+ | 'SWITCH_DETECT'
507
+ | 'SWITCH_CONFIG_READ'
508
+ | 'SYNC_DETECT'
509
+ | 'BARGRAPH_DETECT'
510
+ | 'RATER_DETECT'
511
+ | 'SYNC_RECOVER'
512
+ | 'DETECT_COMPLETE'
513
+ | 'SYNC_EXPORT'
514
+ | 'BATCH_EXECUTE';
515
+
516
+ // v1.5.0: ErrorStep — 21 个值,按 phase 归属(详见 message-validator.ts 的 step-phase 映射)
517
+ export type ErrorStep =
518
+ // PROGRAM_INIT
519
+ | 'ValidateParameters'
520
+ | 'PrepareResources'
521
+ | 'LoadConfig'
522
+ | 'CheckConcurrency'
523
+ // PROGRAM_FETCH
524
+ | 'Download'
525
+ | 'VerifyChecksum'
526
+ // PROGRAM_EXTRACT
527
+ | 'ExtractZip'
528
+ // PROGRAM_PREPROCESS
529
+ | 'ResizeImage'
530
+ | 'AdjustColor'
531
+ | 'GammaCorrect'
532
+ | 'Histogram'
533
+ | 'RGBCorrection'
534
+ // PROGRAM_COMPILE
535
+ | 'CompileFrame'
536
+ | 'MoveFrame'
537
+ | 'VerifyFrameCount'
538
+ // PROGRAM_UPLOAD
539
+ | 'DeviceCheck'
540
+ | 'DataTransfer'
541
+ | 'ForbiddenTable'
542
+ | 'StatusRecovery'
543
+ | 'RetryLimitExceeded'
544
+ // PROGRAM_STATS
545
+ | 'CloudReport';
546
+
547
+ // v1.5.0: 统一失败信号 schema — 嵌套在 report.data.error 下,仅 ERROR / 终态失败消息携带
548
+ // 4 字段全部必填,3 个 enum 字段在服务端做 strict 校验(拒收未定义值)
549
+ export interface ErrorInfo {
550
+ phase: ErrorPhase; // 错误发生在哪个 phase
551
+ step: ErrorStep; // 错误发生在 phase 内的哪个具体步骤(必须属于 phase)
552
+ category: ErrorCategory; // 协议级横切分类(7 类)
553
+ detail: string; // 自由文本(英文,grep 友好)
554
+ }
555
+
556
+ // v1.5.0: ReportData — 嵌套结构,error 仅在失败时存在;其余字段按命令业务字段平铺
557
+ export interface ReportData {
558
+ error?: ErrorInfo; // v1.5.0 新增 — 失败信号 schema(level=ERROR / status=FAILED 时必填)
559
+ [key: string]: any; // 业务字段平铺(programNo / fileSize / 等)
560
+ }
561
+
562
+ // v1.5.0: ReportMessage — 移除顶层 category 字段(下沉到 data.error.category)
563
+ // - data.error 仅在错误时出现(level=ERROR / status=FAILED)
564
+ // - 成功/进度消息:data 仍为平铺业务字段,无 error
565
+ // - messageEn 字段为可选,便于 i18n 兼容(默认 = message 英文文本)
475
566
  export interface ReportMessage {
476
567
  level: ReportLevel;
477
- message: string; // 报告消息
568
+ message: string; // 报告消息(推荐英文,作为 i18n 兜底 / 设备日志)
478
569
  code?: string; // 标准化的消息代码
479
- data?: Record<string, any>; // 额外的数据对象
480
- category?: 'TRANSPORT' | 'TIMEOUT' | 'BUSINESS'; // v1.4.12: 故障分类(缺省=BUSINESS
570
+ messageEn?: string; // v1.5.0 新增 — 英文文本(与 message 同义,兼容现有结构)
571
+ data?: ReportData; // v1.5.0 — 改为 ReportData 嵌套结构(含 error
481
572
  }
482
573
 
483
574
  // 进度更新消息
@@ -589,6 +680,45 @@ export function isDeviceApprovalResponseMessage(msg: any): msg is DeviceApproval
589
680
  return msg && msg.type === MessageType.DEVICE_APPROVAL_RESPONSE;
590
681
  }
591
682
 
683
+ // v1.5.0: ErrorCategory 类型守卫(消费方收到未知值时降级到 BUSINESS)
684
+ export const VALID_ERROR_CATEGORIES: readonly ErrorCategory[] = [
685
+ 'TRANSPORT',
686
+ 'TIMEOUT',
687
+ 'RESOURCE',
688
+ 'BUSINESS',
689
+ 'CONFIGURATION',
690
+ 'PROTOCOL',
691
+ 'AUTHORIZATION',
692
+ ] as const;
693
+
694
+ export function isValidErrorCategory(value: any): value is ErrorCategory {
695
+ return typeof value === 'string' && (VALID_ERROR_CATEGORIES as readonly string[]).includes(value);
696
+ }
697
+
698
+ // v1.5.0: normalizeErrorCategory — 未知值降级到 'BUSINESS'(forward-compatibility 标准做法)
699
+ export function normalizeErrorCategory(value: any): ErrorCategory {
700
+ return isValidErrorCategory(value) ? value : 'BUSINESS';
701
+ }
702
+
703
+ // v1.5.0: ErrorStep ↔ ErrorPhase 归属映射(强校验:step 必须属于 phase)
704
+ export const ERROR_STEP_BY_PHASE: Record<string, readonly ErrorStep[]> = {
705
+ PROGRAM_INIT: ['ValidateParameters', 'PrepareResources', 'LoadConfig', 'CheckConcurrency'] as const,
706
+ PROGRAM_FETCH: ['Download', 'VerifyChecksum'] as const,
707
+ PROGRAM_EXTRACT: ['ExtractZip'] as const,
708
+ PROGRAM_PREPROCESS: ['ResizeImage', 'AdjustColor', 'GammaCorrect', 'Histogram', 'RGBCorrection'] as const,
709
+ PROGRAM_COMPILE: ['CompileFrame', 'MoveFrame', 'VerifyFrameCount'] as const,
710
+ PROGRAM_UPLOAD: ['DeviceCheck', 'DataTransfer', 'ForbiddenTable', 'StatusRecovery', 'RetryLimitExceeded'] as const,
711
+ PROGRAM_STATS: ['CloudReport'] as const,
712
+ PROGRAM_COMPLETE: [] as const,
713
+ // QUICKLY_DETECTION / SYNC_MONITORING_TABLE 在 v1.5.x 后续补充 step 归属
714
+ } as const;
715
+
716
+ export function isValidErrorStepForPhase(step: any, phase: any): boolean {
717
+ if (typeof step !== 'string' || typeof phase !== 'string') return false;
718
+ const allowed = ERROR_STEP_BY_PHASE[phase];
719
+ return Array.isArray(allowed) && (allowed as readonly string[]).includes(step);
720
+ }
721
+
592
722
 
593
723
  // 消息工厂类 - 创建符合新协议的消息
594
724
  export class MessageFactory {
@@ -1066,7 +1196,7 @@ export type AnyMessage =
1066
1196
  | ErrorMessage;
1067
1197
 
1068
1198
  // 导出常量
1069
- export const PROTOCOL_VERSION = '1.4.13';
1199
+ export const PROTOCOL_VERSION = '1.5.0';
1070
1200
  export const DEFAULT_TIMEOUT = 10000;
1071
1201
  export const DEFAULT_PRIORITY = Priority.NORMAL;
1072
1202
 
@@ -1,297 +0,0 @@
1
- /**
2
- * 协议规范测试套件
3
- * 验证实现是否符合 PROTOCOL_SPECIFICATION.md
4
- */
5
-
6
- import {
7
- MessageFactory,
8
- MessageValidator,
9
- MessageType,
10
- ClientType,
11
- Priority,
12
- OperationType,
13
- CommandType,
14
- GatewayUtils,
15
- GATEWAY_SITE_ID,
16
- isRegisterMessage,
17
- isCommandMessage
18
- } from '../index';
19
-
20
- describe('JRSoft Subway Protocol v1.0', () => {
21
- describe('基础消息格式', () => {
22
- test('所有消息必须包含 type 字段', () => {
23
- const message = { type: 'register', clientId: 'test' };
24
- expect(MessageValidator.validateMessage(message)).toBe(true);
25
-
26
- const invalidMessage = { clientId: 'test' };
27
- expect(MessageValidator.validateMessage(invalidMessage)).toBe(false);
28
- });
29
-
30
- test('timestamp 和 version 字段是可选的', () => {
31
- const minimalMessage = { type: 'register', clientId: 'test' };
32
- expect(MessageValidator.validateRegisterMessage(minimalMessage)).toBe(true);
33
-
34
- const fullMessage = {
35
- type: 'register',
36
- clientId: 'test',
37
- timestamp: new Date().toISOString(),
38
- version: '1.0'
39
- };
40
- expect(MessageValidator.validateRegisterMessage(fullMessage)).toBe(true);
41
- });
42
- });
43
-
44
- describe('注册消息兼容性', () => {
45
- test('支持简单注册格式(v1.0)', () => {
46
- const simpleRegister = {
47
- type: 'register',
48
- clientId: 'device001'
49
- };
50
-
51
- expect(isRegisterMessage(simpleRegister)).toBe(true);
52
- expect(MessageValidator.validateRegisterMessage(simpleRegister)).toBe(true);
53
- });
54
-
55
- test('支持完整注册格式(v1.0)', () => {
56
- const fullRegister = MessageFactory.createRegisterMessage(
57
- 'backend-server',
58
- ClientType.BACKEND,
59
- {
60
- version: '1.0.0',
61
- platform: 'nodejs',
62
- capabilities: ['command', 'program']
63
- }
64
- );
65
-
66
- expect(isRegisterMessage(fullRegister)).toBe(true);
67
- expect(MessageValidator.validateRegisterMessage(fullRegister)).toBe(true);
68
- expect(fullRegister.clientType).toBe(ClientType.BACKEND);
69
- expect(fullRegister.clientInfo?.capabilities).toContain('command');
70
- });
71
- });
72
-
73
- describe('命令消息格式', () => {
74
- test('标准命令消息', () => {
75
- const command = MessageFactory.createCommandMessage(
76
- 'req-123',
77
- 'device001',
78
- {
79
- commandType: CommandType.SIMPLE,
80
- commandCode: 'READ_STATUS',
81
- deviceType: 'controller',
82
- operationType: OperationType.READ,
83
- parameters: {}
84
- },
85
- 'http://callback.example.com/response'
86
- );
87
-
88
- expect(isCommandMessage(command)).toBe(true);
89
- expect(MessageValidator.validateCommandMessage(command)).toBe(true);
90
- expect(command.priority).toBe(Priority.NORMAL);
91
- expect(command.timeout).toBe(10000);
92
- });
93
-
94
- test('高优先级命令', () => {
95
- const command = MessageFactory.createCommandMessage(
96
- 'req-urgent',
97
- 'device001',
98
- {
99
- commandType: CommandType.SIMPLE,
100
- commandCode: 'EMERGENCY_STOP',
101
- deviceType: 'controller',
102
- operationType: OperationType.WRITE,
103
- parameters: {}
104
- },
105
- 'http://callback.example.com/response',
106
- {
107
- priority: Priority.CRITICAL,
108
- timeout: 5000
109
- }
110
- );
111
-
112
- expect(command.priority).toBe(Priority.CRITICAL);
113
- expect(command.timeout).toBe(5000);
114
- });
115
- });
116
-
117
- describe('Gateway 特殊命令', () => {
118
- test('查询设备状态命令', () => {
119
- const query = GatewayUtils.createDeviceStatusQuery('device001', 'query-001');
120
-
121
- expect(query.targetClientId).toBe(GATEWAY_SITE_ID);
122
- expect(query.command.commandCode).toBe('GET_DEVICE_STATUS');
123
- expect(query.command.operationType).toBe('read');
124
- expect(query.command.parameters.targetClientId).toBe('device001');
125
- expect(GatewayUtils.isGatewayCommand(query)).toBe(true);
126
- });
127
-
128
- test('列出设备命令', () => {
129
- const listCmd = GatewayUtils.createListDevicesCommand({
130
- status: 'online',
131
- clientType: 'device'
132
- });
133
-
134
- expect(listCmd.clientId).toBe(GATEWAY_SITE_ID);
135
- expect(listCmd.command.commandCode).toBe('LIST_DEVICES');
136
- expect(listCmd.command.parameters.filter).toEqual({
137
- status: 'online',
138
- clientType: 'device'
139
- });
140
- });
141
-
142
-
143
- test('命令链', () => {
144
- const chainCmd = GatewayUtils.createCommandChain(
145
- 'device001',
146
- [
147
- { commandCode: 'STOP', parameters: {} },
148
- { commandCode: 'RESET', parameters: {}, delay: 1000 },
149
- { commandCode: 'START', parameters: {} }
150
- ]
151
- );
152
-
153
- expect(chainCmd.commandChain).toHaveLength(3);
154
- expect(chainCmd.commandChain![1].delay).toBe(1000);
155
- expect(chainCmd.timeout).toBeGreaterThan(30000); // 默认超时应考虑延迟
156
- });
157
- });
158
-
159
- describe('消息签名', () => {
160
- test('签名消息', () => {
161
- const message = { type: 'command', requestRef: 'test', clientId: 'test' };
162
- const signedMessage = GatewayUtils.signMessage(message, 'secret-key');
163
-
164
- expect(signedMessage.signature).toBeDefined();
165
- expect(signedMessage.signatureMethod).toBe('sha256');
166
- });
167
-
168
- test('验证签名', () => {
169
- const message = { type: 'command', requestRef: 'test', clientId: 'test' };
170
- const signedMessage = GatewayUtils.signMessage(message, 'secret-key');
171
-
172
- const isValid = GatewayUtils.verifyMessageSignature(signedMessage, 'secret-key');
173
- expect(isValid).toBe(true);
174
- });
175
- });
176
-
177
- describe('心跳消息', () => {
178
- test('创建心跳消息', () => {
179
- const heartbeat = MessageFactory.createHeartbeatMessage('device001', 12345);
180
-
181
- expect(heartbeat.type).toBe(MessageType.HEARTBEAT);
182
- expect(heartbeat.clientId).toBe('device001');
183
- expect(heartbeat.sequence).toBe(12345);
184
- expect(heartbeat.timestamp).toBeDefined();
185
- });
186
- });
187
-
188
- describe('错误处理', () => {
189
- test('创建错误消息', () => {
190
- const error = MessageFactory.createErrorMessage(
191
- 'DEVICE_OFFLINE',
192
- 'Target device is not connected',
193
- 'medium',
194
- 'device',
195
- {
196
- context: {
197
- clientId: 'device001',
198
- requestRef: 'req-123'
199
- },
200
- retryable: true
201
- }
202
- );
203
-
204
- expect(error.type).toBe(MessageType.ERROR);
205
- expect(error.code).toBe('DEVICE_OFFLINE');
206
- expect(error.retryable).toBe(true);
207
- expect(error.context?.clientId).toBe('device001');
208
- });
209
- });
210
-
211
- describe('程序上传', () => {
212
- test('创建程序上传消息', () => {
213
- const program = MessageFactory.createProgramMessage(
214
- 'prog-123',
215
- 'device001',
216
- {
217
- device_id: 'device001',
218
- programId: 'prog-v1.0.1',
219
- downloadUrl: 'https://example.com/program.zip',
220
- checksum: 'sha256:abcd1234',
221
- hashAlgorithm: 'sha256'
222
- }
223
- );
224
-
225
- expect(program.type).toBe(MessageType.PROGRAM);
226
- expect(program.command.commandCode).toBe('UPLOAD_PROGRAM');
227
- expect(program.command.operationType).toBe('write');
228
- expect(program.timeout).toBe(1800000); // 30分钟
229
- });
230
- });
231
-
232
- describe('协议版本兼容性', () => {
233
- test('消息类型支持字符串和枚举', () => {
234
- const stringType = { type: 'register', clientId: 'test' };
235
- const enumType = { type: MessageType.REGISTER, clientId: 'test' };
236
-
237
- expect(isRegisterMessage(stringType)).toBe(true);
238
- expect(isRegisterMessage(enumType)).toBe(true);
239
- });
240
-
241
- test('字段名兼容性(device_id vs deviceId)', () => {
242
- const oldFormat = {
243
- device_id: 'device001',
244
- programId: 'test'
245
- };
246
-
247
- const newFormat = {
248
- deviceId: 'device001',
249
- programId: 'test'
250
- };
251
-
252
- // 两种格式都应该被接受
253
- expect(oldFormat.device_id || oldFormat.deviceId).toBe('device001');
254
- expect(newFormat.deviceId || newFormat.device_id).toBe('device001');
255
- });
256
- });
257
- });
258
-
259
- describe('协议设计原则验证', () => {
260
- test('简单性优先 - 最小注册消息只需2个字段', () => {
261
- const minimalRegister = {
262
- type: 'register',
263
- clientId: 'device001'
264
- };
265
-
266
- const keys = Object.keys(minimalRegister);
267
- expect(keys).toHaveLength(2);
268
- expect(MessageValidator.validateRegisterMessage(minimalRegister)).toBe(true);
269
- });
270
-
271
- test('渐进增强 - 可选字段不影响基础功能', () => {
272
- const basic = { type: 'register', clientId: 'test' };
273
- const enhanced = {
274
- ...basic,
275
- clientType: 'device',
276
- clientInfo: { version: '1.0' },
277
- timestamp: new Date().toISOString(),
278
- version: '2.0'
279
- };
280
-
281
- // 两种格式都有效
282
- expect(MessageValidator.validateRegisterMessage(basic)).toBe(true);
283
- expect(MessageValidator.validateRegisterMessage(enhanced)).toBe(true);
284
- });
285
-
286
- test('明确语义 - 每个消息类型有唯一用途', () => {
287
- const messageTypes = Object.values(MessageType);
288
- const uniqueTypes = new Set(messageTypes);
289
-
290
- // 没有重复的消息类型
291
- expect(uniqueTypes.size).toBe(messageTypes.length);
292
-
293
- // 每个类型都有明确的用途
294
- expect(MessageType.REGISTER).not.toBe(MessageType.COMMAND);
295
- expect(MessageType.HEARTBEAT).not.toBe(MessageType.PROGRAM);
296
- });
297
- });