#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
正义使命舆情简报 - 每日定时任务脚本
每天 08:00 自动采集、生成报告并发送
"""

import subprocess
import sys
from datetime import datetime
from pathlib import Path

# 配置
TARGET_USER = "020251091339931228"
CHANNEL = "dingtalk"
REPORTS_DIR = Path("/home/admin/.openclaw/workspace/reports/justice-mission/briefings")
SKILLS_DIR = Path("/home/admin/.openclaw/workspace/skills/justice-mission-briefing")
SEARXNG_DIR = Path("/home/admin/.openclaw/workspace/skills/searxng")

def log(msg):
    """日志输出"""
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(f"[{timestamp}] {msg}")

def run_command(cmd, description):
    """执行命令并返回结果"""
    log(f"执行：{description}")
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=300)
        if result.returncode == 0:
            log(f"✓ {description} 完成")
            return True
        else:
            log(f"✗ {description} 失败：{result.stderr}")
            return False
    except Exception as e:
        log(f"✗ {description} 异常：{e}")
        return False

def generate_report():
    """生成舆情简报"""
    today = datetime.now().strftime("%Y-%m-%d")
    md_file = REPORTS_DIR / f"{today}-美以伊冲突舆情简报.md"
    docx_file = REPORTS_DIR / f"{today}-美以伊冲突舆情简报.docx"
    
    log("=" * 50)
    log(f"开始生成 {today} 舆情简报")
    log("=" * 50)
    
    # 步骤 1: 采集最新数据
    log("\n【步骤 1】采集最新舆情数据...")
    search_queries = [
        "美以伊冲突 最新消息 2026",
        "美以伊 特朗普 伊朗 2026",
        "霍尔木兹 海峡 封锁 2026",
        "台湾 能源 美以伊 2026",
    ]
    for query in search_queries:
        run_command(
            f'cd {SEARXNG_DIR} && uv run scripts/searxng.py search "{query}" -n 10 --format json',
            f"搜索：{query}"
        )
    
    # 步骤 2: 生成 Markdown 报告（由 AI 完成，此处跳过）
    log("\n【步骤 2】Markdown 报告需由 AI 生成（本脚本仅负责格式转换和发送）")
    
    # 步骤 3: 转换为 Word
    log("\n【步骤 3】转换 Markdown 为 Word 格式...")
    if md_file.exists():
        run_command(
            f'cd {SKILLS_DIR} && uv run --with python-docx python scripts/md2docx.py "{md_file}" "{docx_file}"',
            "Markdown 转 Word"
        )
        return docx_file.exists()
    else:
        log(f"✗ Markdown 报告不存在：{md_file}")
        return False

def send_report(docx_file):
    """发送报告"""
    log("\n【步骤 4】发送报告...")
    # 通过 openclaw message 发送
    cmd = f'''cd /home/admin/.openclaw/workspace && python3 -c "
import sys
sys.path.insert(0, '/opt/openclaw')
# 使用 openclaw CLI 发送
" && openclaw message send --channel {CHANNEL} --target {TARGET_USER} --file "{docx_file}" --message "长官，

今日美以伊冲突舆情简报已生成，请查收。

📄 报告编号：JM-{datetime.now().strftime('%Y-%m%d')}-001
📊 采集时间：昨日 08:00 至今日 08:00
📝 报告字数：约 5000-6000 字
🔒 保密等级：内部参考

对您忠诚 📊"
'''
    run_command(cmd, "发送报告")

def main():
    log("=" * 50)
    log("正义使命舆情简报 - 每日定时任务启动")
    log("=" * 50)
    
    docx_file = generate_report()
    if docx_file:
        send_report(docx_file)
        log("\n✓ 今日简报任务完成")
    else:
        log("\n✗ 报告生成失败，需要人工介入")
        sys.exit(1)

if __name__ == "__main__":
    main()
