#!/usr/bin/env bash
# Build Wayback Validation Report
set -euo pipefail

CSV="${1:-data/results/domain_results_rescored_v2.csv}"
OUT="${2:-data/results/WAYBACK_VERIFIED_REPORT.txt}"

{
  echo "============================================"
  echo "  WAYBACK VALIDATED DOMAIN REPORT"
  echo "  Generated: $(date -Iseconds)"
  echo "============================================"
  echo ""
  echo "Methodology:"
  echo "  CSV score: real metrics from Namecheap data (0-100)"
  echo "  Wayback score: historical website validation (0-100)"
  echo "  Combined: CSV + min(Wayback, 30)"
  echo ""

  # Build merged data via node
  node -e "
const fs = require('fs');
const csv = fs.readFileSync('$CSV','utf8').trim().split('\n');
const header = csv[0].split(',');

const csvMap = {};
for (let i=1; i<csv.length; i++) {
  const cols = csv[i].split(',');
  const domain = cols[1];
  if (domain) {
    csvMap[domain] = { score: parseInt(cols[0],10)||0, bid: cols[2], renew: cols[3], total: cols[4], age: cols[5], ext: cols[6], estibot: cols[7], goval: cols[8], dr: cols[9], bl: cols[10], bids: cols[11], sold: cols[12], soldyr: cols[13], flags: cols[14], tags: cols[15] };
  }
}

const files = fs.readdirSync('data/cache/wayback').filter(f => f.endsWith('_wayback.txt'));
const results = [];
for (const f of files) {
  const line = fs.readFileSync('data/cache/wayback/'+f,'utf8').trim();
  if (!line) continue;
  try {
    const d = JSON.parse(line);
    const c = csvMap[d.domain] || { score:0 };
    const wbBonus = Math.min(d.score || 0, 30);
    const combined = c.score + wbBonus;
    results.push({
      combined, csvScore: c.score, wbScore: d.score, wbBonus,
      domain: d.domain, status: d.status, title: d.title,
      parking: d.isParking, linkedin: d.hasLinkedIn,
      total: c.total, age: c.age, ext: c.ext, bids: c.bids, bl: c.bl, tags: c.tags
    });
  } catch(e) {}
}

results.sort((a,b) => b.combined - a.combined);
const rows = results.slice(0,50);

console.log('TOP 50 BY COMBINED SCORE');
console.log('========================');
console.log('');

for (let i=0; i<rows.length; i++) {
  const r = rows[i];
  console.log((i+1).toString().padStart(2,' ')+'. '+r.domain);
  console.log('    CSV='+r.csvScore+'  Wayback='+r.wbScore+'  BONUS='+r.wbBonus+'  COMBINED='+r.combined);
  if (r.title) console.log('    Wayback title: \"'+r.title.substring(0,100)+'\"');
  console.log('    Status: '+r.status+'  parking='+r.parking+'  linkedIn='+r.linkedin);
  console.log('    Tags: '+r.tags);
  console.log('    Price: \$'+r.total+'  Age: '+r.age+'y  Ext: '+r.ext+'  Bids: '+r.bids+'  Backlinks: '+r.bl);
  console.log('');
}

console.log('DOMAINS WITH WAYBACK SCORE > 0');
console.log('================================');
console.log('');
const wbHits = results.filter(r => r.wbScore > 0).sort((a,b) => b.wbScore - a.wbScore);
for (const r of wbHits) {
  console.log(r.domain.padEnd(30)+' WB='+r.wbScore.toString().padStart(3)+'  CSV='+r.csvScore.toString().padStart(3)+'  COMBINED='+r.combined.toString().padStart(3)+'  \"'+ (r.title||'').substring(0,60) +'\"');
}

console.log('');
console.log('============================================');
console.log('  END OF REPORT');
console.log('============================================');
"
} > "$OUT"

echo "Report written: $OUT ($(wc -l < "$OUT") lines)"
echo ""
head -120 "$OUT"