refactor: rename iot client to stateless gateway

This commit is contained in:
2026-08-03 14:43:39 +08:00
parent 5edca1524f
commit aaede08f88
26 changed files with 92 additions and 111 deletions

View File

@@ -53,7 +53,7 @@ flowchart LR
| --- | --- | --- |
| `api` | 用户端和五个管理系统的 HTTP API、鉴权、同步业务事务 | 无状态部署;所有写操作支持幂等键、事务和审计 |
| `worker` | 事件消费、告警、派单、推送、对账、超时扫描、轨迹异常识别 | Redis Streams 消费组;重试、死信、幂等消费和可观测的积压告警 |
| `iot-client` | 管理系统/App 的设备上下行 HTTP 边界、幂等受理与状态查询 | 不绕过 API 的 JWT、角色、对象归属与安全状态校验 |
| `iot-gateway` | API/Worker 与 IoT Server 的无状态上下行 HTTP 轻网关 | 不保存业务事实;不绕过 API 的 JWT、角色、对象归属与安全状态校验 |
| `iot-server` | 内嵌 Mochi MQTT Broker、厂商协议适配、遥测校验、命令下发与回执 | 保持设备会话一致性;每设备认证与 Topic ACL协议版本、设备身份、LRC8 与 AES 校验 |
关键业务采用“数据库事务 + Outbox 事件表 + Worker 投递”的模式:先在 PostgreSQL 提交业务事实与待投递事件,再异步写入 Redis Streams。这样 Redis 故障或 Worker 重启不会丢失订单、告警、支付或设备命令的业务事实。
@@ -63,7 +63,7 @@ flowchart LR
| 基线 | 路径 | 使用要求 |
| --- | --- | --- |
| 前端工程基线 | 现有 Vue 管理端 | Vue 管理系统统一前端框架、路由、状态管理、请求封装、权限指令、表格表单、主题、错误处理、国际化与测试规范 |
| 后端工程基线 | `backend/{api,worker,iot-client,iot-server}` | Go API、Worker 与两个 IoT 进程统一沿用配置、日志、错误码、认证、任务、测试和发布规范 |
| 后端工程基线 | `backend/{api,worker,iot-gateway,iot-server}` | Go API、Worker 与两个 IoT 进程统一沿用配置、日志、错误码、认证、任务、测试和发布规范 |
业务项目应通过共享包、模板或上游同步机制复用标准库,禁止将标准库目录复制到每个子项目后自行漂移。标准库升级需要记录版本、影响范围、兼容策略和回滚方式。
@@ -98,7 +98,7 @@ platforms/
backend/
api/ # Go HTTP API、BFF、同步领域事务
worker/ # Go 异步任务:派单、告警、通知、对账、超时扫描
iot-client/ # 管理系统/App 的设备上下行接口
iot-gateway/ # API/Worker 与 IoT Server 的无状态上下行网关
iot-server/ # MQTT 会话、厂商协议、设备命令、遥测与回执
contracts/
openapi/ # HTTP API 契约及生成配置
@@ -114,7 +114,7 @@ platforms/
performance/ # 遥测、订单、轨迹与消息积压压测
```
其中 `apps/user_app``apps/service_app``backend/{api,worker,iot-client,iot-server}` 与当前管理端目录已经落地;其余标记为规划的目录仍不得因局部任务提前创建空壳。
其中 `apps/user_app``apps/service_app``backend/{api,worker,iot-gateway,iot-server}` 与当前管理端目录已经落地;其余标记为规划的目录仍不得因局部任务提前创建空壳。
## 6. 后端领域划分

View File

@@ -44,7 +44,7 @@
## 3. IoT 协议与可靠性
- 设备厂商 V1.8 二进制帧保持 `0x5E` 起始、`0x5B` 结束、大端序、数据包 AES-128 与 LRC8 规则不变,并作为 MQTT payload 传输Topic 使用 `devices/{deviceId}/{up|down|ack}`QoS 1下行命令禁止 retained。
- `iot-server` 使用 Mochi MQTT v2 内嵌 Broker只处理 MQTT 会话、每设备认证/Topic ACL 和设备协议;`iot-client` 只提供系统侧上下行接口;命令、Outbox、原始上行和回执事实由 API 持久化Worker 负责可重试投递。
- `iot-server` 使用 Mochi MQTT v2 内嵌 Broker只处理 MQTT 会话、每设备认证/Topic ACL 和设备协议;`iot-gateway` 是不保存业务事实的无状态上下行轻网关;命令、幂等、Outbox、原始上行和回执事实由 API 持久化Worker 负责可重试投递。
- 协议封面版本与变更记录冲突时以最新 V1.8 变更记录和绿色标注为兼容实现依据;重复子标识等歧义必须保留原始报文并按设备型号配置解析,不得静默猜测。
- 设备采用 MQTT over TLS设备身份使用每设备证书或短期轮换令牌禁止共享默认密钥。