153 lines
4.9 KiB
Bash
Executable File
153 lines
4.9 KiB
Bash
Executable File
#!/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 |