Pular para conteúdo

BravoCore — ambientes Coolify

API de RAG multi-tenant e agentes LGPD, usada pelo Adapter como backend de IA.

O suporte ao BravoCore cobre somente os ambientes gerenciados pelo Coolify: DEV, TEST, HOMOLOG e PROD. Cada ambiente tem backend, worker, agendador, banco e Redis próprios.

Ambientes e acesso

Ambiente API base Documentação da API
DEV https://api.dev.adapter.bravonix.ia.br Swagger UI
TEST https://api.test.adapter.bravonix.ia.br Swagger UI
HOMOLOG https://api.homolog.adapter.bravonix.ia.br Swagger UI
PROD https://api.prod.adapter.bravonix.ia.br Swagger UI

Consulte a página do Adapter para o papel de cada ambiente, branches, publicação e cuidados com os dados. O nome PROD não confirma que a virada do atendimento aos clientes tenha ocorrido.

BravoCore e Adapter são aplicações separadas

No domínio de API de cada ambiente, os caminhos /api, /admin e /static são encaminhados ao BravoCore. POST /v1/auth/login é o login do Adapter; POST /api/v1/auth/login/ é o do BravoCore.

Endpoints

Acrescente os caminhos abaixo à API base do ambiente escolhido. Os recursos disponíveis dependem da versão publicada; consulte o schema do próprio ambiente.

Recurso Caminho
Documentação interativa (Swagger UI) /api/docs/
ReDoc /api/redoc/
Schema OpenAPI /api/schema/
Health check /api/health/
Painel administrativo /administrator/

O admin não fica em /admin/

O prefixo /admin encaminha ao Django, mas a rota do painel é /administrator/.

Autenticação

JWT. Faça login para receber o par de tokens e envie o access no header Authorization das demais chamadas.

# Exemplo em DEV — use a API base do ambiente desejado
# 1. Login
curl -X POST https://api.dev.adapter.bravonix.ia.br/api/v1/auth/login/ \
  -H "Content-Type: application/json" \
  -d '{"username": "<usuario>", "password": "<senha>"}'

# 2. Usar o token
curl https://api.dev.adapter.bravonix.ia.br/api/v1/auth/me/ \
  -H "Authorization: Bearer <access_token>"

POST /api/v1/auth/refresh/ renova o token expirado; POST /api/v1/auth/logout/ invalida o refresh.

Onde estão as credenciais?

Usuários e senhas ficam com a equipe de desenvolvimento. Solicite acesso ao responsável pelo serviço.

O que a API oferece

Chat e conversas

Método Rota Para quê
POST /api/v1/chat/ Pergunta ao agente orquestrador (decide sozinho entre RAG, busca web ou resposta direta)
POST /api/v1/chat/stream/ Mesma coisa, com resposta em streaming
POST /api/v1/chat/temporary/ Conversa que não fica no histórico
GET /api/v1/conversations/ Lista conversas; /{id}/messages/ traz as mensagens
GET /api/v1/chat/orchestration/{message_id}/ Rastro de decisão do orquestrador para uma resposta (agentes acionados, documentos usados, tempo)

Base de conhecimento

Método Rota Para quê
GET POST /api/v1/knowledge-bases/ Lista e cria bases
POST /api/v1/knowledge-bases/{id}/upload_documents/ Envia PDFs para indexação
GET /api/v1/documents/ Documentos e status de processamento
POST /api/v1/documents/{id}/reprocess/ Reprocessa um documento

A ingestão é assíncrona: o upload responde na hora e o documento passa por extração, chunking e geração de embeddings em um worker dedicado. Acompanhe por processing_status no documento.

Agentes LGPD

Todos em POST /api/v1/agents/..., com resposta estruturada segundo um schema configurável por agente.

