Elquer Carlos

kmaroteApp: cancelamento de assinatura no admin e auditoria de ponta a ponta do Asaas

Admin do kmaroteApp ganha cancelamento de assinatura e recorrência órfã; Codex audita o fluxo de pagamento Asaas de ponta a ponta.

O dia no kmaroteApp girou em torno de assinaturas, com duas frentes rodando em paralelo: eu mexendo à mão no caminho de cancelamento que faltava na tela de gestão, e o Codex fazendo uma auditoria estática do módulo de pagamento inteiro, sem tocar em nada.

O botão de cancelar que não existia (e depois cancelava em silêncio)

Comecei com uma pergunta prática: qual o caminho pra cancelar quatro assinaturas que estavam ativas. No Claude Code fui atrás e a resposta óbvia virou a próxima pergunta — esse caminho não devia estar na própria tela do admin? Devia. E não estava por inteiro.

A partir daí foram três correções encadeadas, cada uma expondo a seguinte:

  1. O caminho não existia na gestão de assinaturas. Adicionei o cancelamento de assinatura e também o de recorrência órfã — aquela recorrência que continua viva no Asaas mesmo depois que a assinatura do lado de cá já era pra ter encerrado. As duas pontas precisam morrer juntas, senão o Asaas segue cobrando.
  2. Linha CANCELADA com ativa=1 ficava sem saída. Um registro marcado como cancelado mas ainda com a flag de ativo não mostrava nenhum botão pra encerrar a recorrência. Estado inconsistente, tela sem ação possível. Corrigi pra que essa linha volte a ter o caminho de cancelamento.
  3. Cancelamento de recorrência falhava calado. O pior dos três: ao clicar em cancelar, quando dava erro no lado do Asaas, a tela não dizia nada — sumia o motivo. Fiz o erro aparecer com razão explícita, do tipo “conta sem assinatura ativa, ou a recorrência segue ativa no Asaas — ver log”. Sem mensagem, o operador não sabe se cancelou ou não.

Tudo validado contra o dump de produção (EstruturaKmarote.sql) e o ambiente real do <PRIVATE-HOST> antes de subir — os IDs de recorrência do tipo sub_<id> conferidos direto no banco e nos eventos do gateway. Três commits: o feat do caminho novo e dois fix das inconsistências que ele revelou.

Codex auditando o Asaas enquanto eu mexia no código

Em paralelo à mão no cancelamento, deixei o Codex rodando duas auditorias estáticas, as duas com a mesma regra: não altere nada, só reporte.

A primeira fechou o bugs.md — um relatório completo dos bugs do sistema que vinha de antes, agora consolidado. A segunda foi a mais densa: uma auditoria de ponta a ponta do módulo Asaas e de todo o fluxo de pagamento — documentação, código e banco — registrada em docs/planejamento/auditoriaasaas.md. O Codex foi fundo: conferiu se os crons de reconciliação e recarga de crédito checam SAPI/CLI corretamente, olhou o tratamento de exceções da Guzzle no gateway, os campos de cartão em contratar.php, o aceite de termos, a chave mestra de cripto, o pipeline pós-commit da assinatura.

Depois abri o docs/planejamento/auditoriaasaas.md no Claude Code só pra avaliar o conteúdo — de novo sem alterar nada. Gosto desse arranjo: o Codex produz o laudo, eu revalido em outra ferramenta antes de qualquer decisão. Auditoria de quem escreveu conferida por outro par de olhos antes de virar tarefa.

Decisão que fica registrada

O resultado do dia é essa divisão limpa: o que dava pra fechar com segurança (o cancelamento) foi commitado; o que é diagnóstico (as duas auditorias) virou documento pra decidir depois, sem pressa e sem mexer em produção no susto.

Fechamento

Sem correção pendente anunciada — os três fixes do cancelamento já foram commitados e validados contra produção. O que fica em aberto pra próxima rodada é decidir o que fazer com o conteúdo de bugs.md e docs/planejamento/auditoriaasaas.md, ambos prontos pra leitura mas sem prazo definido de execução.


Estatísticas do dia (geradas automaticamente):

Atividade no PC:

  • Tempo ativo: 4h36min na janela de ~24h (resto AFK, com a máquina ligada)

Por categoria (do que ficou ativo):

  • AI Chat: 1h24min
  • Communication: 1h08min
  • Uncategorized: 1h00min
  • Browsing: 29min
  • Coding: 24min
  • Larissa Project: 6min
  • Reading: 4min

Top apps: Chrome (1h24min) · WhatsApp (1h10min) · TaskBarHero (51min) · ChatGPT (Codex) (44min) · Antigravity IDE (24min)

Top sites navegados: facebook.com (15min) · chatgpt.com (9min) · my.sheer.com (7min) · asaas.com (4min)

Trabalho com IA:

  • claude.ai: 0 conversas (sem export novo na inbox)
  • Claude Code Windows: 4 sessões — 2 no kmaroteApp (cancelamento de assinaturas e revisão da auditoria Asaas) e 2 no elquercarlos, que foram a própria automação de devlog
  • Codex Windows: 2 sessões no kmaroteApp (relatório bugs.md e auditoria auditoriaasaas.md)
  • Claude Code Larissa: indisponível (host fora da rede)
  • Larissa drops: 0 arquivos

Código produzido:

  • Git kmaroteApp: 3 commits
  • Git Larissa: indisponível (host fora da rede)
Fim do ato