#!/bin/bash # 每周数据分析脚本 # 每周一09:00执行,生成周报并发送到QQBot echo "============================================================" echo "📊 小红书数据周报分析" echo "============================================================" echo "执行时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" WORK_DIR="/home/ubuntu/.nanobot/workspace/skills/xiaohongshu_integration" cd "$WORK_DIR" || exit 1 # 日志文件 LOG_DIR="/home/ubuntu/.nanobot/workspace/xiaohongshu_logs" mkdir -p "$LOG_DIR" LOG_FILE="$LOG_DIR/weekly_analysis_$(date '+%Y%m%d_%H%M%S').log" log() { local timestamp=$(date '+%Y-%m-%d %H:%M:%S') local message="[$timestamp] $1" echo "$message" echo "$message" >> "$LOG_FILE" } log "开始每周数据分析" # 1. 生成周报 log "1. 生成7天数据周报..." WEEKLY_REPORT=$(python3 data_analyzer.py report --days 7 2>&1) REPORT_EXIT_CODE=$? if [ $REPORT_EXIT_CODE -eq 0 ]; then log "✅ 周报生成成功" # 保存周报到文件 REPORT_FILE="$LOG_DIR/weekly_report_$(date '+%Y%m%d').txt" echo "$WEEKLY_REPORT" > "$REPORT_FILE" log "周报已保存: $REPORT_FILE" # 2. 发送周报到QQBot log "2. 发送周报到QQBot..." python3 qqbot_integration.py report "$REPORT_FILE" >> "$LOG_FILE" 2>&1 QQ_REPORT_EXIT_CODE=$? if [ $QQ_REPORT_EXIT_CODE -eq 0 ]; then log "✅ 周报已发送到QQBot" else log "⚠️ 发送周报到QQBot失败" fi else log "❌ 周报生成失败" echo "$WEEKLY_REPORT" >> "$LOG_FILE" fi # 3. 生成月报(每月第一天) DAY_OF_MONTH=$(date '+%d') if [ "$DAY_OF_MONTH" = "01" ]; then log "3. 生成30天数据月报..." MONTHLY_REPORT=$(python3 data_analyzer.py report --days 30 2>&1) if [ $? -eq 0 ]; then MONTHLY_FILE="$LOG_DIR/monthly_report_$(date '+%Y%m').txt" echo "$MONTHLY_REPORT" > "$MONTHLY_FILE" log "✅ 月报已保存: $MONTHLY_FILE" # 发送月报到QQBot log "发送月报到QQBot..." python3 qqbot_integration.py report "$MONTHLY_FILE" >> "$LOG_FILE" 2>&1 else log "❌ 月报生成失败" fi else log "3. 跳过月报生成(非每月第一天)" fi # 4. 检查A/B测试待处理数据 log "4. 检查A/B测试待处理数据..." PENDING_TESTS=$(python3 image_ab_test.py check 2>&1) if echo "$PENDING_TESTS" | grep -q "待检查"; then log "⚠️ 发现待处理的A/B测试" echo "$PENDING_TESTS" >> "$LOG_FILE" # 发送提醒 ALERT_MESSAGE="发现待处理的A/B测试数据,需要手动检查互动效果" python3 -c " import sys sys.path.append('.') from qqbot_integration import QQBotIntegration qqbot = QQBotIntegration() qqbot.send_cookie_alert('DAILY_REPORT', '$ALERT_MESSAGE', { '检查时间': '$(date '+%Y-%m-%d %H:%M:%S')', '提醒类型': 'A/B测试数据待处理', '建议': '运行: python3 image_ab_test.py check' }) " >> "$LOG_FILE" 2>&1 else log "✅ 无待处理的A/B测试" fi # 5. 生成A/B测试报告 log "5. 生成A/B测试报告..." AB_TEST_REPORT=$(python3 image_ab_test.py report --days 7 2>&1) if [ $? -eq 0 ]; then AB_TEST_FILE="$LOG_DIR/ab_test_report_$(date '+%Y%m%d').txt" echo "$AB_TEST_REPORT" > "$AB_TEST_FILE" log "✅ A/B测试报告已保存: $AB_TEST_FILE" # 如果数据足够,发送简要报告 if echo "$AB_TEST_REPORT" | grep -q "测试数" && echo "$AB_TEST_REPORT" | grep -q "测试数: [0-9]" && [ $(echo "$AB_TEST_REPORT" | grep -o "测试数: [0-9]*" | grep -o "[0-9]*") -gt 5 ]; then BRIEF_REPORT="📊 A/B测试周报摘要\n" BRIEF_REPORT+=$(echo "$AB_TEST_REPORT" | grep -A5 "推荐风格" | head -10) python3 -c " import sys sys.path.append('.') from qqbot_integration import QQBotIntegration qqbot = QQBotIntegration() qqbot.send_cookie_alert('DAILY_REPORT', '$BRIEF_REPORT', { '报告类型': 'A/B测试周报', '数据周期': '7天' }) " >> "$LOG_FILE" 2>&1 fi else log "⚠️ A/B测试报告生成失败" fi # 6. 清理旧数据 log "6. 清理旧数据..." find "$LOG_DIR" -name "*.log" -type f -mtime +90 -delete 2>/dev/null || true find "$LOG_DIR" -name "weekly_report_*.txt" -type f -mtime +30 -delete 2>/dev/null || true find "$LOG_DIR" -name "monthly_report_*.txt" -type f -mtime +180 -delete 2>/dev/null || true find "/home/ubuntu/.nanobot/workspace/xiaohongshu_analysis" -name "*.png" -type f -mtime +30 -delete 2>/dev/null || true log "旧数据清理完成" echo "" echo "============================================================" echo "🎯 每周数据分析完成" echo "============================================================" echo "日志文件: $LOG_FILE" echo "周报文件: $REPORT_FILE" if [ "$DAY_OF_MONTH" = "01" ]; then echo "月报文件: $MONTHLY_FILE" fi echo "A/B测试报告: $AB_TEST_FILE" echo "下次执行: 下周一09:00" echo "============================================================" exit 0