#!/bin/bash
# Rotina diária da camada de BI — encadeia, em ordem:
#   1. scraper.php       — captura matérias novas do sitemap em "Matérias Publicadas - Autor"
#   2. performance.php    — atualiza métricas do GA4 (últimos 3 dias) em "Métricas das Matérias"
#   3. bi_materias.php    — sincroniza DIM_MATERIAS/FATO_GA4_DIA a partir das duas acima
#                           e grava o resumo da execução em LOG_EXECUCAO
#
# Cada passo só roda se o anterior terminou com sucesso (exit code 0) — evita que
# bi_materias.php sincronize sobre dados que podem ter ficado incompletos por uma falha
# no scraper.php ou no performance.php.
#
# carga_performance.php NÃO faz parte desta rotina — é uma operação destrutiva e pontual
# (limpa e recarrega "Métricas das Matérias" do zero), só deve ser rodada manualmente,
# quando necessário. Ver Brain/.../06-Riscos-e-Pontos-de-Atencao.md.
#
# Uso (crontab, exemplo às 6h da manhã):
#   0 6 * * * /bin/bash /caminho/completo/para/scraper_materias_autor/rodar_diario.sh >> /caminho/completo/para/scraper_materias_autor/logs/cron.log 2>&1

set -u
cd "$(dirname "$0")" || exit 1

LOG_DIR="./logs"
mkdir -p "$LOG_DIR"
DATA_HOJE=$(date +%Y-%m-%d)

echo "=== $(date '+%Y-%m-%d %H:%M:%S') — Iniciando rotina diária ==="

echo "--- 1/3: scraper.php ---"
php scraper.php >> "$LOG_DIR/scraper_$DATA_HOJE.log" 2>&1
if [ $? -ne 0 ]; then
    echo "!!! scraper.php terminou com erro — abortando o restante da rotina (performance.php e bi_materias.php não vão rodar hoje)."
    exit 1
fi

echo "--- 2/3: performance.php ---"
php performance.php >> "$LOG_DIR/performance_$DATA_HOJE.log" 2>&1
if [ $? -ne 0 ]; then
    echo "!!! performance.php terminou com erro — abortando bi_materias.php (dados de métrica podem estar incompletos hoje)."
    exit 1
fi

echo "--- 3/3: bi_materias.php ---"
php bi_materias.php >> "$LOG_DIR/bi_materias_$DATA_HOJE.log" 2>&1
CODIGO_BI=$?

echo "=== $(date '+%Y-%m-%d %H:%M:%S') — Rotina diária concluída (bi_materias.php saiu com código $CODIGO_BI — ver LOG_EXECUCAO na planilha de BI para o resultado detalhado, mesmo em caso de falha parcial) ==="
