Commit Graph

521 Commits

Author SHA1 Message Date
deploy e12b7e7207 feat(plataforma): o painel do comprador 2026-09-25 20:32:04 +00:00
deploy 0cc8324521 chore(plataforma): servico-captacao:4.1-minha-conta 2026-09-25 20:29:20 +00:00
deploy eacbafcbee feat(plataforma): OIDC do painel do comprador no captacao (reconciliador desligado) 2026-09-25 20:27:46 +00:00
deploy 0dc6bbed26 feat(plataforma): o painel do dono 2026-09-25 16:17:33 +00:00
deploy 4cb3920542 chore(plataforma): servico-captacao:4.0-painel-instant 2026-09-25 16:14:33 +00:00
deploy f3872c836f chore(plataforma): servico-captacao:3.9-painel-liberado 2026-09-25 16:10:25 +00:00
deploy df14259f03 chore(plataforma): servico-captacao:3.8-painel 2026-09-25 16:05:22 +00:00
deploy debe8e4a45 chore(plataforma): servico-captacao:3.7-plano-chega 2026-09-25 15:52:58 +00:00
deploy 4d87d5c287 chore(plataforma): servico-captacao:3.6-subpath 2026-09-25 15:44:59 +00:00
provisionamento Athletic Map 1aebf8983c feat(plataforma): PgBouncer passa a servir o tenant teste5
Escrito pela etapa BANCO_CRIADO do provisionamento.
2026-09-25 15:28:13 +00:00
provisionamento Athletic Map 706a6e67ab feat(tenant): provisiona teste5
Cliente: Teste5
Assinatura: sub_zx7fdtz40b8is2gk
Plano: (nao informado)
Realm: athleticmap-9

