export class RedisIntegration { constructor(client, projectName, apiBaseUrl) { this.client = client; this.projectName = projectName; this.apiBaseUrl = apiBaseUrl; this.heartbeatKey = '项目心跳'; this.logKey = `${projectName}_项目控制台`; } async info(message, context) { const payload = { timestamp: new Date().toISOString(), level: 'info', message, metadata: context || undefined }; await this.client.rPush(this.logKey, JSON.stringify(payload)); } async error(message, context) { const payload = { timestamp: new Date().toISOString(), level: 'error', message, metadata: context || undefined }; await this.client.rPush(this.logKey, JSON.stringify(payload)); } startHeartbeat() { setInterval(() => { const payload = { projectName: this.projectName, apiBaseUrl: this.apiBaseUrl, lastActiveAt: Date.now() }; this.client.rPush(this.heartbeatKey, JSON.stringify(payload)); }, 3000); } }