#!/usr/bin/env python3
"""
#05 Symbol-as-Campaign v3 렌더러
- 정확히 5개 텍스트 요소만 포함
- 최소 폰트 40px 준수
- bg.jpg + rgba(10,15,30,0.65) 오버레이
"""

import shutil
from pathlib import Path

from playwright.sync_api import sync_playwright

BASE = Path("/home/jay/workspace/output/meta-ads/concept-catalog/05-symbol-as-campaign")
TEMPLATE = BASE / "template-v3.html"
BG_IMAGE = BASE / "bg.jpg"
OUTPUT_SAMPLE = BASE / "sample-v2.png"
OUTPUT_COPY = BASE / "05-symbol-as-campaign-v2.png"


def render() -> None:
    if not TEMPLATE.exists():
        raise FileNotFoundError(f"템플릿 없음: {TEMPLATE}")
    if not BG_IMAGE.exists():
        raise FileNotFoundError(f"배경 이미지 없음: {BG_IMAGE}")

    template_url = f"file://{TEMPLATE.resolve()}"
    bg_file_url = f"file://{BG_IMAGE.resolve()}"

    with sync_playwright() as p:
        browser = p.chromium.launch()
        try:
            page = browser.new_page(viewport={"width": 1080, "height": 1080})
            page.goto(template_url, wait_until="networkidle")

            # 배경 이미지 주입
            page.evaluate(f"""() => {{
                window.BG_PATH = "{bg_file_url}";
                var el = document.getElementById('bgImage');
                if (el) el.src = "{bg_file_url}";
            }}""")

            # 폰트 + 이미지 로딩 대기
            page.wait_for_timeout(2500)

            OUTPUT_SAMPLE.parent.mkdir(parents=True, exist_ok=True)
            page.screenshot(path=str(OUTPUT_SAMPLE), type="png")
            print(f"[저장] {OUTPUT_SAMPLE}  ({OUTPUT_SAMPLE.stat().st_size // 1024} KB)")

        finally:
            browser.close()

    # 복사
    shutil.copy2(OUTPUT_SAMPLE, OUTPUT_COPY)
    print(f"[복사] {OUTPUT_COPY}  ({OUTPUT_COPY.stat().st_size // 1024} KB)")
    print("[완료] 렌더링 성공")


if __name__ == "__main__":
    render()
