#!/usr/bin/env python3
"""M1 배너 HTML만 재렌더링 (배경 이미지 재생성 없음).

기존 배경 이미지를 재사용하여 수정된 HTML/CSS로 6장을 Playwright 캡처합니다.
"""

from __future__ import annotations
import sys
from pathlib import Path

TOOL_DIR = Path(__file__).parent
sys.path.insert(0, str(TOOL_DIR))

# 각 스크립트의 HTML 템플릿과 capture 함수를 import
import gen_m1_1_fair_banners as m1_1
import gen_m1_2_leader_banners as m1_2
import gen_m1_3_support_banners as m1_3

OUTPUT_DIR = Path("/home/jay/workspace/output/google-ads/banners/m1")

BG_PATHS = {
    "m1_1": TOOL_DIR / "output" / "v4-hybrid" / "m1-1-fair" / "bg_m1_1_fair.png",
    "m1_2": TOOL_DIR / "output" / "v4-hybrid" / "m1-2-leader" / "bg_m1_2_leader.png",
    "m1_3": TOOL_DIR / "output" / "v4-hybrid" / "m1-3-support" / "bg_m1_3_support.png",
}

def main():
    print("=" * 60)
    print("M1 배너 HTML 전용 재렌더링 시작 (배경 재생성 없음)")
    print("=" * 60)

    results = []

    # M1-1
    print("\n[M1-1] 1200x628 렌더링...")
    out = OUTPUT_DIR / "m1-1-1200x628.png"
    try:
        m1_1.capture_html_to_png(m1_1.HTML_1200x628, BG_PATHS["m1_1"], out, 1200, 628)
        kb = out.stat().st_size / 1024
        print(f"  완료: {kb:.0f} KB")
        results.append(("m1-1-1200x628", True, f"{kb:.0f} KB"))
    except Exception as e:
        print(f"  실패: {e}")
        results.append(("m1-1-1200x628", False, str(e)))

    print("\n[M1-1] 1080x1080 렌더링...")
    out = OUTPUT_DIR / "m1-1-1080x1080.png"
    try:
        m1_1.capture_html_to_png(m1_1.HTML_1080x1080, BG_PATHS["m1_1"], out, 1080, 1080)
        kb = out.stat().st_size / 1024
        print(f"  완료: {kb:.0f} KB")
        results.append(("m1-1-1080x1080", True, f"{kb:.0f} KB"))
    except Exception as e:
        print(f"  실패: {e}")
        results.append(("m1-1-1080x1080", False, str(e)))

    # M1-2
    print("\n[M1-2] 1200x628 렌더링...")
    out = OUTPUT_DIR / "m1-2-1200x628.png"
    try:
        m1_2.capture_html_to_png(m1_2.HTML_1200x628, BG_PATHS["m1_2"], out, 1200, 628)
        kb = out.stat().st_size / 1024
        print(f"  완료: {kb:.0f} KB")
        results.append(("m1-2-1200x628", True, f"{kb:.0f} KB"))
    except Exception as e:
        print(f"  실패: {e}")
        results.append(("m1-2-1200x628", False, str(e)))

    print("\n[M1-2] 1080x1080 렌더링...")
    out = OUTPUT_DIR / "m1-2-1080x1080.png"
    try:
        m1_2.capture_html_to_png(m1_2.HTML_1080x1080, BG_PATHS["m1_2"], out, 1080, 1080)
        kb = out.stat().st_size / 1024
        print(f"  완료: {kb:.0f} KB")
        results.append(("m1-2-1080x1080", True, f"{kb:.0f} KB"))
    except Exception as e:
        print(f"  실패: {e}")
        results.append(("m1-2-1080x1080", False, str(e)))

    # M1-3
    print("\n[M1-3] 1200x628 렌더링...")
    out = OUTPUT_DIR / "m1-3-1200x628.png"
    try:
        m1_3.capture_html_to_png(m1_3.HTML_1200x628, BG_PATHS["m1_3"], out, 1200, 628)
        kb = out.stat().st_size / 1024
        print(f"  완료: {kb:.0f} KB")
        results.append(("m1-3-1200x628", True, f"{kb:.0f} KB"))
    except Exception as e:
        print(f"  실패: {e}")
        results.append(("m1-3-1200x628", False, str(e)))

    print("\n[M1-3] 1080x1080 렌더링...")
    out = OUTPUT_DIR / "m1-3-1080x1080.png"
    try:
        m1_3.capture_html_to_png(m1_3.HTML_1080x1080, BG_PATHS["m1_3"], out, 1080, 1080)
        kb = out.stat().st_size / 1024
        print(f"  완료: {kb:.0f} KB")
        results.append(("m1-3-1080x1080", True, f"{kb:.0f} KB"))
    except Exception as e:
        print(f"  실패: {e}")
        results.append(("m1-3-1080x1080", False, str(e)))

    # 결과 요약
    print("\n" + "=" * 60)
    print("렌더링 결과 요약")
    print("=" * 60)
    success = sum(1 for _, ok, _ in results if ok)
    for name, ok, info in results:
        status = "OK" if ok else "FAIL"
        print(f"  [{status}] {name}: {info}")
    print(f"\n총 {success}/{len(results)} 성공")

if __name__ == "__main__":
    main()
