# -*- coding: utf-8 -*-
"""
STEP106-08 V2 주소 보강 테스트 도구

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

실제 article 기준:
python tools/test_step106_06_v2_address_enricher.py --article-no 2632343296 --force-refresh
"""

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_project_db_config,
    get_db_conn_from_env,
    fetch_article_for_enrich_test,
    resolve_and_cache_complex_address_v2,
)


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()

    cfg = get_project_db_config()
    print("[V2 ADDRESS ENRICHER DB]", {
        "host": cfg.get("host"),
        "port": cfg.get("port"),
        "user": cfg.get("user"),
        "database": cfg.get("database"),
        "charset": cfg.get("charset"),
        "password": "***" if cfg.get("password") else "",
    })

    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

        out = resolve_and_cache_complex_address_v2(
            conn,
            article,
            force_refresh=args.force_refresh,
            headless=args.headless,
        )
        print(json.dumps(out, ensure_ascii=False, indent=2, default=str))
    finally:
        conn.close()


if __name__ == "__main__":
    main()
