Commit Graph

399 Commits

Author SHA1 Message Date
deploy d81f45b62c feat(demo): o Ingress para de rotear /bff e os treze /api/<contexto> (P4.6)
Catorze linhas saem. Quem conhece a topologia interna passa a ser o
frontend/nginx.conf.template, que viaja junto com a imagem — antes, cada
mudanca de topologia obrigava a editar o Ingress de todos os tenants.

O destino do /api mudou de backend (o legado) para frontend-spa. O que o
visitante ve NAO muda: caminho nao mapeado continua recebendo 401 — antes do
backend legado, agora do BFF, para onde o nginx manda o /api que sobra. A
decisao "401 ou 404" segue aberta e intacta; isto so tira o legado do caminho
do trafego.

Pre-condicao resolvida hoje: as cinco variaveis de destino do nginx estavam
vazias e, mesmo apontadas, precisavam de FQDN (o resolver do nginx nao aplica os
search do resolv.conf). Sem isso, esta mudanca derrubaria os treze contextos e o
/bff de uma vez.

ORDEM: /api/public e /api/public/webhooks/asaas vivem no
96-ingress-garmin-public.yaml e tem prefixo mais longo, entao vencem o /api — o
Traefik ordena por tamanho.

Primeiro tenant. Os outros tres so depois de conferido.
2026-09-22 19:52:26 +00:00
deploy 1dda8d518d fix(tenants): o webhook de PAGAMENTO do Asaas morria no BFF
O arquivo 96-ingress-garmin-public.yaml foi criado para o callback do Garmin e
leva TODO o /api/public para o servico-bff. O BFF relaya o Garmin de proposito
(GarminBffController), mas NAO tem controlador para /api/public/webhooks/asaas —
so o financeiro tem (WebhookAsaasController).

Resultado nos quatro tenants: o aviso de pagamento do Asaas chegava ao BFF e
parava ali. O sintoma seria o pior possivel — a cobranca e paga e NUNCA baixada,
sem erro nenhum do nosso lado; o provedor so registra uma entrega recusada.

Esta dormente hoje porque nenhum dos quatro tem asaas-credentials (cada cliente
traz a propria chave, decisao de 19/09). Passaria a morder no primeiro cliente
que ligasse a cobranca — e o diagnostico comecaria pelo lado errado, olhando o
financeiro, que nunca recebeu nada.

O Traefik ordena por TAMANHO do prefixo, entao a rota nova vence a generica
sozinha; fica escrita primeiro mesmo assim, para ninguem reordenar sem perceber.

Achado a partir do scripts/conferir_rotas_publicas.py, que acusou o piloto. A
acusacao estava certa no problema e errada no alcance: ele le a copia PARCIAL do
monorepo, que nao tem o Ingress de nenhum dos quatro, e concluiu sobre um.
Medido no cluster, os quatro eram identicos e os quatro estavam quebrados.
2026-09-22 15:02:05 +00:00
deploy 2a4b387e37 feat(plataforma): duas rotas publicas que existiam no codigo e nao no Ingress
O Ingress do plataforma nao tem catch-all, por desenho: rota publica nova
precisa ser acrescentada a mao, ou devolve 404. Duas estavam faltando, as duas
achadas por scripts/conferir_rotas_publicas.py.

/api/public/conta (P5.8) — a tela de espera depois do pagamento. Quem acabou de
pagar AINDA NAO TEM CONTA, logo nao tem token. O controlador existia
(EstadoDaContaController) e a cadeia ja liberava (permitAll), mas o Ingress
devolvia 404: a tela que existe para tranquilizar quem pagou nao respondia.

/api/public/webhooks/assinatura (P5.1) — e outra coisa do webhooks/asaas que ja
estava la: aquele avisa que uma COBRANCA de cliente foi paga e vai para o
financeiro do tenant; este avisa que alguem assinou a Athletic Map, e dispara o
provisionamento de um tenant NOVO. Contas diferentes no Asaas, servicos
diferentes aqui. Sem esta linha, alguem assinaria, pagaria, e nenhum tenant
seria criado — sem erro em lugar nenhum do nosso lado.
2026-09-22 14:56:43 +00:00
deploy a6d1f36d67 fix(tenants): o roteamento interno do nginx precisa de FQDN, e nunca funcionou
Ao conferir o P4.6, o nginx do frontend devolveu 502 em TODOS os caminhos
internos, inclusive /bff. O log diz o porque:

    servico-bff could not be resolved (3: Host not found)
    runtime-saude could not be resolved (3: Host not found)

