API 接口设计契约 (API_DESIGN)
基于“后端主导”及“SPA 单页应用”的原则,本文档定义了前端与 Go 边缘节点之间的核心交互接口。 通信协议分为两类:SSE (Server-Sent Events) 用于高频实时数据推送,RESTful API 用于配置的下发和读取。
1. SSE 实时数据流 (已存在并扩展)
Endpoint: GET /api/stream
后端以流的形式向前端推送当前硬件状态、波形数据和最新的浓度计算结果。前端只需挂载 EventSource 即可。
推送事件类型 (Event Type)
event: telemetry: 高频波形和实时硬件数据(原逻辑已实现)。event: analysis_result: 单次进样分析结束时触发,推送本次的峰面积、浓度等。event: alarm: 硬件报警(如 FID 熄火、控温异常)触发。
2. RESTful API (配置与控制)
2.1 分析方法与校准 (Method)
负责读取和保存组分表、积分参数等。
-
获取当前分析方法
GET /api/method- 返回: 包含
Compound数组、Integration阈值的完整 JSON。
-
保存/更新分析方法
POST /api/method- 载荷: 完整的 Method JSON 对象。后端收到后执行本地持久化 (SQLite/JSON)。
-
执行手动/自动校准
POST /api/method/calibrate- 载荷:
{ "level": 1, "run_id": "xxx" }(指定用某次分析的结果更新某一个级别的校准表)。
2.2 硬件反控 (Control)
负责前端按钮点击后的参数下发。
-
下发控温参数
POST /api/control/temp- 载荷:
{ "zone": "Inj1", "target": 150.0 }
-
控制 FID 点火
POST /api/control/ignite- 载荷:
{ "action": "start", "detector": "FID1" } - 后端将该指令翻译为
Cmd 20并通过 TCP 下发。
-
下发气路/EPC 参数
POST /api/control/epc- 载荷:
{ "channel": "Carrier1", "pressure": 50.0 }
-
下发时间事件表 (多位阀)
POST /api/control/events- 载荷:
[ { "time": 0.5, "event_mask": 1 }, ... ]
2.3 历史记录 (History)
用于“记录报表”界面的查询。
-
查询历史分析结果
GET /api/history/results?start_time=xxx&end_time=xxx&page=1&size=20- 返回: 指定时间段内的进样批次及核心浓度列表。
-
获取单次进样的完整图谱与峰数据
GET /api/history/run/:run_id- 返回: 该次进样的完整 XML/JSON 图谱数据和
Peak列表,供“谱图处理”界面重绘使用。
注:所有的 POST 接口在 Go 后端接收到后,除了进行必要的持久化存储外,还需负责将其转化为相应的 TCP Modbus/GCKC 协议帧,异步下发给色谱主板,确保前端点击即生效。
