Esta página explica o que são os três ambientes do Adapter, por que eles existem separados e o que muda de um para o outro. Não contém credenciais.
Um ambiente é uma cópia completa e independente do sistema: tem os próprios servidores, o próprio banco de dados e o próprio endereço na internet. Desde agosto de 2026 o Adapter tem três — desenvolvimento, homologação e produção —, todos governados por um único painel de implantação, numa rede privada em São Paulo.
A ideia é a mesma de uma peça de teatro: o ensaio (dev) pode errar à vontade, o ensaio geral (homologação) tem figurino e plateia convidada, e a estreia (produção) é para o público pagante. O texto é o mesmo; o que muda é o custo do erro.
1. Os três ambientes
Cada ambiente tem um par de endereços: um para a interface que a pessoa usa, outro para a API que a interface consulta.
| Ambiente | Endereços | Para que serve | Tem dado real? |
|---|---|---|---|
| Desenvolvimento | dev.adapter.bravonix.ia.brapi.dev.adapter.bravonix.ia.br | Integração contínua do time. Nasceu vazio. | Não |
| Homologação | homolog.adapter.bravonix.ia.brapi.homolog.adapter.bravonix.ia.br | Validação antes de produção. | Sim |
| Produção (nova) | prod.adapter.bravonix.ia.brapi.prod.adapter.bravonix.ia.br | Ambiente-alvo, rodando em paralelo com a produção atual. | Sim (cópia) |
adapter.lgpdnow.com.br, com API em adapter.bravonix.api.br, na infraestrutura anterior. O endereço prod.adapter.bravonix.ia.br roda com uma cópia dos dados e existe para validação. Os dois convivem até a virada de DNS ser autorizada. Não mande cliente para o endereço novo.
bravonix.ia.br. A produção fica em lgpdnow.com.br porque é o endereço que os clientes já usam — trocá-lo é decisão comercial, não técnica.
2. Anatomia de um ambiente
Os três têm o mesmo desenho, o que é intencional: se o dev funciona, homologação e produção devem funcionar do mesmo jeito. Cada um tem cinco aplicações e quatro bancos.
| Peça | Tipo | O que faz |
|---|---|---|
adapter | aplicação | Interface web, servida por nginx |
adapter-api | aplicação | API principal (Koa) — dona do login e dos processos |
bravocore | aplicação | API de IA/RAG, admin Django e documentação da API |
bravocore-celery-worker | aplicação | Processamento assíncrono: ingestão de documentos, agentes |
bravocore-celery-beat | aplicação | Dispara as tarefas agendadas |
adapter-db, bravocore-db | banco | PostgreSQL com pgvector |
| 2 × Redis | banco | Fila de tarefas e cache |
Fora do ambiente ficam duas coisas compartilhadas ou paralelas: um bucket de arquivos por ambiente e o Langfuse, que é único para os três.
2.1. Um domínio, dois backends
O endereço de API de cada ambiente atende duas aplicações diferentes, separadas por caminho:
| Caminho | Vai para |
|---|---|
/api · /admin · /static | bravocore (Django) |
todo o resto (/) | adapter-api (Koa) |
POST /v1/auth/login é o login do Adapter. POST /api/v1/auth/login/ é o login do BravoCore. Chamar a rota errada devolve 401 e parece senha inválida — é o engano mais comum desta arquitetura.
/administrator/, mas a regra diz /admin
/admin não existe como rota da aplicação. Ele aparece na tabela porque a regra de roteamento casa por texto, não por segmento: /administrator começa com /admin, então é essa regra que leva o tráfego até o Django. Remover /admin por parecer inútil derrubaria o painel administrativo.
2.2. Uma branch por ambiente
| Repositório | Dev | Homologação | Produção |
|---|---|---|---|
adapter | dev | homolog | main |
adapter-api | dev | homolog | main |
BravoCore | develop | homolog | main |
develop, não dev
É a única exceção. Apontar a branch errada falha já no clone, e o painel mostra apenas um erro genérico — não diz que a branch não existe.
3. Como o código chega no ambiente
Não há passo manual: o merge é o gatilho.
- Merge na branch do ambiente — o repositório avisa o painel, que enfileira a implantação.
- Build numa máquina dedicada — a imagem é construída fora do servidor do ambiente, para que o build não roube recurso de quem está usando o sistema.
- Publicação no registry privado — a imagem vai para
<aplicação>-<ambiente>, com o commit como etiqueta. - Troca do container — o servidor do ambiente baixa a imagem e substitui o que estava rodando.
Ressalva: falha por esgotamento de recurso da máquina (memória, por exemplo) pode, sim, deixar containers pela metade — o "não derruba nada" vale para erro de build, não para máquina saturada.
4. Dados — o que cada ambiente contém
| Ambiente | Origem dos dados | Contém dado pessoal? |
|---|---|---|
| Desenvolvimento | Nasceu vazio, sem restauração | Não |
| Homologação | Restaurado do ambiente antigo de homologação | Sim — há usuários reais de cliente na base do BravoCore |
| Produção (nova) | Cópia da produção atual | Sim |
Com senha de banco e de Redis vale o contrário: são novas em cada ambiente, porque autenticam em vez de cifrar.
Cada ambiente também tem bucket de arquivos próprio, com credencial restrita a ele: credencial de dev não alcança arquivo de produção, e apagar um documento no ambiente novo não toca no arquivo do cliente.
5. Observabilidade — um Langfuse para os três
Os três ambientes enviam rastros de execução para uma instância só do Langfuse, em langfuse-2608.bravonix.ia.br, com um projeto por ambiente. As instâncias antigas continuam no ar apenas para consulta do histórico — nada novo é gravado nelas.
6. Backup
| O que é salvo | Frequência | Onde |
|---|---|---|
| Os bancos dos três ambientes | Diário, em horários escalonados | Bucket por ambiente |
| Configuração do painel — variáveis e acessos dos três | Diário | Bucket próprio |
| Volumes do Langfuse | Diário | Bucket próprio |
Há alerta por e-mail em três situações: quando um backup falha, quando o arquivo não chega ao destino e — a mais importante — quando o backup deixa de rodar. A falha silenciosa é a que mais engana, porque a ausência de erro parece sucesso.
7. Convenção de nomes
Servidores seguem bvx-<NN>-<ambiente>-<AAMM>: número apenas para ambiente, infraestrutura sem número, e a data de criação no fim — nessa ordem porque só assim a listagem alfabética fica em ordem cronológica.
8. Problemas comuns
| Sintoma | Causa provável | O que fazer |
|---|---|---|
| Login devolve 401 com credencial certa | Rota trocada entre Adapter (/v1/auth/login) e BravoCore (/api/v1/auth/login/) | Conferir qual das duas aplicações deveria autenticar |
| Login falha depois de mudar o domínio | O endereço da API no front é de build | Atualizar a variável e refazer o build |
| Caminho da API responde 404 vindo da aplicação | Prefixo do caminho sendo removido antes de chegar no backend | Verificar se a aplicação já serve naquele caminho |
| Deploy falha logo no início, sem log útil | Branch inexistente — o BravoCore usa develop | Conferir a branch configurada |
| Ambiente sobe, responde 200, mas quebra no primeiro uso | Banco vazio: migrações não aplicadas | Conferir se o passo de migração rodou na implantação |
| Rastros pararam de aparecer no Langfuse | Endereço do Langfuse errado — falha silenciosa | Conferir a variável e o projeto de destino |
| Erro 502 por alguns segundos | Troca de container em implantação bem-sucedida | Comportamento esperado; escolher a janela |
| Página responde 502 de forma permanente | Roteador apontando para a porta errada do container | Declarar a porta explicitamente no domínio |
9. Glossário
- Ambiente
- Cópia completa e independente do sistema, com servidores, banco e endereço próprios.
- Container
- Pacote isolado que roda uma aplicação com tudo de que ela precisa.
- Imagem
- O molde a partir do qual um container é criado. Construir a imagem é o "build".
- Registry
- Repositório onde as imagens ficam guardadas para os servidores baixarem.
- Branch
- Linha de desenvolvimento no repositório. Cada ambiente acompanha uma.
- Migração (migration)
- Script que altera a estrutura do banco. Roda na subida da aplicação.
- Rastro (trace)
- Registro do caminho de uma requisição de IA, usado para depurar e medir custo.
- Bucket
- Espaço de armazenamento de arquivos na nuvem, separado do banco.
Onde estão as credenciais: acessos ao painel, aos bancos e às contas de serviço ficam com a equipe de desenvolvimento — nunca nesta página. Solicite ao responsável pelo ambiente.
Página de referência interna da Bravonix. O endereço é público mas não indexado; trate como documento interno.