29 lines
1.6 KiB
Markdown
29 lines
1.6 KiB
Markdown
|
|
# Change: Command control via HTTP API (remove Redis control queue)
|
|||
|
|
|
|||
|
|
## Why
|
|||
|
|
|
|||
|
|
当前命令下发使用 Redis LIST `${targetProjectName}_控制` 作为控制队列;现需改为通过 HTTP API 直接调用目标项目,从而简化接入与减少 Redis 在“控制通道”上的耦合。
|
|||
|
|
|
|||
|
|
## What Changes
|
|||
|
|
|
|||
|
|
- **BREAKING**:命令下发不再写入 Redis `${projectName}_控制` 队列;目标项目不再需要读取控制指令 Key。
|
|||
|
|
- 控制台输入规则调整:发送前按空格拆分,首个 token 为 `apiName`(接口名/路径片段),其余为参数。
|
|||
|
|
- 后端 `/api/commands` 改为:通过 Redis 心跳信息解析目标项目 `apiBaseUrl`,再调用 `${apiBaseUrl}/${apiName}`(默认 POST)。
|
|||
|
|
- 目标项目需在 Redis 写入心跳:包含 `apiBaseUrl` 与活跃时间戳(建议 3 秒刷新);后端若连续 10 秒未更新则视为离线。
|
|||
|
|
- 更新对接文档:`docs/redis-integration-protocol.md` 去除“读取控制指令队列”的要求,仅保留“写状态+写控制台日志”两类 Key,并新增“目标项目需暴露 HTTP 控制 API”的约定。
|
|||
|
|
- 调整对接文档:使用“心跳”(包含在线判定与 API 地址)作为唯一在线来源。
|
|||
|
|
|
|||
|
|
## Impact
|
|||
|
|
|
|||
|
|
- Affected specs: command
|
|||
|
|
- Affected code:
|
|||
|
|
- src/backend/routes/commands.js
|
|||
|
|
- src/frontend/components/Console.vue
|
|||
|
|
- .env.example(新增 API 调用相关可选变量)
|
|||
|
|
- docs/redis-integration-protocol.md
|
|||
|
|
|
|||
|
|
## Migration
|
|||
|
|
|
|||
|
|
- 目标项目:停止读取 `${projectName}_控制`;改为提供 HTTP 接口(由 `apiName` 路由到对应动作)。
|
|||
|
|
- 控制台:发送命令格式从“整行命令”迁移到“接口名 + 参数”。
|