// ============================================================
// Sampling — 混合采样策略
// 来源：docs/08-成本控制.md — "定时低频 + 事件高频"
// ============================================================

/** 静默时采样间隔（ms） */
const IDLE_INTERVAL = 5000;
/** 用户说话时采样间隔（ms） */
const ACTIVE_INTERVAL = 1000;

export class SamplingController {
  private lastSampleTime = 0;
  private _isUserSpeaking = false;

  /** 设置用户是否正在说话 */
  set speaking(value: boolean) {
    this._isUserSpeaking = value;
  }

  get speaking(): boolean {
    return this._isUserSpeaking;
  }

  /** 当前采样间隔 */
  get interval(): number {
    return this._isUserSpeaking ? ACTIVE_INTERVAL : IDLE_INTERVAL;
  }

  /** 是否应该采样（基于时间间隔） */
  shouldSample(): boolean {
    const now = Date.now();
    if (now - this.lastSampleTime < this.interval) {
      return false;
    }
    this.lastSampleTime = now;
    return true;
  }

  /** 强制允许下次采样（如用户刚说完话时） */
  resetTimer(): void {
    this.lastSampleTime = 0;
  }
}
