import { fetchQueueOpRate } from '@/server/cron/settlement-monitor.js';
import type { CheckAdapter, CheckContext, CheckResult } from '../types.js';
import { formatNumber } from '@/lib/format';

export const queueOpRate: CheckAdapter = {
  key: 'queue_op_rate',
  title: 'Cloudflare queue op-rate (24h)',
  defaultConfig: {},
  defaultIntervalHours: 6,
  async run(ctx: CheckContext): Promise<CheckResult> {
    const r = await fetchQueueOpRate(ctx.env, ctx.now);
    if (r.mode === 'degraded') {
      return {
        key: this.key,
        severity: 'warn',
        degraded: true,
        title: this.title,
        detail: `degraded: ${r.reason ?? 'unknown'}`,
      };
    }
    return {
      key: this.key,
      severity: r.severity,
      title: this.title,
      detail: `${formatNumber(r.totalOps, 'en')} ops/day (${r.pctOfTier}% of tier)`,
      metrics: { totalOps: r.totalOps ?? 0, pctOfTier: r.pctOfTier ?? 0 },
    };
  },
};
