feat: 重构项目心跳数据结构并实现相关功能
- 重构Redis心跳数据结构,使用统一的项目列表键 - 新增数据迁移工具和API端点 - 更新前端以使用真实项目数据 - 添加系统部署配置和文档 - 修复代码格式和样式问题
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user