Files
Web_BLS_ProjectConsole/openspec/changes/update-command-control-api/proposal.md
XuJiacheng 282f7268ed feat: 重构项目心跳数据结构并实现项目列表API
- 新增统一项目列表Redis键和迁移工具
- 实现GET /api/projects端点获取项目列表
- 实现POST /api/projects/migrate端点支持数据迁移
- 更新前端ProjectSelector组件使用真实项目数据
- 扩展projectStore状态管理
- 更新相关文档和OpenSpec规范
- 添加测试用例验证新功能
2026-01-13 19:45:05 +08:00

1.6 KiB
Raw Blame History

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 路由到对应动作)。
  • 控制台:发送命令格式从“整行命令”迁移到“接口名 + 参数”。