#!/bin/bash
# 正义使命舆情简报 - 每日 08:00 定时任务
# 添加到 crontab: 0 8 * * * /home/admin/.openclaw/workspace/skills/justice-mission-briefing/scripts/daily_report.sh

set -e

LOG_FILE="/home/admin/.openclaw/workspace/reports/justice-mission/cron.log"
REPORTS_DIR="/home/admin/.openclaw/workspace/reports/justice-mission/briefings"
WORKSPACE="/home/admin/.openclaw/workspace"
TEMPLATE_FILE="/home/admin/.openclaw/workspace/skills/justice-mission-briefing/report_template.md"
SKILL_FILE="/home/admin/.openclaw/workspace/skills/justice-mission-briefing/SKILL.md"

# 目标用户
TARGET_USER="020251091339931228"
CHANNEL="dingtalk"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

log "========== 正义使命日报任务启动 =========="
log "读取规范：$SKILL_FILE"

# 检查是否已存在今日报告
TODAY=$(date +%Y-%m-%d)
MD_FILE="${REPORTS_DIR}/${TODAY}-美以伊冲突舆情简报.md"
DOCX_FILE="${REPORTS_DIR}/${TODAY}-美以伊冲突舆情简报.docx"

if [ -f "$DOCX_FILE" ]; then
    log "今日报告已存在：$DOCX_FILE"
else
    log "今日报告不存在，需要 AI 生成..."
    log "模板文件：$TEMPLATE_FILE"
    log "请确保 AI 已读取 SKILL.md 中的规范要求"
fi

# 报告结构检查函数
check_report_structure() {
    local file="$1"
    local errors=0
    
    log "检查报告结构..."
    
    # 检查第一章六小节
    local sections_ch1=(
        "（一）伊方动态"
        "（二）美以动态"
        "（三）各方受损情况"
        "（四）美以伊国民态度"
        "（五）相关国家反应"
        "（六）其他方面"
    )
    
    for section in "${sections_ch1[@]}"; do
        if ! grep -q "$section" "$file" 2>/dev/null; then
            log "❌ 第一章缺少：$section"
            errors=$((errors + 1))
        else
            log "✅ 第一章包含：$section"
        fi
    done
    
    # 检查第四章四类
    local sections_ch4=(
        "一、台岛及境外媒体观点"
        "二、大陆及港澳媒体观点"
        "三、两岸及境外学者政评员观点"
        "四、境内外网民观点"
    )
    
    for section in "${sections_ch4[@]}"; do
        if ! grep -q "$section" "$file" 2>/dev/null; then
            log "❌ 第四章缺少：$section"
            errors=$((errors + 1))
        else
            log "✅ 第四章包含：$section"
        fi
    done
    
    # 检查是否使用了禁止的媒体
    local banned_media=("大纪元" "美国之音" "VOA" "自由亚洲" "RFA")
    for media in "${banned_media[@]}"; do
        if grep -q "$media" "$file" 2>/dev/null; then
            log "⚠️  警告：检测到非官方媒体来源：$media"
        fi
    done
    
    # 检查角标
    if grep -q "①" "$file" 2>/dev/null; then
        log "✅ 包含角标标注"
    else
        log "⚠️  警告：未检测到角标标注"
    fi
    
    # 检查参考文献
    if grep -q "参考文献" "$file" 2>/dev/null; then
        log "✅ 包含参考文献章节"
    else
        log "❌ 缺少参考文献章节"
        errors=$((errors + 1))
    fi
    
    return $errors
}

# 发送报告
send_report() {
    if [ -f "$DOCX_FILE" ]; then
        log "发送报告给用户：$TARGET_USER"
        
        cd "$WORKSPACE"
        openclaw message send \
            --channel "$CHANNEL" \
            --target "$TARGET_USER" \
            --file "$DOCX_FILE" \
            --message "长官，

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

📄 报告编号：JM-${TODAY}-001
📊 采集时间：昨日 08:00 至今日 08:00
📝 报告字数：约 5000-6000 字
🔒 保密等级：内部参考

对您忠诚 📊"
        
        if [ $? -eq 0 ]; then
            log "✅ 报告已发送"
        else
            log "❌ 报告发送失败"
            return 1
        fi
    else
        log "❌ 错误：报告文件不存在 $DOCX_FILE"
        return 1
    fi
}

# 主流程
main() {
    # 检查报告是否存在
    if [ ! -f "$DOCX_FILE" ]; then
        log "⚠️  今日报告尚未生成，需要 AI 介入"
        log "AI 需要完成以下步骤："
        log "  1. 读取 SKILL.md 中的规范要求"
        log "  2. 读取 hourly 采集素材"
        log "  3. 使用 searxng 搜索最新信息"
        log "  4. 生成 Markdown 报告（严格按六小节结构）"
        log "  5. 转换为 Word 格式"
        log "  6. 调用本脚本发送"
        exit 1
    fi
    
    # 结构检查
    if check_report_structure "$MD_FILE"; then
        log "✅ 报告结构检查通过"
    else
        log "⚠️  报告结构存在问题，但仍尝试发送"
    fi
    
    # 发送报告
    send_report
    
    log "========== 任务完成 =========="
}

main