O "resolver" do nginx NAO aplica os "search" do /etc/resolv.conf: ele consulta o
nome exatamente como esta escrito. O comando "getent hosts servico-bff", de
dentro do MESMO pod, resolve — porque usa o resolv.conf, que tem
"search escolinha-prod.svc.cluster.local ...". O nginx nao usa.

Isso e PREEXISTENTE e estava invisivel: o Ingress roteia /bff e as treze linhas
de /api/<contexto> direto para os Services, entao o nginx nunca foi exercitado
nesses caminhos. Quem removesse as linhas do Ingress — que e exatamente o que
P4.6 quer — derrubaria os treze contextos E o /bff de uma vez, com 502 e nenhuma
pista no Ingress para explicar.

As cinco variaveis passam a usar FQDN. Conferido depois, batendo no nginx por
dentro (sem passar pelo Ingress): os 13 contextos respondem 200, e o /bff
tambem. De fora, os quatro tenants seguem em 200 — nada regrediu.
2026-09-22 13:53:06 +00:00
deploy 6dd1fbc24e feat(tenants): o roteamento interno do nginx, por grupo de contextos (P4.6)
As tres variaveis estavam VAZIAS nos quatro tenants, e render-config.sh faz toda
ausente cair em ATM_API_URL, que cai em http://servico-bff. O nginx mandaria
/api/cadastro para o BFF, que responde 401 em vez da resposta do contexto.

Nada quebrava porque o INGRESS atende antes, com uma linha por contexto — e sao
justamente essas linhas que P4.6 quer remover. Sem isto, remove-las quebraria os
treze caminhos de uma vez.

