- 重构Redis心跳数据结构,使用统一的项目列表键 - 新增数据迁移工具和API端点 - 更新前端以使用真实项目数据 - 添加系统部署配置和文档 - 修复代码格式和样式问题
2.6 KiB
2.6 KiB
Change: Refactor Project Heartbeat Data Structure
Why
当前项目心跳数据使用分散的Redis键结构({projectName}_项目心跳),导致以下问题:
- 难以统一管理和查询所有项目
- 前端项目选择功能需要硬编码测试数据
- 无法高效获取项目列表和状态
- 数据迁移和维护成本高
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- 新增项目列表和迁移APIspecs/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- 移除假数据,连接APIsrc/frontend/store/projectStore.js- 扩展状态管理src/frontend/views/LogView.vue- 连接真实APIsrc/frontend/views/CommandView.vue- 连接真实APIsrc/frontend/views/MainView.vue- 传递项目名称src/frontend/components/Console.vue- 接受项目名称属性src/frontend/App.vue- 修正健康检查端点
Migration Plan
- 执行数据迁移:调用
POST /api/projects/migrate - 验证迁移结果:检查
项目心跳键包含所有项目 - 测试项目选择功能:确认前端能正确显示项目列表
- 测试日志和命令功能:确认功能正常
- 清理旧键(可选):调用迁移API并设置
deleteOldKeys: true
Backward Compatibility
系统保持向后兼容:
- 优先读取新的项目列表结构
- 如果新结构中未找到项目,回退到旧结构
- 支持平滑过渡,无需立即删除旧键
Benefits
- 统一的项目管理,提高可维护性
- 前端显示真实项目数据,移除测试假数据
- 提高查询效率,减少Redis操作次数
- 支持未来功能扩展(如项目分组、搜索等)