Commit Graph

162 Commits

Author SHA1 Message Date
deploy 8a4f59da2a chore(tenants): frontend-spa:2.87-ficha-completa 2026-09-30 00:29:03 +00:00
deploy d65f4e5638 feat(tenants): CronJob do resumo diario (N16) de volta aos 4 tenants — agora registrados como contratacoes de demonstracao (V025) 2026-09-29 23:18:16 +00:00
deploy 34cfc6759e chore(tenants): frontend-spa:2.86-garmin-ficha 2026-09-29 19:50:32 +00:00
deploy c971e25b5c chore(tenants): servico-bff:2.3-garmin-ficha 2026-09-29 19:46:43 +00:00
deploy 5e7d1edaf4 chore(tenants): runtime-saude:1.4-garmin-ficha 2026-09-29 19:43:42 +00:00
deploy f62bf2ca14 chore(tenants): CronJob do resumo diario (N16) so no molde — os 4 antigos nao sao contratacoes e o captacao recusa (401) 2026-09-29 17:57:32 +00:00
deploy 8f437c7d59 fix(N16): resumo diario pelo Service interno do captacao (o nome publico nao conecta de dentro do cluster); regras de rede tenants<->captacao 8083 2026-09-29 17:49:39 +00:00
deploy 15b3ae7e95 feat: tarefas agendadas (resumo diario N16, eliminacao P6.3) no molde e nos 4 tenants; expurgo semanal P6.4 na plataforma; regra de alerta da nota fiscal N18 2026-09-29 17:23:46 +00:00
deploy ae615ad1b8 feat(tenants): publico/ passa a vir de ConfigMap, nao mais so da imagem 2026-09-29 17:18:13 +00:00
deploy 0e0b0ba786 chore(tenants): frontend-spa:2.85-lgpd-relatorio 2026-09-29 17:14:21 +00:00
deploy d443b01076 chore(tenants): servico-bff:2.2-lgpd-relatorio 2026-09-29 17:12:58 +00:00
deploy 08de120191 chore(tenants): runtime-saude:1.3-garmin-cifrado 2026-09-29 17:11:33 +00:00
deploy 9314fb733f chore(tenants): runtime-operacao:1.9-resumo-relatorio-nota 2026-09-29 17:09:48 +00:00
deploy 659781e6bd chore(tenants): runtime-core:1.5-retencao-titular-relatorio 2026-09-29 17:08:28 +00:00
deploy 3b0c2fffaf chore(tenants): conteudo de publico/ atualizado 2026-09-29 16:51:27 +00:00
deploy 6bb9e4d8b3 feat: segredos e variaveis da publicacao de 29/09 — resumo-chave (N16), resumo-credentials e garmin-token-chave nos 4 tenants, retencao 1825, molde 2026-09-29 16:36:15 +00:00
deploy 8982a013b6 fix(tenants): tarefa do financeiro em tenant sem o modulo termina OK (nada a fazer), nao falha 2026-09-29 01:53:55 +00:00
deploy 3180e7c4af chore(tenants): frontend-spa:2.84-termo-e-modulos 2026-09-28 15:30:56 +00:00
deploy 989c3a5dfe chore(tenants): servico-bff:2.1-termo-e-modulos 2026-09-28 15:29:15 +00:00
deploy 34edcf005a chore(tenants): runtime-core:1.4-consentimento-opcional 2026-09-28 15:27:16 +00:00
ATM Platform 5388461a77 feat(tenants): planos de demonstracao — demo=bronze, acme=prata (escolinha segue institucional); decisao do dono 2026-09-28
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 13:43:43 +00:00
ATM Platform 76819fd518 feat(tenants): requests.cpu dos runtimes de 100m para 50m (decisao do dono, 2026-09-28)
Uso real ~5m por container; a reserva de 100m travava o no em 13 tenants.
Com 50m o teto passa a ser a memoria: 16. Limites continuam 1 vCPU.
Ver docs/capacidade-kvm8.md no repositorio de codigo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:05:25 +00:00
deploy c0d265c9e2 chore(tenants): runtime-core:1.3-vinculo-keycloak 2026-09-26 22:49:15 +00:00
ATM Platform 55159dd750 feat(tenants): vinculo do funcionario ao Keycloak (RF-09) ligado de verdade
- runtime-core dos quatro antigos ganha ATM_KC_ADMIN_URL e ATM_KC_REALM do
  Keycloak compartilhado (o padrao apontava para o Keycloak proprio, parado)
