# -*- coding: utf-8 -*-
"""
V2-027 Run V2 Publish Once

역할:
- V2 Pipeline을 실제 발행 모드로 1회 실행한다.
- 기본 test_v2_runner는 dry-run 유지.
- 이 도구에서만 context.execute_publish=True를 넣는다.

실행:
  cd /d D:/honghee/blog_api
  python -m tools.run_v2_publish_once --realtor-id 1

주의:
- 실제 네이버 블로그 발행이 진행된다.
- 행복공인은 테스트 계정이므로 비공개 발행 정책/worker 설정을 확인한 뒤 실행한다.
"""

import argparse
import sys
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))

from services.v2.runner import build_default_manager, make_pipeline_id, print_v2_summary
from services.v2.pipeline_context import PipelineContext


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--realtor-id", type=int, required=True)
    parser.add_argument("--pipeline-id", default=None)
    parser.add_argument(
        "--yes",
        action="store_true",
        help="실제 발행 확인 프롬프트 없이 실행",
    )
    args = parser.parse_args()

    if not args.yes:
        print("=" * 80)
        print("[V2 REAL PUBLISH WARNING]")
        print("이 명령은 실제 네이버 블로그 발행을 수행합니다.")
        print("realtor_id:", args.realtor_id)
        print("=" * 80)
        confirm = input("계속 진행하려면 YES 를 입력하세요: ").strip()
        if confirm != "YES":
            print("취소되었습니다.")
            return

    context = PipelineContext(
        pipeline_id=args.pipeline_id or make_pipeline_id(args.realtor_id),
        realtor_id=int(args.realtor_id),
        version="v2",
    )

    # 실제 발행 스위치
    context.put("execute_publish", True)

    # Draft는 기본 1건만 생성
    context.put("draft_limit", 1)
    context.put("replenish_count", 1)

    manager = build_default_manager()
    manager.run(context)

    print_v2_summary(context)


if __name__ == "__main__":
    main()