Gerado pelo provisionamento automatico (P5.2/P5.3) a partir do molde
consolidado de P4.9. O ApplicationSet cria a Application sozinho pelo
gerador de diretorio sobre tenants/*.
2026-09-25 15:26:54 +00:00
deploy 7b67bf810e feat(plataforma): o botao de teste responde onde se clica 2026-09-25 15:18:50 +00:00
deploy 11a786a6d5 chore(plataforma): liga o plano de teste (R$ 5.00) 2026-09-25 13:49:29 +00:00
deploy 4660804da7 feat(plataforma): botao de teste, atras de ?teste=1 2026-09-25 13:45:16 +00:00
deploy 123c54c0b2 chore(plataforma): servico-captacao:3.5-plano-de-teste 2026-09-25 13:42:01 +00:00
deploy 16ee8332a9 chore(plataforma): servico-captacao:3.4-pool-recarrega 2026-09-25 13:25:47 +00:00
deploy 5633bd42ba revert(rbac): a permissao de namespaces nao serve, e nao fica
Pedi get/list em namespaces para a etapa ARGO_SINCRONIZADO provar que o
Argo aplicou. NAO FUNCIONA: o ClusterRole e ligado a conta por
RoleBinding POR TENANT, e RoleBinding so concede DENTRO do seu
namespace. `namespaces` e recurso de cluster, entao a resposta continua
negada -- e o que resolveria e um ClusterRoleBinding, porta bem mais
larga do que a pergunta.

A etapa passou a provar pelo Secret db-credentials do tenant, que
responde a mesma coisa e um pouco mais: para ele ser legivel o Argo teve
de criar namespace, Role, RoleBinding e SealedSecret, e o controlador
teve de abri-lo. Permissao que ninguem usa nao se pede.
2026-09-25 13:24:14 +00:00
deploy 532a95138a feat(rbac): o provisionamento passa a enxergar namespaces
A etapa ARGO_SINCRONIZADO concluia no `git push`, que e outra coisa:
entre empurrar e aplicar esta o ciclo do gerador de diretorio do
ApplicationSet. A etapa seguinte encontrava o namespace inexistente e
recebia 403 -- sem permissao dentro dele, a API nao diz "nao existe",
diz "nao pode" -- e queimava tentativas esperando por algo que nao era
trabalho dela.

get e list, so em namespaces. O que isto revela e o NOME dos namespaces,
para um servico que e justamente quem os cria.
2026-09-25 13:18:53 +00:00
provisionamento Athletic Map a83c287bdf feat(plataforma): PgBouncer passa a servir o tenant zico-0
Escrito pela etapa BANCO_CRIADO do provisionamento.
2026-09-25 13:02:03 +00:00
provisionamento Athletic Map 084b3cfd56 feat(tenant): provisiona zico-0
Cliente: Zico 0
Assinatura: sub_dgoho9lkia9wfaqp
Plano: (nao informado)
Realm: athleticmap-8

Gerado pelo provisionamento automatico (P5.2/P5.3) a partir do molde
consolidado de P4.9. O ApplicationSet cria a Application sozinho pelo
gerador de diretorio sobre tenants/*.
2026-09-25 12:57:17 +00:00
deploy 64aeb53cb2 chore(plataforma): servico-captacao:3.3-remetente 2026-09-25 12:37:27 +00:00
deploy 97e7f9ebc8 feat(plataforma): a landing page leva direto ao pagamento 2026-09-25 12:21:57 +00:00
deploy f5e6dee168 chore(plataforma): servico-captacao:3.2-checkout-direto 2026-09-25 12:18:37 +00:00
deploy f7d12591fe fix(cota): a cota cabia o repouso, mas nao a troca -- faltava por 128Mi
Os dois tenants pagos estavam presos em `1.1-demo` desde 24/09 23:43,
sem conseguir ir para `1.2-auditoria`. O ArgoCD dizia Synced: o
Deployment batia com o git. O que nao acontecia era o rollout.

Em repouso os cinco Deployments somam 2944Mi. O maxSurge de 25% sobre
uma replica arredonda para cima e pede um pod inteiro a mais: 768Mi,
quando o que troca e um runtime. 2944 + 768 = 3712, contra 3584.

O cabecalho do arquivo ja tinha essa licao escrita -- para `pods`, que
derrubou o provisionamento do plataforma em 17/09. A memoria nao ganhou
o mesmo tratamento. Agora a regra esta escrita uma vez, para todos os
tetos, e o paragrafo velho que ainda dizia `pods: 8` saiu.

So limits.memory travava: medido hoje, requests.memory tinha 560Mi
livres (a troca pede 400), requests.cpu 1100m (pede 100), limits.cpu
1300m (pede 1000) e pods 5 de 10.
2026-09-25 11:52:56 +00:00
deploy 50112c69e4 chore(plataforma): rotaciona a senha de aplicativo do SMTP 2026-09-25 10:47:54 +00:00
deploy ca028cf46a revert(plataforma): o selo do SMTP volta ao anterior
O script de rotacao usou `bash -s` com o roteiro E a senha no mesmo stdin: o
`read` consumiu linha do proprio roteiro, e o Secret foi selado com lixo (54
caracteres). O pod nao tinha reiniciado, entao o e-mail continuava funcionando
pela variavel ja carregada — mas o proximo restart quebraria.

Volta ao selo que funciona. A senha nova sera aplicada pelo script corrigido.
2026-09-25 02:45:43 +00:00
deploy 7aca13ea4e chore(plataforma): rotaciona a senha de aplicativo do SMTP 2026-09-25 02:43:13 +00:00
deploy 8d28bdf418 feat(plataforma): a landing page com planos e contratacao 2026-09-25 02:29:18 +00:00
deploy 1ac05a7425 feat(atm-escolinha): tela de login Athletic Map 2026-09-25 02:18:34 +00:00
deploy c900288ad0 feat(atm-plataforma): tela de login Athletic Map 2026-09-25 02:16:20 +00:00
deploy 6b13662cb9 chore(plataforma): tira o preco de teste de R$ 5 do bronze
A prova de ponta a ponta terminou. Com o bloco no ar, /planos devolvia bronze
mensal 5,00 contra anual 1.870,00 — e a landing page mostraria os dois lado a
lado.
2026-09-25 02:10:58 +00:00
deploy 0e94ef54e9 feat(plataforma): /api/public/contratacoes no Ingress
A contratacao pela landing page. Aqui nao ha catch-all: caminho que nao esta
escrito nao existe — o endpoint respondeu vazio com a imagem ja no ar porque o
servico tinha a rota e o Ingress nao.
2026-09-25 01:53:21 +00:00
deploy f507f14140 chore(plataforma): servico-captacao:3.1-autosservico 2026-09-25 01:51:22 +00:00
deploy c558cb0447 chore(plataforma): servico-captacao:3.0-autosservico 2026-09-25 01:42:52 +00:00
deploy 5fa7e40be5 chore: as copias .bak do gerador de tema saem do versionamento
Elas existem para o --rollback. Versionadas, deixavam a arvore suja e
derrubavam o pull --rebase do proprio gerador na publicacao seguinte.
2026-09-25 01:07:30 +00:00
deploy b01ea8a6de feat(atm-escolinha): tela de login Athletic Map 2026-09-25 01:06:42 +00:00
deploy 6382f9047d feat(atm-plataforma): tela de login Athletic Map 2026-09-25 01:04:19 +00:00
deploy c65e858fb6 feat(molde): o realm nasce em portugues do Brasil
internationalizationEnabled vem FALSE por padrao no Keycloak, e ai ele cai no
en — o e-mail sairia em ingles mesmo com o emailTheme certo. defaultLocale
pt-BR e supportedLocales so pt-BR: uma opcao so nao mostra seletor de idioma na
tela de login.
2026-09-25 00:48:23 +00:00
deploy 91920edff8 feat(escolinha): o Keycloak proprio monta o tema de e-mail
Ate agora o cliente deste tenant recebia o e-mail de fabrica em ingles,
enquanto os tenants novos ja recebiam o da marca.
2026-09-25 00:45:47 +00:00
deploy 39ba5f8b39 feat(plataforma): tema de e-mail Athletic Map 2026-09-25 00:45:08 +00:00
deploy 16af89868a fix(molde): os temas no REALM, e nao dentro do cliente
Minha insercao anterior casou por substring e caiu no objeto do cliente spa,
onde loginTheme e emailTheme nao querem dizer nada — entao um tenant novo
continuava nascendo com a tela de fabrica, e o commit anterior dizia o
contrario.

Refeito carregando o JSON, tirando as chaves de onde nao pertenciam e provando
que o resto do documento e identico antes de gravar.
2026-09-25 00:37:54 +00:00
deploy 690175d6cf feat(molde): o realm do tenant nasce com os temas de login e de e-mail
O loginTheme eu tinha editado so na copia local e nunca empurrado — um tenant
novo ainda nasceria com a tela de fabrica. Vai junto com o emailTheme.
2026-09-25 00:36:17 +00:00
deploy 16e805cc35 feat(plataforma): o Keycloak monta o tema de e-mail Athletic Map
Sao quatro arquivos em tres diretorios, e ConfigMap nao tem diretorio: as
chaves sao achatadas e o items[].path do volume remonta a hierarquia.
2026-09-25 00:33:40 +00:00
deploy f26f4a4559 feat(plataforma): tema de e-mail Athletic Map 2026-09-25 00:32:56 +00:00
deploy 62aa13bbb1 fix(molde): a SPA precisa do NOME COMPLETO dos servicos
O nginx roteia /bff e /api com proxy_pass de variavel, e ai resolve por
requisicao usando a diretiva resolver. O resolver do nginx nao le os dominios
de busca do /etc/resolv.conf: pergunta o nome cru ao CoreDNS, que responde
NXDOMAIN para servico-bff.

O sintoma engana: 502 com could not be resolved no log do nginx, enquanto
getent hosts servico-bff dentro do MESMO pod resolve — porque o getent usa o
search e o nginx nao. E por isso que o escolinha sempre usou FQDN aqui.
2026-09-24 23:50:28 +00:00
deploy 155ebbcd99 feat(tenant): os dois clientes pagos recebem o BFF, a cota nova e as imagens
Renderizado do molde consolidado. Sem o BFF a SPA abria vazia: /bff devolvia
502 e e ele quem a SPA chama para quase tudo.
2026-09-24 23:43:00 +00:00
deploy 935b6c65f0 feat(molde): o BFF, a cota que o comporta, o tema de login e as imagens do escolinha
O tenant provisionado subia com a tela de login de fabrica e o sistema vazio.
Quatro mudancas, medidas contra o escolinha que e o que funciona:

- 90-servico-bff.yaml: o quinto Deployment. A SPA chama o BFF para quase tudo;
  sem ele /bff devolve 502. As URLs apontam para os RUNTIMES, e nao para os
  treze servicos — e a diferenca deste molde para o do escolinha.
- a cota sobe para 10 pods e 2Gi: com quatro Deployments o tenant ja usava
  1232Mi de 1536Mi, e o BFF pede 256Mi. Caberia em repouso e estouraria no
  primeiro rollout.
- loginTheme athleticmap-v2 no realm, com o tema montado no Keycloak
  compartilhado.
- imagens alinhadas: frontend 2.67-csp-script e os runtimes 1.2-auditoria.

O que NAO mudou, e por que: ATM_API_URL continua no runtime-operacao e o
Ingress continua com uma rota. Os dois estao certos — o nginx da SPA roteia
/bff e /api por conta propria, e ATM_API_URL e o destino do que nao pertence a
grupo nenhum, hoje o webhook em /api/public. O cabecalho do molde ja dizia.
2026-09-24 23:42:16 +00:00
deploy d56a72ac5d feat(plataforma): o Keycloak compartilhado monta o tema Athletic Map
Vale para TODO tenant provisionado: eles nao tem Keycloak proprio, usam este,
um realm cada. O tema vem por ConfigMap e nao por imagem porque o login.ftl traz
as imagens em data URI — o ConfigMap e montado read-only sobre o diretorio e nao
sobra resources/ para o Keycloak servir.
2026-09-24 23:36:37 +00:00
deploy 8798cb85c1 feat(atm-plataforma): tela de login Athletic Map 2026-09-24 23:34:07 +00:00
deploy 51072c153e feat(molde): frontendUrl no realm do tenant
Sem ele o Keycloak monta os links e o iss com o KC_HOSTNAME global
(auth-plataforma), e os runtimes do tenant validam contra ATM_ISSUER, que o
molde define como auth.athleticmap.com. Os dois tem de bater.

Nao da para resolver so no KC_HOSTNAME porque ele e um so e a plataforma
depende do valor antigo. Dai o frontendUrl por realm, que e para isto.
2026-09-24 23:10:49 +00:00