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);
  }
}
