Pular para conteúdo

Troubleshooting

Soluções para problemas comuns no sistema VIG-IA.

Dashboard não inicia

# Ver logs detalhados
docker compose logs --tail=50 dnci-dashboard

# Verificar se a porta está em uso
ss -tlnp | grep 5000

Solução: Se a porta estiver em uso, altere DASHBOARD_PORT no .env e reinicie.

Container "unhealthy"

# Verificar saúde
docker compose ps

# Testar health check manualmente
curl -v http://localhost:5000/api/health

# Ver logs de health check
docker inspect --format='{{json .State.Health}}' dnci-dashboard | python -m json.tool

Causa comum: O health check tem timeout de 30s. Se o Uvicorn (single-worker) estiver ocupado com uma query longa, o check pode falhar temporariamente.

Erro de conexão com banco

# Testar conectividade do container
docker compose exec dnci-dashboard python -c "
from backend.database import get_connection
conn = get_connection()
print('DNCI OK')
conn.close()
"

# Verificar credenciais
docker compose exec dnci-dashboard env | grep DB

Soluções: - Verificar IPs dos bancos no .env - Confirmar que o firewall permite acesso às portas 5432 - Verificar que o usuário tem permissão de acesso

Watchdog parado

# Ver logs do watchdog
docker compose logs --tail=100 dnci-monitor-watchdog

# Reiniciar apenas o watchdog
docker compose restart dnci-monitor

Logs crescendo muito

Os logs são configurados com rotação automática (10MB, 3 arquivos). Se mesmo assim estiverem grandes:

# Ver uso de disco do Docker
docker system df

# Limpar logs antigos
docker system prune --volumes

# Limpar apenas os logs de um container
truncate -s 0 $(docker inspect --format='{{.LogPath}}' dnci-dashboard)

Erro de permissão nos volumes

# Verificar propriedade
ls -la logs/ data/

# Ajustar permissões
sudo chown -R 1000:1000 logs/ data/

Dashboard lento

Possíveis causas:

  1. Muitas queries simultâneas — O dashboard usa Uvicorn single-worker; queries longas bloqueiam outros requests
  2. Banco sobrecarregado — Verificar com docker stats e pg_stat_activity
  3. Rede lenta para DTW — O banco DTW pode estar em um servidor remoto
# Verificar uso de recursos
docker stats

# Ver queries ativas no PostgreSQL
docker compose exec dnci-dashboard python -c "
from backend.database import execute_query
rows = execute_query('SELECT pid, state, query FROM pg_stat_activity WHERE datname = current_database()')
for r in rows: print(r)
"

Erro de Conexão: "No route to host" para o DTW (172.20.52.206)

Sintoma: O watchdog ou dashboard loga: sqlalchemy.exc.OperationalError: connection to server at "172.20.52.206", port 5432 failed: No route to host

Causa: O Docker Desktop / WSL2 criou uma rede de bridge interna (ex: rede antiga ou órfã) na sub-rede 172.20.0.0/16. Isso faz com que o kernel tente rotear pacotes para a rede bridge do Docker em vez da interface de rede externa/VPN hospitalar.

Diagnóstico e Solução:

# 1. Inspecionar todas as redes Docker em busca do range 172.20.x.x
docker network inspect (docker network ls -q) | Select-String -Pattern "Subnet|Name"

# 2. Identificar a rede com subnet "172.20.0.0/16" (ex: postgres17_default)
# 3. Remover a rede conflitante
docker network rm <nome_da_rede_conflitante>

# 4. Reiniciar o container do monitor
docker restart dnci-monitor-watchdog

Erro de IA: "Error code: 404 - Model not found"

Sintoma: O watchdog exibe nos logs: ERROR - services.openai_service: Erro ao chamar OpenAI API: Error code: 404 - {'detail': "Model '...' not found. Use GET /v1/models to list available models."}

Causa: O modelo especificado em AI_GATEWAY_MODEL não existe no gateway hub.qi140.ai.

Solução: 1. Consulte os modelos válidos disponíveis no hub:

python -c "import urllib.request, json; req = urllib.request.Request('https://hub.qi140.ai/v1/models', headers={'Authorization': 'Bearer <SUA_CHAVE_AI_GATEWAY>'}); print(json.loads(urllib.request.urlopen(req).read().decode('utf-8')))"
2. No .env, configure um modelo aceito:
AI_GATEWAY_MODEL=Gemini 2.5 Flash Lite
3. Ou utilize a OpenAI oficial configurando:
LLM_PROVIDER=openai
OPENAI_MODEL=gpt-4o-mini
4. Reinicie os containers: docker compose up -d --force-recreate.