2026-01-13 19:45:05 +08:00
|
|
|
|
# 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
|
2026-01-15 14:14:10 +08:00
|
|
|
|
- Affected specs:
|
2026-01-13 19:45:05 +08:00
|
|
|
|
- `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操作次数
|
2026-01-15 14:14:10 +08:00
|
|
|
|
- 支持未来功能扩展(如项目分组、搜索等)
|