import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.join(__dirname, '../../.env') });

import pool from '../db';
import { deriveGrade } from '../services/forecast-lifecycle';

async function main() {
  console.log(`[${new Date().toISOString()}] Backfilling legacy team grades...`);

  const { rows } = await pool.query(
    `SELECT id, event_id, predicted_winner, actual_winner
     FROM rm_forecast_accuracy_v2
     WHERE actual_winner IS NOT NULL
       AND final_grade IS NULL
     ORDER BY resolved_at NULLS LAST, event_id ASC`,
  );

  let updated = 0;
  for (const row of rows) {
    const finalGrade = row.actual_winner === 'DRAW'
      ? 'P'
      : deriveGrade(row.predicted_winner, row.actual_winner);
    if (!finalGrade) continue;

    await pool.query(
      `UPDATE rm_forecast_accuracy_v2
       SET final_grade = $2,
           grading_policy = COALESCE(grading_policy, 'winner_only_fallback'),
           forecast_type = COALESCE(forecast_type, 'moneyline'),
           benchmark_source = COALESCE(benchmark_source, 'legacy')
       WHERE id = $1`,
      [row.id, finalGrade],
    );
    updated += 1;
  }

  console.log(`Backfill complete. Updated ${updated}/${rows.length} legacy team grades.`);
  await pool.end();
}

main().catch((err) => {
  console.error('Legacy team grade backfill failed:', err);
  process.exit(1);
});
