caarleexx commited on
Commit
91f372d
Β·
verified Β·
1 Parent(s): bf8ea2a

Delete entrypoint (1).sh

Browse files
Files changed (1) hide show
  1. entrypoint (1).sh +0 -359
entrypoint (1).sh DELETED
@@ -1,359 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -e
4
-
5
- echo "╔════════════════════════════════════════════════════════════════════╗"
6
- echo "β•‘ ParaAi v5.0 - Sistema HΓ­brido (Flex/Batch/Gemini/OpenRouter) β•‘"
7
- echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
8
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸš€ Iniciando ParaAi v5.0..."
9
- echo ""
10
-
11
- # ============================================================================
12
- # VALIDAÇÃO DE AMBIENTE
13
- # ============================================================================
14
-
15
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ” Validando ambiente..."
16
-
17
- # GIT_TOKEN obrigatΓ³rio
18
- if [[ -z "${GIT_TOKEN}" ]]; then
19
- echo "❌ GIT_TOKEN não definido"
20
- exit 1
21
- fi
22
-
23
- # PROCESSING_MODE (padrΓ£o: flex)
24
- export PROCESSING_MODE="${PROCESSING_MODE:-flex}"
25
-
26
- # Valida modo
27
- if [[ ! "$PROCESSING_MODE" =~ ^(flex|batch|gemini|openrouter)$ ]]; then
28
- echo "❌ PROCESSING_MODE invÑlido: $PROCESSING_MODE"
29
- echo " Valores aceitos: flex, batch, gemini, openrouter"
30
- exit 1
31
- fi
32
-
33
- # Valida API Keys por modo
34
- if [[ "$PROCESSING_MODE" == "gemini" ]]; then
35
- if [[ -z "${GEMINI_API_KEY}" ]]; then
36
- echo "❌ GEMINI_API_KEY não definida (modo: gemini)"
37
- exit 1
38
- fi
39
-
40
- elif [[ "$PROCESSING_MODE" == "flex" ]] || [[ "$PROCESSING_MODE" == "batch" ]]; then
41
- if [[ -z "${GROQ_API_KEY}" ]]; then
42
- echo "❌ GROQ_API_KEY não definida (modo: $PROCESSING_MODE)"
43
- exit 1
44
- fi
45
-
46
- elif [[ "$PROCESSING_MODE" == "openrouter" ]]; then
47
- if [[ -z "${OPENROUTER_API_KEY}" ]]; then
48
- echo "❌ OPENROUTER_API_KEY não definida (modo: openrouter)"
49
- exit 1
50
- fi
51
- fi
52
-
53
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… ValidaΓ§Γ΅es concluΓ­das"
54
- echo ""
55
-
56
- # ============================================================================
57
- # CONFIGURAÇÃO GIT
58
- # ============================================================================
59
-
60
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ”§ Configurando Git..."
61
-
62
- git config --global user.email "paraai-worker@bot.com"
63
- git config --global user.name "ParaAi Worker v5.0"
64
- git config --global pull.rebase true
65
-
66
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… Git configurado"
67
-
68
- # ============================================================================
69
- # CRIAÇÃO DE DIRETΓ“RIOS
70
- # ============================================================================
71
-
72
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“ Criando diretΓ³rios..."
73
-
74
- mkdir -p trabalho/dados_llm
75
- mkdir -p trabalho/batches_temp
76
- mkdir -p repo_git_temp
77
-
78
- # Garante permissΓ΅es
79
- chmod -R 755 trabalho/ 2>/dev/null || true
80
- chmod -R 755 repo_git_temp/ 2>/dev/null || true
81
-
82
- # Limpa repo_git_temp se nΓ£o for repo vΓ‘lido
83
- if [ -d "repo_git_temp" ] && [ "$(ls -A repo_git_temp)" ]; then
84
- if [ ! -d "repo_git_temp/.git" ]; then
85
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ repo_git_temp não é repo vÑlido, limpando..."
86
- rm -rf repo_git_temp/* 2>/dev/null || true
87
- rm -rf repo_git_temp/.* 2>/dev/null || true
88
- fi
89
- fi
90
-
91
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… DiretΓ³rios criados"
92
- echo ""
93
-
94
- # ============================================================================
95
- # INFORMAÇÕES DA CONFIGURAÇÃO
96
- # ============================================================================
97
-
98
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
99
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“Š CONFIGURAÇÃO DO SISTEMA"
100
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
101
-
102
- # RepositΓ³rio
103
- export GITHUB_REPO="${GITHUB_REPO:-carlex22/ParaAi}"
104
- export GITHUB_BRANCH="${GITHUB_BRANCH:-main}"
105
-
106
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“¦ RepositΓ³rio: $GITHUB_REPO"
107
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🌿 Branch: $GITHUB_BRANCH"
108
-
109
- # Modo de processamento
110
- echo ""
111
-
112
- if [[ "$PROCESSING_MODE" == "flex" ]]; then
113
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚑ MODO: FLEX Processing"
114
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Tipo: SΓ­ncrono"
115
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Rate Limit: 500 req/min (10x on-demand)"
116
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ PreΓ§o: Pay-as-you-go"
117
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Workers: ${NUM_WORKERS:-30}"
118
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Ideal para: ProduΓ§Γ£o rΓ‘pida"
119
-
120
- elif [[ "$PROCESSING_MODE" == "batch" ]]; then
121
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“¦ MODO: BATCH API"
122
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Tipo: AssΓ­ncrono"
123
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Rate Limit: Sem limite"
124
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ PreΓ§o: 50% desconto πŸ’°"
125
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Completion Window: ${BATCH_COMPLETION_WINDOW:-24h}"
126
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Poll Interval: ${BATCH_POLL_INTERVAL:-30}s"
127
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Ideal para: Volume grande (>100k reqs)"
128
-
129
- elif [[ "$PROCESSING_MODE" == "gemini" ]]; then
130
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ€– MODO: GEMINI"
131
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Tipo: SΓ­ncrono"
132
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Rate Limit: 15 req/min"
133
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ PreΓ§o: GrΓ‘tis (free tier)"
134
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Workers: ${NUM_WORKERS:-10}"
135
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ πŸ”₯ ResiliΓͺncia: RetryDelay automΓ‘tico"
136
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Ideal para: Teste/desenvolvimento"
137
-
138
- elif [[ "$PROCESSING_MODE" == "openrouter" ]]; then
139
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🌐 MODO: OPENROUTER"
140
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Tipo: SΓ­ncrono"
141
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Rate Limit: 200 req/min (adaptativo)"
142
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ PreΓ§o: Varia por modelo"
143
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Workers: ${NUM_WORKERS:-20}"
144
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Modelos: 200+ disponΓ­veis"
145
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Ideal para: Qualidade e variedade"
146
- fi
147
-
148
- # Modelos
149
- echo ""
150
-
151
- if [[ "$PROCESSING_MODE" == "gemini" ]]; then
152
- export GEMINI_MODEL="${GEMINI_MODEL:-gemini-2.0-flash-exp}"
153
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🎯 Modelo: $GEMINI_MODEL"
154
-
155
- elif [[ "$PROCESSING_MODE" == "openrouter" ]]; then
156
- export OPENROUTER_MODEL="${OPENROUTER_MODEL:-openai/gpt-4o-mini}"
157
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🎯 Modelo: $OPENROUTER_MODEL"
158
- export OPENROUTER_SITE_URL="${OPENROUTER_SITE_URL:-https://github.com/caarleexx/ParaAi}"
159
- export OPENROUTER_SITE_NAME="${OPENROUTER_SITE_NAME:-ParaAi}"
160
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Site: $OPENROUTER_SITE_NAME"
161
-
162
- else
163
- export GROQ_MODEL="${GROQ_MODEL:-llama-3.3-70b-versatile}"
164
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🎯 Modelo: $GROQ_MODEL"
165
- fi
166
-
167
- # Chunks
168
- echo ""
169
- export REGISTROS_POR_CHUNK="${REGISTROS_POR_CHUNK:-100}"
170
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“¦ Registros por chunk: $REGISTROS_POR_CHUNK"
171
-
172
- # Retry (apenas para modos sΓ­ncronos)
173
- if [[ "$PROCESSING_MODE" != "batch" ]]; then
174
- export MAX_RETRIES="${MAX_RETRIES:-500000}"
175
- export REQUEST_TIMEOUT="${REQUEST_TIMEOUT:-30000}"
176
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ”„ Max retries: $MAX_RETRIES"
177
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⏱️ Timeout: ${REQUEST_TIMEOUT}s"
178
- fi
179
-
180
- # Batch especΓ­fico
181
- if [[ "$PROCESSING_MODE" == "batch" ]]; then
182
- export MAX_BATCH_SIZE="${MAX_BATCH_SIZE:-1000}"
183
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“¦ Max batch size: $MAX_BATCH_SIZE registros"
184
- fi
185
-
186
- # EstatΓ­sticas rastreadas
187
- echo ""
188
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“Š EstatΓ­sticas rastreadas:"
189
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Registros processados"
190
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Tokens consumidos"
191
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Retries 429 (Rate Limit)"
192
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Retries 498 (Capacity)"
193
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Retries 503 (Service Unavailable) πŸ†•"
194
-
195
- if [[ "$PROCESSING_MODE" == "gemini" ]]; then
196
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] β€’ Retries Quota (Gemini RetryDelay) πŸ†•"
197
- fi
198
-
199
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
200
- echo ""
201
-
202
- # ============================================================================
203
- # VALIDAÇÃO DE ARQUIVOS
204
- # ============================================================================
205
-
206
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ”Ž Verificando arquivos necessΓ‘rios..."
207
-
208
- REQUIRED_FILES=(
209
- "config.py"
210
- "worker_orquestrador_hybrid.py"
211
- "llm_worker_hybrid.py"
212
- "batch_client.py"
213
- "queue_manager.py"
214
- "git_manager.py"
215
- "result_collector.py"
216
- "app.py"
217
- )
218
-
219
- MISSING_FILES=()
220
- for file in "${REQUIRED_FILES[@]}"; do
221
- if [ ! -f "$file" ]; then
222
- MISSING_FILES+=("$file")
223
- fi
224
- done
225
-
226
- if [ ${#MISSING_FILES[@]} -gt 0 ]; then
227
- echo "❌ Arquivos ausentes:"
228
- for file in "${MISSING_FILES[@]}"; do
229
- echo " - $file"
230
- done
231
- exit 1
232
- fi
233
-
234
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… Todos os arquivos necessΓ‘rios presentes"
235
- echo ""
236
-
237
- # ============================================================================
238
- # TESTE DE IMPORTAÇÕES
239
- # ============================================================================
240
-
241
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ§ͺ Testando importaΓ§Γ΅es Python..."
242
-
243
- python3 << 'PYEOF'
244
- import sys
245
-
246
- try:
247
- from config import PROCESSING_MODE, validate_config
248
- print(f" βœ… config.py OK")
249
-
250
- validate_config()
251
- print(f" βœ… ConfiguraΓ§Γ£o validada")
252
- print(f" ℹ️ Modo: {PROCESSING_MODE.value}")
253
-
254
- except Exception as e:
255
- print(f" ❌ Erro: {e}")
256
- sys.exit(1)
257
- PYEOF
258
-
259
- if [ $? -ne 0 ]; then
260
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ Falha na validação de configuração"
261
- exit 1
262
- fi
263
-
264
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… ImportaΓ§Γ΅es OK"
265
- echo ""
266
-
267
- # ============================================================================
268
- # MENSAGEM DE BOAS-VINDAS v5.0
269
- # ============================================================================
270
-
271
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
272
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸŽ‰ NOVIDADES v5.0"
273
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
274
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✨ OpenRouter - 200+ modelos LLM"
275
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ”₯ ResiliΓͺncia Gemini com RetryDelay"
276
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ›‘οΈ Retry inteligente por tipo de erro"
277
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“Š EstatΓ­sticas aprimoradas"
278
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
279
- echo ""
280
-
281
- # ============================================================================
282
- # INICIAR WORKER ORQUESTRADOR
283
- # ============================================================================
284
-
285
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ€– Iniciando Worker Orquestrador..."
286
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
287
- echo ""
288
-
289
- # FunΓ§Γ£o para iniciar worker com retry
290
- start_worker() {
291
- local max_retries=3
292
- local retry=0
293
-
294
- while [ $retry -lt $max_retries ]; do
295
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ”„ Tentativa $((retry + 1))/$max_retries de iniciar worker..."
296
-
297
- python3 -u worker_orquestrador_hybrid.py &
298
- WORKER_PID=$!
299
-
300
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ℹ️ Worker PID: $WORKER_PID"
301
-
302
- # Aguarda 10s para verificar se iniciou
303
- sleep 10
304
-
305
- if kill -0 $WORKER_PID 2>/dev/null; then
306
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… Worker iniciado com sucesso!"
307
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“Š Monitorando PID: $WORKER_PID"
308
- return 0
309
- else
310
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ Worker falhou ao iniciar"
311
- retry=$((retry + 1))
312
-
313
- if [ $retry -lt $max_retries ]; then
314
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ—‘οΈ Limpando estado..."
315
-
316
- # Reseta repo git
317
- if [ -d "repo_git_temp/.git" ]; then
318
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ”„ Resetando repo Git..."
319
- (cd repo_git_temp && git reset --hard HEAD 2>/dev/null) || true
320
- else
321
- rm -rf repo_git_temp/* 2>/dev/null || true
322
- rm -rf repo_git_temp/.* 2>/dev/null || true
323
- fi
324
-
325
- sleep 3
326
- fi
327
- fi
328
- done
329
-
330
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ Worker não iniciou após $max_retries tentativas"
331
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ℹ️ Dashboard continuarΓ‘ disponΓ­vel (modo read-only)"
332
- return 1
333
- }
334
-
335
- start_worker
336
- sleep 3
337
- echo ""
338
-
339
- # ============================================================================
340
- # INICIAR DASHBOARD
341
- # ============================================================================
342
-
343
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🌐 Iniciando Dashboard FastAPI..."
344
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
345
- echo ""
346
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“Š Dashboard: http://0.0.0.0:7860"
347
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ“ˆ API Stats: http://0.0.0.0:7860/api/stats"
348
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] πŸ’š Health Check: http://0.0.0.0:7860/health"
349
- echo ""
350
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
351
- echo ""
352
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] βœ… Sistema v5.0 inicializado!"
353
- echo ""
354
-
355
- # ============================================================================
356
- # EXEC UVICORN
357
- # ============================================================================
358
-
359
- exec uvicorn app:app --host 0.0.0.0 --port 7860 --log-level info