Aditivo: enquanto o Ingress existir, o trafego nem chega a este nginx.
2026-09-22 13:49:10 +00:00
deploy 8e0a2a8f18 feat(plataforma): o certificado de selagem vem do controlador, pela URL
O ipBlock da deny-cross-tenant nao vale para destino em outro namespace (o k3s
avalia depois do DNAT), entao a variavel sozinha daria FalhaTemporaria. Vai
junto a netpol estreita: so o servico-captacao, so o pod do controlador, so a
porta 8080, so saida.
2026-09-22 13:07:28 +00:00
deploy 84293e4176 chore(plataforma): servico-captacao:1.5-realm 2026-09-22 12:43:21 +00:00
deploy 2a7292455d feat(escolinha): BFF e frontend novos (P4.3-P4.9) 2026-09-22 12:28:46 +00:00
deploy 63889b64f9 feat(escolinha): contextos do runtime-saude passam a responder por ele (P4.3-P4.9) 2026-09-22 12:27:55 +00:00
deploy ea6c08797e feat(escolinha): runtime-saude no ar (P4.3-P4.9) 2026-09-22 12:27:52 +00:00
deploy 0ca5a3bdfa feat(escolinha): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9) 2026-09-22 12:26:49 +00:00
deploy 492acaf0fa feat(escolinha): runtime-operacao no ar (P4.3-P4.9) 2026-09-22 12:26:47 +00:00
deploy 1343b52278 feat(escolinha): contextos do runtime-core passam a responder por ele (P4.3-P4.9) 2026-09-22 12:26:19 +00:00
deploy ccd98c252c feat(escolinha): runtimes consolidados ao lado dos servicos (P4.3-P4.9) 2026-09-22 12:25:30 +00:00
deploy a2d8644595 chore(tenants): frontend-spa:2.67-csp-script 2026-09-22 12:17:44 +00:00
deploy 4eedae4c78 chore(tenants): frontend-spa:2.67-csp-script 2026-09-22 12:17:05 +00:00
deploy a67efba9de fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-22 11:06:09 +00:00
deploy 6faa9c8ab7 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-22 11:06:05 +00:00
deploy feb721ccee fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-22 11:05:59 +00:00
deploy cde7d9bd02 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-22 11:05:26 +00:00
deploy 27065a4274 chore(tenants): frontend-spa:2.66-lp-css 2026-09-22 02:00:29 +00:00
deploy 22412c40aa feat(backup): envio para fora do servidor (atm-pg-backup:1.2 com rclone) 2026-09-22 01:57:55 +00:00
deploy 76fd9fd270 chore(tenants): frontend-spa:2.66-lp-css 2026-09-22 01:49:39 +00:00
deploy ac40b21768 chore(tenants): frontend-spa:2.66-lp-css 2026-09-22 01:41:27 +00:00
deploy 7301899084 chore(platform): sincroniza platform/ com o monorepo 2026-09-21 23:30:21 +00:00
deploy 019bf6707e feat(backup): envio para fora do servidor (atm-pg-backup:1.2 com rclone) 2026-09-21 23:17:51 +00:00
deploy e666b8e045 feat(backup): envio para fora do servidor (atm-pg-backup:1.2 com rclone) 2026-09-21 23:15:59 +00:00
deploy 5cae175d97 feat(backup): envio para fora do servidor (atm-pg-backup:1.2 com rclone) 2026-09-21 23:13:35 +00:00
deploy 07682c2859 chore(tenants): servico-bff:2.0-exportacao 2026-09-21 22:31:53 +00:00
deploy 6aed5291a6 chore(tenants): servico-bff:2.0-exportacao 2026-09-21 22:27:36 +00:00
deploy 5e467f768a chore(tenants): runtime-operacao:1.2-auditoria 2026-09-21 22:24:14 +00:00
deploy a7b6e7c2c2 chore(tenants): runtime-operacao:1.2-auditoria 2026-09-21 22:22:10 +00:00
deploy b0374ac0a0 chore(tenants): runtime-core:1.2-auditoria 2026-09-21 22:18:05 +00:00
deploy e056b7295a chore(tenants): runtime-core:1.2-auditoria 2026-09-21 22:16:40 +00:00
deploy 95eb3b93c8 chore(plataforma): servico-captacao:1.4 2026-09-21 22:09:06 +00:00
deploy b3762496f8 chore(platform): sincroniza platform/ com o monorepo 2026-09-21 21:58:09 +00:00
deploy 8a84598042 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-21 21:44:09 +00:00
deploy 69db0586f9 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-21 21:37:08 +00:00
deploy 2dd4ff8d3e fix(plataforma): servico-captacao 1.1 (lead com consent_ip inet, modalidade do lead) 2026-09-21 13:57:28 +00:00
deploy 1bfe0f0a85 chore(platform): sincroniza platform/ com o monorepo 2026-09-21 13:56:19 +00:00
deploy 03c7d81f3b fix(plataforma): servico-captacao 1.1 (lead com consent_ip inet, modalidade do lead) 2026-09-21 13:42:24 +00:00
deploy 403d406771 fix(plataforma): servico-captacao 1.1 (lead com consent_ip inet, modalidade do lead) 2026-09-21 13:33:11 +00:00
deploy b36fd68eb7 feat(platform): a pasta platform/ entra no GitOps (regras, ServiceMonitor e a Application) 2026-09-21 12:14:07 +00:00
deploy e2760f4e7a fix(plataforma): token do CronJob com o emissor publico (cabecalhos de proxy) 2026-09-21 11:55:07 +00:00
deploy 0e9a516495 fix(plataforma): o CronJob chama a porta do Service (80), nao a do container 2026-09-21 11:51:37 +00:00
deploy 804f051cc5 fix(plataforma): o CronJob espera a rede aceitar o pod novo 2026-09-21 11:40:44 +00:00
deploy 2014c3789e feat(plataforma): CronJobs do financeiro (mensalidades, notas, conciliacao) 2026-09-21 11:33:17 +00:00
deploy 2c834ed505 feat(plataforma): credencial do cliente operacao (CronJobs do financeiro) 2026-09-21 11:32:57 +00:00
deploy 329790c7ac feat(acme): BFF e frontend novos (P4.3-P4.9) 2026-09-21 11:31:16 +00:00
deploy 7329c6da9d feat(piloto): BFF e frontend novos (P4.3-P4.9) 2026-09-21 11:31:00 +00:00