Files
XuJiacheng a8faa7dcaa feat: 重构项目心跳数据结构并实现相关功能
- 重构Redis心跳数据结构,使用统一的项目列表键
- 新增数据迁移工具和API端点
- 更新前端以使用真实项目数据
- 添加系统部署配置和文档
- 修复代码格式和样式问题
2026-01-15 14:14:10 +08:00

2.6 KiB
Raw Permalink Blame History

Change: Refactor Project Heartbeat Data Structure

Why

当前项目心跳数据使用分散的Redis键结构{projectName}_项目心跳),导致以下问题:

  1. 难以统一管理和查询所有项目
  2. 前端项目选择功能需要硬编码测试数据
  3. 无法高效获取项目列表和状态
  4. 数据迁移和维护成本高

What Changes

  • 新增统一的项目列表Redis键项目心跳
  • 新增数据迁移工具,支持从旧结构迁移到新结构
  • 新增项目列表API端点GET /api/projects
  • 新增数据迁移API端点POST /api/projects/migrate
  • 修改前端ProjectSelector组件移除硬编码测试数据从API获取真实项目
  • 修改后端logs.js和commands.js支持新旧数据结构的向后兼容
  • 更新OpenSpec规范文档反映新的API和数据结构

Impact

  • Affected specs:
    • specs/logging/spec.md - 更新日志API响应格式
    • specs/command/spec.md - 新增项目列表和迁移API
    • specs/redis-connection/spec.md - 新增项目列表相关API
  • Affected code:
    • src/backend/services/redisKeys.js - 新增项目列表键函数
    • src/backend/services/migrateHeartbeatData.js - 新增数据迁移工具
    • src/backend/routes/projects.js - 新增项目列表路由
    • src/backend/routes/logs.js - 更新心跳读取逻辑
    • src/backend/routes/commands.js - 更新心跳读取逻辑
    • src/backend/server.js - 注册项目列表路由
    • src/frontend/components/ProjectSelector.vue - 移除假数据连接API
    • src/frontend/store/projectStore.js - 扩展状态管理
    • src/frontend/views/LogView.vue - 连接真实API
    • src/frontend/views/CommandView.vue - 连接真实API
    • src/frontend/views/MainView.vue - 传递项目名称
    • src/frontend/components/Console.vue - 接受项目名称属性
    • src/frontend/App.vue - 修正健康检查端点

Migration Plan

  1. 执行数据迁移:调用POST /api/projects/migrate
  2. 验证迁移结果:检查项目心跳键包含所有项目
  3. 测试项目选择功能:确认前端能正确显示项目列表
  4. 测试日志和命令功能:确认功能正常
  5. 清理旧键可选调用迁移API并设置deleteOldKeys: true

Backward Compatibility

系统保持向后兼容:

  • 优先读取新的项目列表结构
  • 如果新结构中未找到项目,回退到旧结构
  • 支持平滑过渡,无需立即删除旧键

Benefits

  • 统一的项目管理,提高可维护性
  • 前端显示真实项目数据,移除测试假数据
  • 提高查询效率减少Redis操作次数
  • 支持未来功能扩展(如项目分组、搜索等)