Agente Rota O que faz
Process Suggester process-suggester/ Sugere processos de tratamento de dados para uma área
Questionnaire Suggestions questionnaire-suggestions/ Gera questionários de conformidade
Juridical Analysis juridical-analysis/ Análise jurídica de um processo
DPO Insights dpo-insights/ Análise consolidada para o DPO
Risks Analysis risks-analysis/ Avaliação de riscos de privacidade
Checklist Effectiveness checklist-effectiveness/ Efetividade de checklists
LIA Analysis lia-analysis/ Análise de Legítimo Interesse
Hypothesis Justificator hypothesis-justificator/ Justifica a hipótese legal escolhida
Document Matcher document-matcher/ Relaciona documentos a processos
Process Import process-import/ Extrai processos de um PDF (ROPA, inventário, relatório)
Questionnaire Import questionnaire-import/ Extrai processos e preenche as 4 etapas do questionário LGPD

Os dois agentes de importação recebem multipart/form-data com o PDF em file e um JSON em payload com a estrutura organizacional. POST /api/v1/agents/feedback/ registra avaliações — respostas com nota ≥ 4 voltam como exemplo para execuções futuras do mesmo agente.

Multi-tenancy

Toda chamada de agente e de chat acontece no contexto de uma Company, e o usuário precisa estar vinculado a uma. Sem esse vínculo, os endpoints de agente respondem 404 com "Usuário não está associado a nenhuma empresa".

Cada Company tem sua base de conhecimento padrão, limites de chamadas de API e de armazenamento, e contagem de consumo. GET /api/v1/auth/my-companies/ lista as empresas do usuário autenticado; GET /api/v1/auth/companies/{id}/stats/ mostra o consumo.

Modelos e provedores

Os modelos de chat, embeddings e reranking dependem da configuração de cada ambiente. Confira os provedores e modelos ativos antes de executar uma análise. Não presuma que o processamento fique na infraestrutura Bravonix quando houver um provedor externo configurado.

Arquitetura

flowchart LR
    A["Adapter ou cliente da API"]
    subgraph AMB["Ambiente Coolify — DEV, HOMOLOG ou PROD"]
        B["Backend BravoCore<br>Django + Gunicorn"]
        C["Worker Celery<br>agentes e ingestão"]
        E["Agendador Celery beat"]
        F[("PostgreSQL + pgvector")]
        G[("Redis")]
    end
    H["Langfuse compartilhado<br>projeto por ambiente"]
    I["Provedor de modelo<br>configurado no ambiente"]
    A -->|HTTPS| B
    B --> F
    B -->|enfileira| G
    E --> G
    G --> C
    C --> F
    B --> I
    C --> I
    B -.->|traces| H
    C -.->|traces| H

O worker processa as tarefas em segundo plano; o agendador dispara tarefas periódicas. A configuração de um recurso no Coolify não é herdada pelos outros.

Observabilidade

Os quatro ambientes usam langfuse-2608.bravonix.ia.br, com projetos DEV, HOMOLOG e PROD. TEST herda a configuração de DEV, sem projeto exclusivo. O Langfuse é um serviço compartilhado de apoio aos ambientes; ele roda fora do Coolify.

Backend e worker precisam das configurações de envio próprias. Em PROD, mantenha o mascaramento de dados pessoais ligado nos dois. Veja configuração e validação do Langfuse.

Troubleshooting

Sintoma Causa provável Ação
401 Unauthorized Token ausente, expirado, inválido ou login na aplicação errada Conferir a API base e refazer o login do BravoCore
404 em /admin/ Rota errada Usar /administrator/
Documento fica em processamento Worker indisponível, tarefa pendente ou falha de ingestão Conferir o status do documento e o worker do ambiente
404 "Usuário não está associado a nenhuma empresa" Usuário sem vínculo com uma Company Vincular o usuário à empresa correta
Resposta sem contexto da empresa Base vazia ou documento não indexado Conferir indexação e base selecionada
Análise termina, mas não aparece no Langfuse Worker sem configuração de envio Conferir as variáveis no worker e o projeto de destino
502 logo após uma atualização Backend iniciando Conferir os logs e a conclusão do deploy no Coolify