#!/bin/bash
# Mass extraction orchestrator — 71 GD brands en batches de 3 parallèles
# Tier 1 (easy) → Tier 2 (medium) → Tier 3 (risky)
# Cumulative timeout: 240s par extract (skip après timeout)
# Output: logs/mass-<TS>/{success,failed,timing}.txt

set -u
cd /home/paul/clone-architect
TS=$(date +%Y%m%d-%H%M)
LOGDIR="logs/mass-$TS"
mkdir -p "$LOGDIR"
SUCCESS="$LOGDIR/success.txt"
FAILED="$LOGDIR/failed.txt"
TIMING="$LOGDIR/timing.txt"
touch "$SUCCESS" "$FAILED" "$TIMING"

# === Tier 1 — Easy wins (33 brands) ===
TIER1=(claude.com clay.com cohere.com composio.dev expo.dev hashicorp.com mastercard.com replicate.com sanity.io sentry.io superhuman.com voltagent.dev warp.dev wise.com x.ai zapier.com airtable.com elevenlabs.io pinterest.com runwayml.com cal.com clickhouse.com intercom.com lovable.dev mintlify.com mistral.ai opencode.ai posthog.com resend.com supabase.com together.ai raycast.com linear.app)

# === Tier 2 — Medium (24 brands) ===
TIER2=(bmw.com bmwm.com bugatti.com ferrari.com hp.com lamborghini.com meta.com playstation.com renault.com spacex.com tesla.com uber.com wired.com airbnb.com apple.com cursor.com framer.com ibm.com miro.com mongodb.com nvidia.com ollama.com shopify.com spotify.com)

# === Tier 3 — Risky (14 brands, anti-bot) ===
TIER3=(binance.com coinbase.com kraken.com nike.com notion.so revolut.com starbucks.com stripe.com theverge.com vercel.com vodafone.com webflow.com minimax.io figma.com)

extract_one() {
  local domain=$1
  local start=$(date +%s)
  # bmwm.com special case (BMW M doesn't exist as TLD, use bmw-m.com or skip)
  local url="https://$domain"
  if [ "$domain" = "bmwm.com" ]; then
    url="https://www.bmw-m.com"
  fi
  if timeout 240s npx tsx scripts/extract.ts "$url" > "$LOGDIR/$domain.log" 2>&1; then
    local elapsed=$(( $(date +%s) - start ))
    echo "$domain" >> "$SUCCESS"
    echo "$domain $elapsed" >> "$TIMING"
    echo "  ✅ $domain (${elapsed}s)"
  else
    local elapsed=$(( $(date +%s) - start ))
    echo "$domain" >> "$FAILED"
    echo "$domain ${elapsed}s FAIL" >> "$TIMING"
    echo "  ❌ $domain (${elapsed}s)"
  fi
}

run_batch_of_3() {
  local d1=${1:-}; local d2=${2:-}; local d3=${3:-}
  [ -n "$d1" ] && extract_one "$d1" &
  [ -n "$d2" ] && extract_one "$d2" &
  [ -n "$d3" ] && extract_one "$d3" &
  wait
}

run_tier() {
  local tier_name=$1
  shift
  local tier=("$@")
  echo "═══════════════════════════════════════════════════"
  echo "🚀 $tier_name — ${#tier[@]} brands"
  echo "═══════════════════════════════════════════════════"
  local i=0
  while [ $i -lt ${#tier[@]} ]; do
    local d1=${tier[$i]:-}
    local d2=${tier[$((i+1))]:-}
    local d3=${tier[$((i+2))]:-}
    run_batch_of_3 "$d1" "$d2" "$d3"
    i=$((i+3))
    # Free RAM between batches
    sync && echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null 2>&1 || true
  done
}

echo "📁 Logs: $LOGDIR"
echo ""

run_tier "TIER 1 — Easy" "${TIER1[@]}"
run_tier "TIER 2 — Medium" "${TIER2[@]}"
run_tier "TIER 3 — Risky" "${TIER3[@]}"

echo ""
echo "═══════════════════════════════════════════════════"
echo "📊 RÉSULTATS"
echo "═══════════════════════════════════════════════════"
echo "  Success : $(wc -l < $SUCCESS) brands"
echo "  Failed  : $(wc -l < $FAILED) brands"
echo ""
echo "Failed brands:"
cat "$FAILED" 2>/dev/null | sed 's/^/  ❌ /'
echo ""
echo "Logs in: $LOGDIR"
