-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-entry-script.sh
More file actions
executable file
·153 lines (127 loc) · 4.83 KB
/
Copy pathdocker-entry-script.sh
File metadata and controls
executable file
·153 lines (127 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/bin/bash
export TZ="America/Rio_Branco"
# --- Configurações DENTRO DO CONTAINER ---
PYTHON_EXEC="/usr/bin/python3"
SCRIPT="/home/kasm-user/.autoreg/autoreg.py"
PROJECT_DIR="$(dirname "$SCRIPT")"
# --- Configurações de Log ---
LOG_FILE="/tmp/cron_execution_log.txt"
# --- Configurações de Diretórios ---
RELATORIODIR="/home/kasm-user/Autoreg-web"
WORKDIR="/home/kasm-user/AutoReg"
RELATORIO_CSV="$RELATORIODIR/relatorio.csv"
RESUMO_FILE="$WORKDIR/resumo_execucao.txt"
USUARIO="michel"
# --- Limpar Log e Resumo da Execução Anterior ---
echo "--- Início da Execução Automatizada (Dentro do Container): $(date) ---" > $LOG_FILE
echo "" >> $LOG_FILE
mkdir -p "$WORKDIR"
> "$RESUMO_FILE"
# ----------------------------------------
# Função para Executar e Capturar Log
# ----------------------------------------
execute_and_log() {
local etapa=$1
echo "## Etapa: -$etapa (Início em $(date))" >> $LOG_FILE
# Executa o script e redireciona a saída para um arquivo temporário
$PYTHON_EXEC $SCRIPT -$etapa 2>&1 | tee /tmp/temp_output_$etapa.txt
# Captura o exit code do PYTHON_EXEC (primeiro comando do pipe), não do 'tee'
local exit_code=${PIPESTATUS[0]}
# Mantém as últimas 10 linhas no log técnico local (depuração)
echo "--- Últimas 10 Linhas de Log da Etapa -$etapa ---" >> $LOG_FILE
tail -n 10 /tmp/temp_output_$etapa.txt >> $LOG_FILE
echo "----------------------------------------------------" >> $LOG_FILE
echo "" >> $LOG_FILE
rm /tmp/temp_output_$etapa.txt
if [ $exit_code -ne 0 ]; then
echo "ERRO: O script -$etapa falhou (exit code $exit_code)! Abortando." >> $LOG_FILE
return 1
fi
return 0
}
# ----------------------------------------
# Função para Gravar no Relatório CSV
# ----------------------------------------
gravar_relatorio() {
local rotina=$1
local arquivo_csv=$2
# Verifica se o diretório existe, se não, cria
mkdir -p "$RELATORIODIR"
# Verifica se o arquivo CSV existe
if [ ! -f "$arquivo_csv" ]; then
echo "AVISO: Arquivo $arquivo_csv não encontrado. Registros = 0" >> $LOG_FILE
local registros=0
else
# Conta o número de registros (linhas não vazias, excluindo cabeçalho se houver)
local registros=$(tail -n +2 "$arquivo_csv" 2>/dev/null | grep -v '^$' | wc -l)
# Se não tiver cabeçalho ou se o arquivo tiver apenas cabeçalho, conta todas as linhas não vazias
if [ "$registros" -eq 0 ]; then
registros=$(grep -v '^$' "$arquivo_csv" 2>/dev/null | wc -l)
fi
fi
# Obtém data e hora atual
local data=$(date +"%Y-%m-%d")
local hora=$(date +"%H:%M:%S")
# Verifica se o arquivo de relatório existe, se não, cria com cabeçalho
if [ ! -f "$RELATORIO_CSV" ]; then
echo "data,hora,rotina,usuario,registros" > "$RELATORIO_CSV"
fi
# Adiciona a linha ao relatório
echo "$data,$hora,$rotina,$USUARIO,$registros" >> "$RELATORIO_CSV"
echo "Relatório gravado: $rotina - $registros registros" >> $LOG_FILE
}
# ----------------------------------------
# Função para Enviar o Resumo Consolidado via WhatsApp
# ----------------------------------------
# O resumo (o que foi feito / não feito / erros, por módulo) é montado e
# acumulado em $RESUMO_FILE pelo próprio autoreg.py durante -interna, -alta
# e -solicita-auto (ver autoreg/relatorio_execucao.py). Esta função só
# dispara o envio final, lendo as credenciais de config.ini [EVOLUTION-API]
# (sem hardcode de URL/chave/número).
send_resumo_whatsapp() {
echo "Enviando resumo consolidado via WhatsApp..." >> $LOG_FILE
(cd "$PROJECT_DIR" && $PYTHON_EXEC -m autoreg.relatorio_execucao) >> $LOG_FILE 2>&1
}
# ----------------------------------------
# 1. Executar: -interna
# ----------------------------------------
execute_and_log "interna"
if [ $? -ne 0 ]; then
send_resumo_whatsapp
exit 1
fi
# ----------------------------------------
# 2. Executar: -aihs
# ----------------------------------------
execute_and_log "aihs"
if [ $? -ne 0 ]; then
send_resumo_whatsapp
exit 1
fi
# ----------------------------------------
# 3. Executar: -solicita-auto
# ----------------------------------------
execute_and_log "solicita-auto"
if [ $? -ne 0 ]; then
send_resumo_whatsapp
exit 1
fi
# ----------------------------------------
# 4. Executar: -alta
# ----------------------------------------
execute_and_log "alta"
if [ $? -ne 0 ]; then
send_resumo_whatsapp
exit 1
fi
# Contar registros em pacientes_de_alta.csv e gravar no relatório
gravar_relatorio "Altas" "$WORKDIR/pacientes_de_alta.csv"
# --- Fim da Execução ---
echo "--- Fim da Execução Automatizada: $(date) ---" >> $LOG_FILE
echo "" >> $LOG_FILE
# ----------------------------------------
# Enviar o Resumo Final
# ----------------------------------------
send_resumo_whatsapp
# Fim do Script
exit 0