#!/bin/bash # POTE Automated Weekly Run # This script should be run by cron weekly (e.g., Sunday at 8 AM) # # Example crontab entry: # 0 8 * * 0 /home/poteapp/pote/scripts/automated_weekly_run.sh >> /home/poteapp/logs/weekly_run.log 2>&1 set -e # Configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" LOG_DIR="${LOG_DIR:-$HOME/logs}" VENV_PATH="${VENV_PATH:-$PROJECT_ROOT/venv}" REPORT_RECIPIENTS="${REPORT_RECIPIENTS:-admin@localhost}" # Create log directory if it doesn't exist mkdir -p "$LOG_DIR" # Timestamp for logging TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') echo "===============================================" echo "POTE Automated Weekly Run - $TIMESTAMP" echo "===============================================" # Activate virtual environment if [ -d "$VENV_PATH" ]; then echo "Activating virtual environment..." source "$VENV_PATH/bin/activate" else echo "WARNING: Virtual environment not found at $VENV_PATH" fi # Change to project directory cd "$PROJECT_ROOT" # Load environment variables if [ -f ".env" ]; then echo "Loading environment variables from .env..." export $(grep -v '^#' .env | xargs) fi # Generate pattern report echo "" echo "[1/2] Generating pattern detection report..." if python scripts/generate_pattern_report.py --days 365 --min-score 40 --save "$LOG_DIR/pattern_report_$(date +%Y%m%d).txt"; then echo "✓ Pattern report generated" else echo "⚠ Warning: Pattern report generation failed" fi # Send weekly report echo "" echo "[2/2] Sending weekly summary report..." if python scripts/send_weekly_report.py --to "$REPORT_RECIPIENTS" --save-to-file "$LOG_DIR/weekly_report_$(date +%Y%m%d).txt"; then echo "✓ Weekly report sent successfully" else echo "✗ ERROR: Failed to send weekly report" exit 1 fi # Final summary echo "" echo "===============================================" echo "Weekly run completed successfully at $(date '+%Y-%m-%d %H:%M:%S')" echo "===============================================" # Clean up old weekly reports (keep last 90 days) find "$LOG_DIR" -name "weekly_report_*.txt" -mtime +90 -delete 2>/dev/null || true find "$LOG_DIR" -name "pattern_report_*.txt" -mtime +90 -delete 2>/dev/null || true exit 0