"""
Hojas de comparativa APROBADO vs REGEN, una por bloque.

Genera un PNG por bloque con las dos versiones lado a lado y el nombre encima,
para elegir cual se queda sin ir una por una. Pide Pillow; si no esta, avisa.

    python Engine/compare_aprobados.py --pool explicit
    python Engine/compare_aprobados.py --pool explicit --cell 380
"""
import argparse
import sys
from pathlib import Path

TEST_BLOCKS = Path(r"Output\test_blocks")


def main():
    p = argparse.ArgumentParser(description="Hojas de comparativa")
    p.add_argument("--pool", default="explicit")
    p.add_argument("--cell", type=int, default=380, help="ancho de cada imagen")
    args = p.parse_args()

    try:
        from PIL import Image, ImageDraw
    except ImportError:
        raise SystemExit("[!] Falta Pillow: pip install pillow")

    a = TEST_BLOCKS / args.pool / "APROBADO"
    b = TEST_BLOCKS / args.pool / "REGEN"
    out = TEST_BLOCKS / args.pool / "COMPARATIVA"
    if not a.is_dir() or not b.is_dir():
        raise SystemExit(f"[!] Falta {a} o {b}")

    out.mkdir(parents=True, exist_ok=True)
    cell = args.cell
    head = 46
    n = 0
    pares = []

    for pa in sorted(a.glob("*.png")):
        pb = b / pa.name
        if not pb.exists():
            continue
        pares.append((pa, pb))

    for pa, pb in pares:
        ia = Image.open(pa).convert("RGB")
        ib = Image.open(pb).convert("RGB")
        # reescalar a la misma altura manteniendo proporcion
        h = int(ia.height * cell / ia.width)
        ia = ia.resize((cell, h), Image.LANCZOS)
        ib = ib.resize((cell, h), Image.LANCZOS)

        sheet = Image.new("RGB", (cell * 2 + 12, h + head), (24, 24, 28))
        sheet.paste(ia, (0, head))
        sheet.paste(ib, (cell + 12, head))
        d = ImageDraw.Draw(sheet)
        d.text((8, 8), "APROBADO (prompt viejo)", fill=(200, 200, 200))
        d.text((cell + 20, 8), "REGEN (BREAK, actual)", fill=(255, 220, 120))
        d.text((8, 26), pa.name, fill=(255, 255, 255))
        sheet.save(out / pa.name)
        n += 1

    print(f"[OK] {n} hojas de comparativa -> {out}")
    if n:
        print("     cada hoja: APROBADO | REGEN, con el nombre del bloque arriba")


if __name__ == "__main__":
    main()