#!/bin/bash

# Daily Billing Data Export and Analysis Script
# Exports last week's data and analyzes data from 2 days ago
# AWS and GCP are processed independently to prevent failures from blocking each other

# Get script directory
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# Activate Python virtual environment
if [ -f "${SCRIPT_DIR}/.venv/bin/activate" ]; then
    source "${SCRIPT_DIR}/.venv/bin/activate"
    echo "Python virtual environment activated"
else
    echo "Warning: Python virtual environment not found at ${SCRIPT_DIR}/.venv"
fi

# Analysis date for AWS/Alibaba (2 days ago)
ANALYSIS_DATE=$(date -v-2d +%Y-%m-%d 2>/dev/null || date -d '2 days ago' +%Y-%m-%d)

# TEMP: GCP Billing Export 目前存在 1 天左右滞后（例如 15 号只更新到 12 号），先将 GCP 分析日期调整为大前天（3 days ago）
# TODO: 等 GCP Billing Export 服务恢复后，将此处改回与其它云一致的 2 days ago
GCP_ANALYSIS_DATE=$(date -v-3d +%Y-%m-%d 2>/dev/null || date -d '3 days ago' +%Y-%m-%d)

echo "=========================================="
echo "Starting Daily Billing Sync - $(date)"
echo "Analysis Date: ${ANALYSIS_DATE}"
echo "GCP Analysis Date (TEMP): ${GCP_ANALYSIS_DATE}"
echo "=========================================="

# AWS Billing (in subshell to isolate failures)
(
    echo ""
    echo "Processing AWS Billing..."
    cd "${SCRIPT_DIR}"

    echo "- Exporting last week's data..."
    python -m aws.main_export --last-week --config aws/config_prod.json

    echo "- Analyzing ${ANALYSIS_DATE}..."
    python -m aws.main_analyze --date "${ANALYSIS_DATE}" --config aws/config_prod.json
    
    echo "AWS Billing Processing Complete"
) || echo "AWS Billing Processing Failed (exit code: $?)"

# GCP Billing (in subshell to isolate failures)
(
    echo ""
    echo "Processing GCP Billing..."
    cd "${SCRIPT_DIR}"

    echo "- Exporting last week's data..."
    python -m gcp.main_export --last-week --config gcp/config_prod.json

    echo "- Analyzing ${GCP_ANALYSIS_DATE} (TEMP: export lag workaround)..."
    python -m gcp.main_analyze --date "${GCP_ANALYSIS_DATE}" --config gcp/config_prod.json
    
    echo "GCP Billing Processing Complete"
) || echo "GCP Billing Processing Failed (exit code: $?)"

# Alibaba Cloud Billing (in subshell to isolate failures)
(
    echo ""
    echo "Processing Alibaba Cloud Billing..."
    cd "${SCRIPT_DIR}"

    echo "- Exporting last week's data..."
    python -m alibaba_cloud.main_export --last-week --config alibaba_cloud/config_prod.json

    echo "- Analyzing ${ANALYSIS_DATE}..."
    python -m alibaba_cloud.main_analyze --date "${ANALYSIS_DATE}" --config alibaba_cloud/config_prod.json
    
    echo "Alibaba Cloud Billing Processing Complete"
) || echo "Alibaba Cloud Billing Processing Failed (exit code: $?)"

echo ""
echo "=========================================="
echo "Daily Billing Sync Complete - $(date)"
echo "=========================================="
