# -*- coding: utf-8 -*-
"""
STEP102-10
tools/pre_draft_guard.py

초안 생성 직전에 반드시 실행하는 사전 점검 스크립트.

역할:
1. map_image_url이 비어 있는 중개사 지도 이미지 자동 생성
2. 이후 generate_blog_drafts.py가 실행되면 지도 이미지가 초안에 삽입됨

사용:
cd /d D:\honghee\blog_api
python tools\pre_draft_guard.py --limit 100

낮 파이프라인 권장 순서:
1. schedule_daily_articles.py
2. naver_response_article_fetcher.py
3. tools/pre_draft_guard.py
4. generate_blog_drafts.py
"""

import argparse
import subprocess
import sys
from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]
ENSURE_MAPS = ROOT / "tools" / "ensure_missing_realtor_maps.py"


def run_cmd(cmd, timeout=600):
    print("[RUN]", " ".join(str(x) for x in cmd))
    result = subprocess.run(
        cmd,
        cwd=str(ROOT),
        text=True,
        capture_output=True,
        timeout=timeout,
    )

    if result.stdout:
        print(result.stdout.strip())

    if result.stderr:
        print("[STDERR]", result.stderr.strip())

    if result.returncode != 0:
        raise RuntimeError(f"command failed returncode={result.returncode}: {' '.join(str(x) for x in cmd)}")

    return result


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--limit", type=int, default=100)
    parser.add_argument("--dry-run", action="store_true")
    args = parser.parse_args()

    if not ENSURE_MAPS.exists():
        raise FileNotFoundError(f"missing tool: {ENSURE_MAPS}")

    cmd = [
        sys.executable,
        str(ENSURE_MAPS),
        "--limit",
        str(args.limit),
    ]

    if args.dry_run:
        cmd.append("--dry-run")

    print("=" * 80)
    print("[PRE DRAFT GUARD START]")
    print("[STEP] ensure missing realtor map images")

    run_cmd(cmd, timeout=900)

    print("[PRE DRAFT GUARD DONE]")
    print("=" * 80)


if __name__ == "__main__":
    main()
