feat: 重构项目心跳数据结构并实现相关功能

- 重构Redis心跳数据结构,使用统一的项目列表键
- 新增数据迁移工具和API端点
- 更新前端以使用真实项目数据
- 添加系统部署配置和文档
- 修复代码格式和样式问题
This commit is contained in:
2026-01-15 14:14:10 +08:00
parent 282f7268ed
commit a8faa7dcaa
24 changed files with 307 additions and 560 deletions

View File

@@ -15,7 +15,6 @@
**描述**: 统一存储所有项目的心跳信息,替代原有的分散键结构。
**数据格式**:
```json
[
{
@@ -27,19 +26,11 @@
```
**字段说明**:
- `projectName`: 项目名称(字符串)
- `apiBaseUrl`: 项目API基础URL字符串对应“API地址”
- `lastActiveAt`: 最新心跳时间Unix 时间戳毫秒,数字),对应“最新心跳时间”
**与需求字段对应**:
- 项目名称 → `projectName`
- API地址 → `apiBaseUrl`
- 最新心跳时间 → `lastActiveAt`
- `apiBaseUrl`: 项目API基础URL字符串
- `lastActiveAt`: 最后活跃时间戳毫秒,数字)
**示例**:
```json
[
{
@@ -66,7 +57,6 @@
**数据格式**: 每个列表元素是一个JSON字符串包含日志信息。
**日志对象格式**:
```json
{
"id": "string",
@@ -78,7 +68,6 @@
```
**字段说明**:
- `id`: 日志唯一标识符
- `timestamp`: ISO-8601格式的时间戳
- `level`: 日志级别info, warn, error, debug
@@ -86,7 +75,6 @@
- `metadata`: 可选的附加元数据
**示例**:
```json
{
"id": "log-1704067200000-abc123",
@@ -109,7 +97,6 @@
**描述**: 存储发送给项目的控制指令。
**指令对象格式**:
```json
{
"commandId": "string",
@@ -123,7 +110,6 @@
```
**字段说明**:
- `commandId`: 指令唯一标识符
- `timestamp`: ISO-8601格式的时间戳
- `source`: 指令来源(如"BLS Project Console"
@@ -133,7 +119,6 @@
- `extraArgs`: 可选的额外参数
**示例**:
```json
{
"commandId": "cmd-1704067200000-xyz789",
@@ -171,16 +156,15 @@
- 备份现有数据(可选)
2. **执行迁移**
```javascript
import { migrateHeartbeatData } from './services/migrateHeartbeatData.js';
// 干运行模式(不实际写入数据)
await migrateHeartbeatData({ dryRun: true });
// 实际迁移
await migrateHeartbeatData({ deleteOldKeys: false });
// 迁移并删除旧键
await migrateHeartbeatData({ deleteOldKeys: true });
```
@@ -195,7 +179,6 @@
**端点**: `POST /api/projects/migrate`
**请求体**:
```json
{
"deleteOldKeys": false,
@@ -204,12 +187,10 @@
```
**参数说明**:
- `deleteOldKeys`: 是否删除旧的心跳键(默认: false
- `dryRun`: 是否为干运行模式(默认: false
**响应**:
```json
{
"success": true,
@@ -251,7 +232,6 @@
### 健康检查
定期检查以下指标:
- Redis连接状态
- 项目列表完整性
- 日志队列长度
@@ -296,4 +276,4 @@
- [Redis数据类型](https://redis.io/docs/data-types/)
- [项目OpenSpec规范](../openspec/specs/)
- [API文档](../docs/api-documentation.md)
- [API文档](../docs/api-documentation.md)