- 重构Redis心跳数据结构,使用统一的项目列表键 - 新增数据迁移工具和API端点 - 更新前端以使用真实项目数据 - 添加系统部署配置和文档 - 修复代码格式和样式问题
3.7 KiB
3.7 KiB
Redis Connection Capability Specification
Overview
This specification defines the Redis connection capability for the BLS Project Console, which manages the connection between the system and the Redis server for reading logs and sending commands.
Requirements
Requirement: Redis Connection Establishment
The system SHALL establish a connection to the Redis server.
Scenario: Establishing Redis connection on server start
- WHEN the server starts
- THEN it SHALL attempt to connect to the Redis server
- AND it SHALL log the connection status
Requirement: Redis Connection Configuration
The system SHALL allow configuration of Redis connection parameters.
Scenario: Configuring Redis connection via environment variables
- WHEN the server starts with Redis environment variables set
- THEN it SHALL use those variables to configure the Redis connection
- AND it SHALL override default values
Requirement: Redis Connection Reconnection
The system SHALL automatically reconnect to Redis if the connection is lost.
Scenario: Reconnecting to Redis after connection loss
- WHEN the Redis connection is lost
- THEN the system SHALL attempt to reconnect with exponential backoff
- AND it SHALL log each reconnection attempt
- AND it SHALL notify the user when connection is restored
Requirement: Redis Connection Error Handling
The system SHALL handle Redis connection errors gracefully.
Scenario: Handling Redis connection failure
- WHEN the system fails to connect to Redis
- THEN it SHALL log the error
- AND it SHALL display an error message to the user
- AND it SHALL continue attempting to reconnect
Requirement: Redis Connection Monitoring
The system SHALL monitor the Redis connection status.
Scenario: Monitoring Redis connection status
- WHEN the Redis connection status changes
- THEN the system SHALL update the connection status in the UI
- AND it SHALL log the status change
Data Model
Redis Connection Configuration
{
"host": "string",
"port": "number",
"password": "string",
"db": "number",
"socket": {
"reconnectStrategy": "function",
"connectTimeout": "number",
"keepAlive": "number"
}
}
Redis Connection Status
{
"status": "string", // e.g., connecting, connected, disconnected, error
"lastConnectedAt": "ISO-8601 string",
"lastDisconnectedAt": "ISO-8601 string",
"error": "string" // optional error message
}
API Endpoints
GET /api/redis/status
- Description: Get Redis connection status
- Response:
{ "status": "string", "lastConnectedAt": "ISO-8601 string", "lastDisconnectedAt": "ISO-8601 string", "error": "string" }
POST /api/redis/reconnect
- Description: Manually reconnect to Redis
- Response:
{ "success": true, "message": "Reconnection attempt initiated" }
GET /api/projects
- Description: Get list of all projects from Redis
- Response:
{ "success": true, "projects": [ { "id": "string", "name": "string", "apiBaseUrl": "string", "lastActiveAt": "number", "status": "online|offline|unknown", "isOnline": "boolean", "ageMs": "number" } ], "count": 10 }
POST /api/projects/migrate
- Description: Migrate heartbeat data from old structure to new unified structure
- Request Body:
{ "deleteOldKeys": false, "dryRun": false } - Response:
{ "success": true, "message": "数据迁移完成", "migrated": 5, "projects": [...], "listKey": "项目心跳", "deleteOldKeys": false }