Commit Graph

167 Commits

Author SHA1 Message Date
ATM Platform 97e0aeecd4 feat(P0.9): fase issuer - o issuer passa para athleticmap.com 2026-09-23 12:30:41 +00:00
ATM Platform eeda1e90da Revert "feat(P0.9): fase issuer - o issuer passa para athleticmap.com"
This reverts commit f4747712ad.
2026-09-23 12:22:02 +00:00
ATM Platform f4747712ad feat(P0.9): fase issuer - o issuer passa para athleticmap.com 2026-09-23 12:21:47 +00:00
ATM Platform 5e1bf3a00b feat(P0.9): fase realm - o realm passa a aceitar os dois dominios 2026-09-23 12:14:17 +00:00
deploy 440ade90f5 feat(P0.9): fase HOSTS — os cinco tenants passam a atender os DOIS dominios
Aditiva de proposito: nenhum endereco antigo sai. Quem esta usando
<tenant>.athleticmap.influxdigital.com.br continua entrando, e o cert-manager
passa a emitir tambem o certificado de <tenant>.athleticmap.com.

Foi possivel porque o dono criou o curinga hoje: *.athleticmap.com resolve para
187.77.37.184, conferido com um nome ALEATORIO — demo. ou www. responderiam
mesmo sem curinga, e a conferencia passaria por engano.

9 arquivos, 28 trocas, 317 insercoes e 4 remocoes. As 4 sao as linhas de TLS em
fluxo, reescritas com os dois dominios na mesma lista.

Cada regra de Ingress foi DUPLICADA com os mesmos paths, e nao trocada: uma
regra com host: X so atende X.

`platform/` (ArgoCD e Grafana) fica FORA: mexer no Ingress do ArgoCD no meio de
uma migracao de dominio e perder o instrumento de rollback.

Conferido antes de aplicar: YAML valido em todos os Ingress, e ZERO host sem
entrada de TLS.

