"""
Run the heatmap audit pipeline on a single lead.
Trinity Landscape Cairns — test run.
"""
import asyncio
import os
import sys
import logging

# Setup logging so we see what's happening
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")

sys.path.insert(0, '/mnt/e/genesis-system')

from scripts.heatmap_audit.scraper import scrape_all
from scripts.heatmap_audit.analyzer import analyze
from scripts.heatmap_audit.pdf_generator import generate_pdf


async def main():
    output_dir = '/mnt/e/genesis-system/data/heatmap_reports'
    os.makedirs(output_dir, exist_ok=True)

    business_name = "Trinity Landscape Cairns"
    url = "https://www.trinitylandscapecairns.com.au/"

    # --- Step 1: Scrape ---
    print(f"[1/3] Scraping {url} ...")
    raw_data = await scrape_all(
        url=url,
        business_name=business_name,
        location="Cairns",
    )

    print(f"  Raw data top-level keys: {list(raw_data.keys())}")
    for k, v in raw_data.items():
        if isinstance(v, dict):
            print(f"    {k}: {list(v.keys())}")
        else:
            print(f"    {k}: {v}")

    # --- Step 2: Analyze ---
    print("\n[2/3] Analyzing ...")
    scores, recommendations = analyze(raw_data)

    overall = scores.get("overall", {}).get("score", "N/A")
    print(f"  Overall score: {overall}")
    for cat in ["website_speed", "mobile_experience", "online_presence", "seo_basics", "ai_readiness"]:
        cat_data = scores.get(cat, {})
        cat_score = cat_data.get("score", "?") if isinstance(cat_data, dict) else cat_data
        print(f"    {cat}: {cat_score}/100")

    print(f"  Recommendations ({len(recommendations)}):")
    for i, rec in enumerate(recommendations):
        print(f"    {i+1}. [{rec.get('impact','?').upper()}] {rec.get('title','')}")

    # --- Step 3: Generate PDF ---
    print("\n[3/3] Generating PDF ...")
    pdf_path = os.path.join(output_dir, "Trinity_Landscape_Cairns.pdf")
    generate_pdf(
        business_name=business_name,
        scores=scores,
        recommendations=recommendations,
        output_path=pdf_path,
        phone_cta="+61 7 3130 4377",
        website_url=url,
    )
    file_size = os.path.getsize(pdf_path)
    print(f"  PDF generated: {pdf_path}")
    print(f"  PDF size: {file_size:,} bytes ({file_size/1024:.1f} KB)")

    return pdf_path


if __name__ == "__main__":
    pdf_path = asyncio.run(main())
    print(f"\nDONE. PDF at: {pdf_path}")
