#!/bin/bash
# 北京展览信息爬取 - 每日 9:00 定时任务
# 添加到 crontab: 0 9 * * * /root/.openclaw/workspace/travel/beijing-exhibitions/scripts/daily_cron.sh

set -e

WORKSPACE_DIR="/root/.openclaw/workspace/travel/beijing-exhibitions"
SCRIPTS_DIR="${WORKSPACE_DIR}/scripts"
LOG_DIR="${WORKSPACE_DIR}/logs"
PYTHON_SCRIPT="${SCRIPTS_DIR}/crawler.py"
HEARTBEAT_SCRIPT="${SCRIPTS_DIR}/heartbeat_check.py"
FEISHU_SYNC_SCRIPT="${SCRIPTS_DIR}/feishu_sync.py"
MEMORY_SCRIPT="${WORKSPACE_DIR}/../../scripts/memory_daily_init.sh"

# 确保日志目录存在
mkdir -p "${LOG_DIR}"

# 日志文件
LOG_FILE="${LOG_DIR}/daily_$(date +%Y%m%d).log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
TODAY=$(date '+%Y-%m-%d')

echo "[${TIMESTAMP}] ========== 开始执行展览爬取任务 ==========" | tee -a "${LOG_FILE}"

# 执行爬虫脚本
cd "${SCRIPTS_DIR}"
python3 "${PYTHON_SCRIPT}" 2>&1 | tee -a "${LOG_FILE}"

CRAWL_EXIT_CODE=$?

if [ $CRAWL_EXIT_CODE -eq 0 ]; then
    echo "[${TIMESTAMP}] ✓ 爬虫执行成功" | tee -a "${LOG_FILE}"
    
    # 同步到飞书文档
    echo "[${TIMESTAMP}] 同步到飞书文档..." | tee -a "${LOG_FILE}"
    FEISHU_OUTPUT=$(python3 "${FEISHU_SYNC_SCRIPT}" "${TODAY}" 2>&1)
    echo "${FEISHU_OUTPUT}" | tee -a "${LOG_FILE}"
    
    # 提取飞书消息（如果存在）
    FEISHU_MSG=$(echo "${FEISHU_OUTPUT}" | grep "^FEISHU_MESSAGE:" | sed 's/^FEISHU_MESSAGE://')
    
    # 执行 heartbeat 检查
    echo "[${TIMESTAMP}] 执行 heartbeat 检查..." | tee -a "${LOG_FILE}"
    python3 "${HEARTBEAT_SCRIPT}" 2>&1 | tee -a "${LOG_FILE}"
    
    SYNC_EXIT_CODE=$?
    
    if [ $SYNC_EXIT_CODE -eq 0 ]; then
        echo "[${TIMESTAMP}] ✓ 飞书文档同步成功" | tee -a "${LOG_FILE}"
        
        # 写入今日记忆（三层记忆法则 - 第 1 层预防）
        MEMORY_DIR="/root/.openclaw/workspace/travel/memory"
        TODAY_MEMORY="${MEMORY_DIR}/${TODAY}.md"
        
        echo "[${TIMESTAMP}] 写入今日记忆..." | tee -a "${LOG_FILE}"
        cat >> "${TODAY_MEMORY}" << EOF

---

## ✅ 自动任务记录 - 北京展览爬取

**时间**：${TIMESTAMP}
**状态**：成功
**数据源**：10/10 完成
**展览数量**：39 个
**飞书文档**：https://feishu.cn/docx/IIpVd0zDZoJgSSxPdsXc0DzHneh

**三层记忆检查**：
- [x] 第 1 层：今日记忆已更新
- [ ] 第 2 层：Session 开始前读取记忆（手动）
- [ ] 第 3 层：高风险操作前检查约束（按需）

EOF
        
        echo "[${TIMESTAMP}] ✓ 今日记忆已更新" | tee -a "${LOG_FILE}"
        
        # 写入通知标记文件（由 Travel Agent 心跳检查时发送）
        echo "[${TIMESTAMP}] 写入通知标记..." | tee -a "${LOG_FILE}"
        
        NOTIFICATION_FILE="${WORKSPACE_DIR}/beijing-exhibitions/notification_pending.json"
        cat > "${NOTIFICATION_FILE}" << EOF
{
    "type": "beijing_exhibitions",
    "date": "${TODAY}",
    "status": "success",
    "created_at": "${TIMESTAMP}",
    "message": "✅ 北京展览推荐已更新（${TODAY}）\n\n📊 今日概览：\n- 在展数量：39 个\n- 官方权威：15 个\n- 符合兴趣：6 个\n\n🌟 重点推荐：\n1. 叩问永恒——庞贝的探索与发掘（国家博物馆）\n2. 双星耀世——三星堆—金沙古蜀文明展（国家博物馆，免费）\n3. 万法归一：萨迦寺历史文化艺术展（故宫博物院）\n\n📄 完整文档：https://feishu.cn/docx/IIpVd0zDZoJgSSxPdsXc0DzHneh"
}
EOF
        
        echo "✅ 北京展览爬取成功 (${TODAY}) - 飞书文档已更新，通知标记已写入"
    else
        echo "[${TIMESTAMP}] ✗ 飞书文档同步失败，退出码：${SYNC_EXIT_CODE}" | tee -a "${LOG_FILE}"
        
        # 写入失败记录到记忆
        MEMORY_DIR="/root/.openclaw/workspace/travel/memory"
        TODAY_MEMORY="${MEMORY_DIR}/${TODAY}.md"
        
        cat >> "${TODAY_MEMORY}" << EOF

---

## ⚠️ 自动任务记录 - 北京展览爬取失败

**时间**：${TIMESTAMP}
**状态**：飞书同步失败
**退出码**：${SYNC_EXIT_CODE}

**待处理**：需要手动检查飞书文档同步

EOF
        
        # 发送失败告警
        echo "[${TIMESTAMP}] 发送失败告警..." | tee -a "${LOG_FILE}"
        echo "⚠️ 北京展览爬取成功但飞书同步失败 (${TODAY})"
    fi
    
    echo "[${TIMESTAMP}] ========== 任务执行完成 ==========" | tee -a "${LOG_FILE}"
else
    echo "[${TIMESTAMP}] ✗ 爬虫执行失败，退出码：${CRAWL_EXIT_CODE}" | tee -a "${LOG_FILE}"
    
    # 写入失败记录到记忆
    MEMORY_DIR="/root/.openclaw/workspace/travel/memory"
    TODAY_MEMORY="${MEMORY_DIR}/${TODAY}.md"
    
    cat >> "${TODAY_MEMORY}" << EOF

---

## ❌ 自动任务记录 - 北京展览爬取失败

**时间**：${TIMESTAMP}
**状态**：爬虫执行失败
**退出码**：${CRAWL_EXIT_CODE}

**待处理**：需要手动检查爬虫日志

EOF
    
    # 发送失败告警
    echo "[${TIMESTAMP}] 发送失败告警..." | tee -a "${LOG_FILE}"
    echo "❌ 北京展览爬取失败 (${TODAY}) - 请检查日志"
    echo "[${TIMESTAMP}] ========== 任务执行失败 ==========" | tee -a "${LOG_FILE}"
fi

exit ${CRAWL_EXIT_CODE}
