# -*- coding: utf-8 -*-
"""
STEP103-11 ResumeInspector Test

실행:
  cd /d D:/honghee/blog_api
  python -m tools.test_v2_resume_inspector --scheduler-key server_default

목적:
- blog_v2_scheduler_state + blog_v2_pipeline_timeline 기준으로
  재개 필요 여부를 확인한다.
"""

import argparse
import sys
from pathlib import Path

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

from db import get_conn
from services.v2.resume_inspector import ResumeInspector


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--scheduler-key", default="server_default")
    args = parser.parse_args()

    conn = get_conn()

    try:
        inspector = ResumeInspector(
            conn,
            scheduler_key=args.scheduler_key,
        )

        result = inspector.inspect()

        print("=" * 100)
        print("[STEP103-11 V2 RESUME INSPECTOR TEST]")
        print("scheduler_key:", result.scheduler_key)
        print("-" * 100)
        print("should_resume:", result.should_resume)
        print("reason:", result.reason)
        print("pipeline_id:", result.pipeline_id)
        print("realtor_id:", result.realtor_id)
        print("stage:", result.stage)
        print("article_no:", result.article_no)
        print("draft_id:", result.draft_id)
        print("publish_queue_id:", result.publish_queue_id)
        print("-" * 100)

        print("[LAST EVENT]")
        if result.last_event:
            for key in [
                "id",
                "pipeline_id",
                "stage",
                "event_type",
                "status",
                "success",
                "message",
                "created_at",
            ]:
                print(f"{key}: {result.last_event.get(key)}")
        else:
            print("(none)")

        print("-" * 100)
        print("[SCHEDULER STATE]")
        if result.scheduler_state:
            for key in [
                "scheduler_key",
                "run_date",
                "status",
                "cursor_realtor_id",
                "cursor_stage",
                "cursor_article_no",
                "processed_realtors",
                "success_count",
                "failed_count",
                "skipped_count",
                "last_message",
                "updated_at",
            ]:
                print(f"{key}: {result.scheduler_state.get(key)}")
        else:
            print("(none)")

        print("=" * 100)

    finally:
        conn.close()


if __name__ == "__main__":
    main()