- molde e os quatro nascidos dele: client cadastro-keycloak criado no realm,
  segredo selado em 05-sealed-kc-admin-secret.yaml, variaveis no runtime-core
  (secretKeyRef optional) e o Secret na Role de leitura do provisionamento
- plataforma: o captacao pode anotar o ApplicationSet para varrer na hora

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 22:49:07 +00:00
deploy 00f628ab89 feat(acme): realm vai para o Keycloak compartilhado como athleticmap-3 (card 156) — issuer/JWKS/KC_URL trocados, saida de rede aberta, Keycloak proprio em replicas 0 2026-09-26 17:43:47 +00:00
deploy 28b493accc feat(tenants): BFF funde no pod do frontend-spa (P4.6) — Service fica, so o selector muda; Garmin e Prometheus continuam apontando pro mesmo nome 2026-09-26 16:34:12 +00:00
deploy 711bee7fc1 chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:53:24 +00:00
deploy 288a87e5be chore(tenants): servico-bff:2.0-atualiza-4-antigos 2026-09-26 15:31:34 +00:00
deploy 3b9414e90a chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:18:26 +00:00
deploy 72288db0d7 chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:16:30 +00:00
deploy 615aacf037 fix(tenants): o volume de publico/ estava indo ANTES do Deployment inteiro (ancora --- errada), e o ConfigMap binario estourava o limite de 256 KiB de annotation do kubectl apply — corrigido com ancora especifica no Service e ServerSideApply=true 2026-09-26 15:14:08 +00:00
deploy d98662739e chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:08:29 +00:00
deploy 13586b77ea feat(tenants): publico/ passa a vir de ConfigMap, nao mais so da imagem 2026-09-26 15:03:20 +00:00
deploy 662d49cb85 chore(tenants): runtime-operacao:1.3-split-1.20 2026-09-26 15:01:29 +00:00
deploy db4ae81a1b feat(tenants): CronJobs financeiros para escolinha/acme/demo/piloto, com client operacao e roles atm_financeiro proprias 2026-09-26 14:18:22 +00:00
deploy f88fb362f9 chore(tenants): reduz o teto das cotas dos quatro tenants antigos, 20 para 8 nucleos — o uso real e 5700m, e o node tem 8 no total 2026-09-26 13:41:34 +00:00
deploy ab68dc374a chore(tenants): aposenta o backend legado nos quatro tenants antigos (0 replicas) — zero requisicoes reais em 7 dias, o /api ja vai para o servico-bff 2026-09-26 13:40:31 +00:00
deploy 48668e1910 chore(dominio): o dominio antigo sai de tudo — Ingress, realms, Garmin, ArgoCD e Grafana 2026-09-26 04:05:49 +00:00
deploy 1c7dbcad87 feat(front): visual novo (2.82-aviso-cobranca) em moldes/consolidado, teste5, zico-0, escolinha-de-teste, escolinha-de-teste-2, acme, demo, piloto, escolinha 2026-09-26 02:01:55 +00:00
deploy 58f7d8c2ba feat(front): visual novo (2.78-visual-novo) em moldes/consolidado, escolinha-de-teste-2, zico-0, teste5, escolinha, acme, demo, piloto 2026-09-25 21:44:18 +00:00
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 4c338c0eda feat(piloto,acme,escolinha): o Ingress simplificado, como no demo (P4.6)
Mesma mudanca do commit anterior, agora nos tres restantes. O demo foi primeiro
e ficou conferido de fora: os 13 contextos em 200, /bff em 200, /inicio e
/lp-escolinhas em 200, e — o que mais importava — /api/nao-mapeado continua
devolvendo 401, como antes. O comportamento visivel nao mudou.

Catorze linhas saem de cada um. O destino do /api passa de backend (o legado)
para frontend-spa; a decisao "401 ou 404" segue aberta e intacta.
2026-09-22 19:54:40 +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 a2d8644595 chore(tenants): frontend-spa:2.67-csp-script 2026-09-22 12:17:44 +00:00