File size: 4,998 Bytes
b3b94f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# ============================================================================
# Docker Entrypoint - para.AI API v3.0
# Inicializa PostgreSQL local + API FastAPI
# ============================================================================

set -e

echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "β•‘                  para.AI API v3.0                            β•‘"
echo "β•‘          AnΓ‘lise Jurisprudencial com IA                      β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""

# ============================================================================
# FASE 1: VERIFICAR AMBIENTE
# ============================================================================
echo "πŸ” Verificando ambiente..."

# Mostrar informaΓ§Γ΅es do sistema
echo "   Python: $(python --version)"
echo "   PostgreSQL: $(su - postgres -c 'psql --version' | head -1)"
echo "   DiretΓ³rio: $(pwd)"
echo ""

# ============================================================================
# FASE 2: INICIALIZAR POSTGRESQL
# ============================================================================
echo "🐘 Inicializando PostgreSQL local..."
/init-postgres.sh

# Verificar se PostgreSQL estΓ‘ rodando
if ! pg_isready -h localhost -p 5432 &> /dev/null; then
    echo "❌ PostgreSQL não estÑ rodando!"
    exit 1
fi

echo "βœ… PostgreSQL OK"
echo ""

# ============================================================================
# FASE 3: CONFIGURAR VARIÁVEIS DE AMBIENTE
# ============================================================================
echo "βš™οΈ  Configurando variΓ‘veis de ambiente..."

# Se DATABASE_URL nΓ£o foi fornecida, usar a local
if [ -z "$DATABASE_URL" ] || [ "$DATABASE_URL" = "postgresql://para_ai:para_ai_temp@localhost:5432/para_ai" ]; then
    export DATABASE_URL="postgresql://${POSTGRES_USER:-para_ai}:${POSTGRES_PASSWORD:-para_ai_temp}@localhost:5432/${POSTGRES_DB:-para_ai}"
    echo "   DATABASE_URL configurada para PostgreSQL local"
fi

# ConfiguraΓ§Γ΅es padrΓ£o para HF Spaces
export APP_ENV="${APP_ENV:-production}"
export DEBUG="${DEBUG:-false}"
export HOST="${HOST:-0.0.0.0}"
export PORT="${PORT:-7860}"

echo "   APP_ENV: $APP_ENV"
echo "   PORT: $PORT"
echo "   DATABASE: PostgreSQL local"
echo ""

# ============================================================================
# FASE 4: TESTAR CONEXÃO COM BANCO
# ============================================================================
echo "πŸ”— Testando conexΓ£o com banco de dados..."

python3 << 'PYTHON_TEST'
import sys
from api.config import get_settings

try:
    settings = get_settings()
    print(f"   βœ… ConfiguraΓ§Γ΅es carregadas")
    print(f"   βœ… Environment: {settings.APP_ENV}")
    print(f"   βœ… Database URL configurada")
except Exception as e:
    print(f"   ❌ Erro ao carregar configuraçáes: {e}")
    sys.exit(1)

# Testar conexΓ£o com DB
try:
    from database.db_manager import get_db_manager
    db = get_db_manager()
    if db.health_check():
        print(f"   βœ… ConexΓ£o com PostgreSQL OK")
    else:
        print(f"   ❌ Falha no health check do DB")
        sys.exit(1)
except Exception as e:
    print(f"   ❌ Erro ao conectar com DB: {e}")
    sys.exit(1)
PYTHON_TEST

if [ $? -ne 0 ]; then
    echo "❌ Falha ao testar conexão com banco!"
    exit 1
fi

echo ""

# ============================================================================
# FASE 5: INICIALIZAR API
# ============================================================================
echo "πŸš€ Iniciando API FastAPI..."
echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "β•‘                     API ONLINE                               β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""
echo "πŸ“ Endpoints disponΓ­veis:"
echo "   β€’ DocumentaΓ§Γ£o: http://localhost:$PORT/api/docs"
echo "   β€’ Health Check: http://localhost:$PORT/api/v1/health"
echo "   β€’ Upload: http://localhost:$PORT/api/v1/process/upload"
echo ""
echo "πŸ’‘ PostgreSQL rodando localmente (temporΓ‘rio)"
echo "⚠️  ATENÇÃO: Dados sΓ£o perdidos ao reiniciar o container!"
echo ""
echo "πŸ”§ Para banco persistente, configure DATABASE_URL nas Secrets"
echo "   Recomendado: Neon (https://neon.tech) ou Supabase"
echo ""
echo "=================================================="
echo ""

# Executar comando passado (geralmente uvicorn)
exec "$@"