- 新增统一项目列表Redis键和迁移工具 - 实现GET /api/projects端点获取项目列表 - 实现POST /api/projects/migrate端点支持数据迁移 - 更新前端ProjectSelector组件使用真实项目数据 - 扩展projectStore状态管理 - 更新相关文档和OpenSpec规范 - 添加测试用例验证新功能
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 }