#!/usr/bin/env python3
"""
scripts/compare_daily_report_versions.py
─────────────────────────────────────────────────────────────────
Operation Ollama-First v5.0 / Phase 3 / A8 — 日報雙版本盲測腳本

用途：
    跑同一天的「舊版 Gemini 全文」vs「新版 Hermes 模板」
    輸出兩份檔案到 reports/，供統帥盲測選擇預設模式。

使用：
    python3 scripts/compare_daily_report_versions.py --date 2026-05-03
    python3 scripts/compare_daily_report_versions.py            # 預設昨日

紀律：
    - 不寫入 ai_insights（避免污染 production 資料）
    - 不發 Telegram（純 dry-run）
    - 兩版本皆獨立執行，互不干擾
    - 失敗時報錯但不刪舊檔
"""

import os
import sys
import argparse
from datetime import date, timedelta, datetime
from pathlib import Path

# 確保可 import 本專案 services
ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(ROOT))


def _ensure_reports_dir() -> Path:
    reports_dir = ROOT / 'reports'
    reports_dir.mkdir(exist_ok=True)
    return reports_dir


def _run_legacy(target_date: date) -> str:
    """跑舊版（_legacy_full_gemini_daily_report）"""
    os.environ['OPENCLAW_DAILY_HERMES_TEMPLATE'] = 'false'
    # 強制 reload module（避免 cache）
    import importlib
    import services.openclaw_strategist_service as svc
    importlib.reload(svc)
    print(f"[legacy] 開始跑 Gemini 全文版日報 target_date={target_date}")
    result = svc._legacy_full_gemini_daily_report()
    return result.get('content', '') or result.get('report_content', '') or str(result)


def _run_hermes_template(target_date: date) -> str:
    """跑新版（_generate_daily_report_hermes_template）"""
    os.environ['OPENCLAW_DAILY_HERMES_TEMPLATE'] = 'true'
    import importlib
    import services.openclaw_strategist_service as svc
    importlib.reload(svc)
    print(f"[hermes] 開始跑 Hermes 模板版日報 target_date={target_date}")
    result = svc._generate_daily_report_hermes_template()
    return result.get('content', '') or result.get('report_content', '') or str(result)


def main():
    parser = argparse.ArgumentParser(description='OpenClaw 日報雙版本盲測')
    parser.add_argument('--date', help='YYYY-MM-DD（預設昨日）')
    args = parser.parse_args()

    if args.date:
        target_date = datetime.strptime(args.date, '%Y-%m-%d').date()
    else:
        target_date = date.today() - timedelta(days=1)

    reports_dir = _ensure_reports_dir()
    date_tag = target_date.strftime('%Y%m%d')

    legacy_file = reports_dir / f'daily_report_legacy_{date_tag}.md'
    hermes_file = reports_dir / f'daily_report_v2_{date_tag}.md'

    # 跑舊版
    try:
        legacy_content = _run_legacy(target_date)
        legacy_file.write_text(legacy_content, encoding='utf-8')
        print(f"✅ legacy 版輸出：{legacy_file}")
    except Exception as e:
        print(f"❌ legacy 版失敗：{e}", file=sys.stderr)

    # 跑新版
    try:
        hermes_content = _run_hermes_template(target_date)
        hermes_file.write_text(hermes_content, encoding='utf-8')
        print(f"✅ hermes 模板版輸出：{hermes_file}")
    except Exception as e:
        print(f"❌ hermes 版失敗：{e}", file=sys.stderr)

    print(f"\n盲測檢查（建議）：")
    print(f"  diff <(head -50 {legacy_file}) <(head -50 {hermes_file})")
    print(f"  wc -w {legacy_file} {hermes_file}")
    print(f"  # 統帥盲測時可遮 caller 名稱避免偏見")


if __name__ == '__main__':
    main()