O que NAO muda aqui: ATM_ISSUER, ATM_KC_URL e as URLs do Garmin. Ninguem e
deslogado nesta fase.
2026-09-23 11:35:48 +00:00
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 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 4eedae4c78 chore(tenants): frontend-spa:2.67-csp-script 2026-09-22 12:17:05 +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 76fd9fd270 chore(tenants): frontend-spa:2.66-lp-css 2026-09-22 01:49:39 +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 6aed5291a6 chore(tenants): servico-bff:2.0-exportacao 2026-09-21 22:27:36 +00:00
deploy a7b6e7c2c2 chore(tenants): runtime-operacao:1.2-auditoria 2026-09-21 22:22:10 +00:00
deploy e056b7295a chore(tenants): runtime-core:1.2-auditoria 2026-09-21 22:16:40 +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 729686d3da feat(demo): BFF e frontend novos (P4.3-P4.9) 2026-09-21 11:30:06 +00:00
deploy 1ed00120c0 feat(plataforma,tenants): coleta de metricas e permissao do provisionamento 2026-09-21 02:30:31 +00:00
deploy 13a79ce54e feat(demo): runtimes consolidados ao lado dos servicos (P4.3-P4.9) 2026-09-20 19:12:43 +00:00
deploy e90f6afd5c feat(demo): BFF e frontend novos (P4.3-P4.9) 2026-09-19 17:51:27 +00:00
deploy b6f23371ea feat(demo): contextos do runtime-saude passam a responder por ele (P4.3-P4.9) 2026-09-19 17:51:00 +00:00
ATM Platform 8663f441fd Revert "feat(demo): contextos do runtime-saude passam a responder por ele (P4.3-P4.9)"
This reverts commit 9b992300df.
2026-09-19 17:48:25 +00:00
deploy 9b992300df feat(demo): contextos do runtime-saude passam a responder por ele (P4.3-P4.9) 2026-09-19 17:47:55 +00:00
deploy 02e36ba03f feat(demo): runtime-saude no ar (P4.3-P4.9) 2026-09-19 17:47:52 +00:00
deploy d970dfb606 feat(demo): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9) 2026-09-19 17:47:24 +00:00
ATM Platform 1e1f583b76 Revert "feat(demo): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9)"
This reverts commit 48f2ad4883.
2026-09-19 17:46:57 +00:00
deploy 48f2ad4883 feat(demo): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9) 2026-09-19 17:46:26 +00:00
deploy c1783bd375 feat(demo): runtime-operacao no ar (P4.3-P4.9) 2026-09-19 17:46:21 +00:00
deploy cb734c4181 feat(demo): contextos do runtime-core passam a responder por ele (P4.3-P4.9) 2026-09-19 17:45:54 +00:00
deploy b1adf512ff feat(demo): runtimes consolidados ao lado dos servicos (P4.3-P4.9) 2026-09-19 17:45:47 +00:00
deploy 5394ed7828 feat(demo): runtimes consolidados ao lado dos servicos (P4.3-P4.9) 2026-09-19 16:58:08 +00:00
deploy 139a20148f feat(demo): servicos passam a usar o Postgres compartilhado (P4.7) 2026-09-19 16:46:10 +00:00
deploy f137e87829 chore(demo): servicos parados para a copia ao compartilhado (P4.7) 2026-09-19 16:45:46 +00:00
deploy 622b7e1a08 fix(demo): egress para o PgBouncer do compartilhado (P4.7) 2026-09-19 16:40:43 +00:00
deploy da6e008ad1 feat(demo): senha do role no compartilhado 2026-09-19 16:19:45 +00:00
atmadmin e23063e45d fix(tls): garmin-public deixa de disputar o cert; ingress principal e unico dono (2 hosts)
Corrige escolinha-tls que saiu com 1 host (faltava auth-escolinha), servindo TRAEFIK DEFAULT CERT no Keycloak.
Remove cert-manager annotation dos 96-ingress-garmin-public dos 4 tenants (o cert e emitido pelo ingress principal com [tenant, auth-tenant]).
2026-07-28 16:47:55 +00:00
atmadmin c2db5f2c17 perf(tenants): reduz CPU requests dos servicos (150m/100m->50m, keycloak 250m->150m) nos 4 tenants
Libera CPU no no unico para acomodar o 4o silo (escolinha) sem hardware novo.
Limits preservados (burst inalterado); apenas o gate de scheduling foi ajustado.
2026-07-28 15:54:21 +00:00
atmadmin 35339b9767 feat(tenants): replica Garmin/Apple Watch e nivela financeiro 1.4 em piloto/acme/demo
- piloto+acme: saude 1.88-garmin, bff 1.87-garmin, frontend 1.90-garmin + ingress publico Garmin + env GARMIN_* (redirect por tenant)
- garmin-oauth secret criado em piloto-prod/acme-prod (fora do GitOps, como no demo)
- financeiro nivelado para 1.4 em demo e acme (piloto ja estava)
2026-07-28 15:17:49 +00:00
atm-deploy ecc8347ccc feat(demo): pagina Apple Watch em Integracoes (1.90-garmin) 2026-07-17 22:45:57 +00:00
atm-deploy b61af9e6c7 feat(demo): pagina Apple Watch em Integracoes (1.89-garmin) 2026-07-17 22:11:19 +00:00
ATM Platform 1ada48899a feat(demo): cards Estresse/Respiracao/VO2 + Body Battery via stress (1.88-garmin) 2026-07-09 15:07:30 +00:00
ATM Platform 62dc51ae5b feat(demo): botao Re-sincronizar (backfill fatiado 24h) - 1.87-garmin 2026-07-09 14:49:31 +00:00
ATM Platform 74d34879fd fix(demo): disconnect nao apaga wellness + webhook ignora eventos de controle (1.86-garmin) 2026-07-09 14:34:52 +00:00
ATM Platform d9f689919a style(demo): contraste do dashboard Garmin + nginx no-cache index (1.85-garmin) 2026-07-09 14:13:43 +00:00
ATM Platform 67ebd5b6bd feat(demo): dashboard resumo do dia + webhook generico (1.84-garmin) 2026-07-09 13:57:26 +00:00
ATM Platform 1a03537500 chore(demo): desativa backfill (gated em Evaluation) - servico-saude 1.83-garmin 2026-07-09 13:25:42 +00:00
ATM Platform b705dc4961 fix(demo): backfill HTTP/1.1 p/ Content-Length (servico-saude 1.82-garmin) 2026-07-08 22:50:53 +00:00