#!/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}"
    
    # 执行 heartbeat 检查
    echo "[${TIMESTAMP}] 执行 heartbeat 检查..." | tee -a "${LOG_FILE}"
    python3 "${HEARTBEAT_SCRIPT}" 2>&1 | tee -a "${LOG_FILE}"
    
    # 同步到飞书文档
    echo "[${TIMESTAMP}] 同步到飞书文档..." | tee -a "${LOG_FILE}"
    python3 "${FEISHU_SYNC_SCRIPT}" "${TODAY}" 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}"
        
        # 发送成功通知
        echo "[${TIMESTAMP}] 发送成功通知..." | tee -a "${LOG_FILE}"
        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}
