#!/usr/bin/env python3
"""
regerar_analise.py <analise_id>

Regera SOMENTE o HTML da landing page de uma analise ja concluida,
reusando copy + dados + imagens ja persistidos.
Sobreescreve o index.html no mesmo diretorio; NAO mexe em servidor/Traefik/DNS.

Uso:
    python3 scripts/regerar_analise.py 5
"""
import json
import sqlite3
import sys
import time
from pathlib import Path

# Adiciona o pai ao path pra importar o analisador
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))

from analisador import (  # noqa: E402
    BASE_ANALISES,
    detectar_segmento,
    gerar_html_leo,
    DB_PATH,
)


def main() -> int:
    if len(sys.argv) < 2:
        print("uso: python3 scripts/regerar_analise.py <analise_id>")
        return 2

    try:
        analise_id = int(sys.argv[1])
    except ValueError:
        print(f"analise_id invalido: {sys.argv[1]}")
        return 2

    conn = sqlite3.connect(str(DB_PATH))
    row = conn.execute(
        "SELECT id, lead_nome, lead_telefone, lead_cidade, lead_categoria, "
        "lead_instagram, lead_site_atual, status, site_url, analise_json "
        "FROM lead_analises WHERE id=?",
        (analise_id,),
    ).fetchone()
    if not row:
        print(f"analise id={analise_id} nao encontrada no DB")
        return 3

    if not row[9]:
        print(f"analise id={analise_id} nao tem analise_json (status={row[7]})")
        return 3

    payload = json.loads(row[9])
    copy = payload.get("copy") or {}
    dados = payload.get("dados") or {}
    imagens = payload.get("imagens") or []
    slug = payload.get("slug")
    porta = payload.get("porta")

    # Complementa com dados do lead que ficaram fora do "dados"
    dados.setdefault("nome", row[1])
    dados.setdefault("nome_google", dados.get("nome_google") or row[1])
    dados.setdefault("telefone", row[2])
    dados.setdefault("lead_telefone", row[2])
    dados.setdefault("cidade", row[3])
    dados.setdefault("categoria", row[4])
    dados["_analise_id"] = analise_id

    analise_dir = BASE_ANALISES / str(analise_id)
    site_dir = analise_dir / "site"
    site_dir.mkdir(parents=True, exist_ok=True)

    segmento = detectar_segmento(dados)
    print(f"[regerar] id={analise_id} slug={slug} porta={porta} segmento={segmento}")
    print(f"[regerar] imagens={imagens}")
    print(f"[regerar] chamando gerar_html_leo (Claude CLI)...")

    t0 = time.time()
    html = gerar_html_leo(copy, dados, imagens, segmento)
    dur = time.time() - t0

    dest = site_dir / "index.html"
    # backup do html anterior
    if dest.exists():
        bkp = site_dir / f"index.html.bak-{int(time.time())}"
        bkp.write_bytes(dest.read_bytes())
        print(f"[regerar] backup do anterior: {bkp.name}")

    dest.write_text(html, encoding="utf-8")
    print(f"[regerar] escrito {dest} ({len(html)} bytes, {dur:.1f}s)")
    print(f"[regerar] URL: {payload.get('site_url')}")
    print(f"[regerar] local: http://127.0.0.1:{porta}")
    return 0


if __name__ == "__main__":
    sys.exit(main())
