# -*- coding: utf-8 -*-
"""
STEP106-09 V2 Draft Address Apply 테스트 도구

사용 예:
python tools/test_step106_09_v2_draft_address_apply.py --complex-name "산울6단지세종리첸시아파밀리에(주상복합)"

article 기준:
python tools/test_step106_09_v2_draft_address_apply.py --article-no 2632343296
"""

import argparse
import json
import sys
from pathlib import Path

PROJECT_ROOT = Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
    sys.path.insert(0, str(PROJECT_ROOT))

from services.v2_complex_address_enricher import get_db_conn_from_env, fetch_article_for_enrich_test
from services.v2_draft_address_apply import (
    apply_v2_address_to_article_context,
    build_v2_address_template_context,
    safe_json_loads,
)


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--article-no", default="")
    parser.add_argument("--draft-id", default="")
    parser.add_argument("--queue-id", default="")
    parser.add_argument("--complex-name", default="")
    parser.add_argument("--region", default="")
    parser.add_argument("--force-refresh", action="store_true")
    parser.add_argument("--headless", action="store_true")
    args = parser.parse_args()

    conn = get_db_conn_from_env()
    try:
        article = {}
        if args.article_no or args.draft_id or args.queue_id:
            article = fetch_article_for_enrich_test(conn, args.article_no, args.draft_id, args.queue_id) or {}

        if args.complex_name:
            article["complex_name"] = args.complex_name
        if args.region:
            article["region_name"] = args.region
        if args.article_no:
            article["article_no"] = args.article_no

        updated, result = apply_v2_address_to_article_context(
            conn,
            article,
            force_refresh=args.force_refresh,
            headless=args.headless,
        )

        out = {
            "address_ok": bool(result.get("ok")),
            "address_result": result,
            "template_context": build_v2_address_template_context(updated),
            "top_level": {
                "resolved_address": updated.get("resolved_address"),
                "jibun_address": updated.get("jibun_address"),
                "road_address": updated.get("road_address"),
                "school_names": updated.get("school_names"),
                "complex_no": updated.get("complex_no"),
                "address_source": updated.get("address_source"),
            },
            "source_json_v2_address": safe_json_loads(updated.get("source_json"), {}).get("v2_address"),
        }
        print(json.dumps(out, ensure_ascii=False, indent=2, default=str))
    finally:
        conn.close()


if __name__ == "__main__":
    main()
