Elquer Carlos

Kmarote: wizard de primeiro login refatorado, passaporte no cadastro e auditoria de tokens

Wizard de primeiro acesso virou exclusivo de criador, cadastro ganhou suporte a estrangeiros via passaporte, e auditei o custo de tokens das automações.

Dia inteiro dentro do Kmarote com duas frentes rodando em paralelo: o Claude Code (no Antigravity IDE) reescrevendo o fluxo de primeiro login do criador, e o Codex limpando o layout do painel admin. No meio do dia, uma parada para auditar quanto token as automações estavam queimando sem necessidade.

Wizard de primeiro login virou exclusivo de criador

A peça mais trabalhosa do dia. O wizard de primeiro acesso ainda dava ao usuário a opção de escolher o nível do perfil — criador, usuário comum, afiliado. Decidi cortar tudo isso: só faz sentido continuar o fluxo se a conta é de nível criador.

Antes de qualquer mudança, mandei o Claude Code mapear o que existia. Três agentes de leitura rodaram em paralelo, cada um cobrindo uma parte diferente: a mecânica de login (admin/login.php, criação de sessão, rate limit), o que torna o primeiro acesso especial (campos de perfil, marcação de primeiro login concluído), e o gate de KYC com a Didit que vem logo depois. Esse levantamento virou um handoff em docs/planejamento/HANDOFF_primeiro_login_kyc.md, que serviu de base para o resto.

Com o mapa em mãos, a refatoração foi direta: removi a lógica de escolha de nível inteira do primeiro_login_criador.php, deixando só o caminho do criador. Para contas que caírem nesse fluxo com um nível diferente — só pode acontecer por erro de configuração —, o sistema agora exibe um alerta informando que ainda não há opção disponível para aquele nível e orienta a voltar depois ou falar com a equipe. Sem quebra silenciosa.

Uma cobrança que repeti várias vezes ao longo da sessão: antes de propor ou perguntar qualquer coisa que dá para validar olhando, validar. “Acesse o banco, leia o código e só depois apresente as perguntas.” O Claude Code consultou o banco local de verdade — não os .sql — antes de trazer qualquer decisão.

Brasileiro ou estrangeiro: passaporte entra no cadastro

Em cima do campo de CPF, adicionei um select com duas opções — Brasileiro (default) e Estrangeiro. Brasileiro mantém o input de CPF visível e obrigatório; ao trocar para Estrangeiro, o CPF dá lugar a um campo de Número do Passaporte.

Isso abriu uma sequência de decisões de modelagem que resolvi com o Claude Code:

  • Criei o campo tipo_nacionalidade no perfil vivo, com migration própria (2026_06_23_add_tipo_nacionalidade.sql). Tanto CPF quanto passaporte atualizam esse campo.
  • O passaporte é salvo no perfil vivo seguindo o mesmo padrão já existente no projeto — confirmei no código porque não estava óbvio.
  • A checagem de CPF duplicado passa a valer para brasileiro. Estrangeiro não entra nessa validação.
  • Uma trigger nova (2026_06_23_trigger_documento_estrangeiro.sql) para tratar o documento estrangeiro no banco.

A tela de boas-vindas que existia antes, só texto e sem função real, foi simplificada. Se não agrega nada além de parede de texto, é fricção a menos no onboarding.

No fim do ciclo, documentei o fluxo de cadastro completo até a home em docs/dev/sistemas/fluxo_cadastro_criador.md — sem histórico de decisões, refletindo 100% o estado atual. Commits do dia no kmaroteApp: remover CPF do cadastro — fluxo de etapa única e concluir onboarding de criador estrangeiro e documentar fluxo.

Codex no painel admin: legado fora, padrão atual dentro

Em paralelo, coloquei o Codex para trabalhar o layout do painel admin. Instrução dura de propósito: ler o padrão e o caminho documentado antes de tentar qualquer coisa, não assumir nada, não presumir nada, fazer só o que estiver explicitamente documentado. Nada de criar classe CSS nova — remover todos os elementos legados de uikit e socimo e aplicar o padrão atual do projeto. O Codex também importou o EstruturaKmarote.sql no banco local quando precisou sincronizar o schema. Saiu no commit atualizar layout do painel admin.

Quanto de token as automações estão queimando

No meio do dia, parei para auditar custo. Pedi ao Claude Code para verificar hooks e scripts que pudessem estar consumindo token a cada tarefa sem compensar. O resultado concreto: tirei o code-review-graph do PostToolUse automatizado — rodava a cada edição e nem sempre valia o gasto. O resto foi consolidado só onde havia certeza de que continuaria funcionando. Commit: remover code-review-graph de PostToolUse automatizado.

Pendências

  • SSH do servidor Larissa ainda não resolveu o host — sem acesso ao Git da Larissa no dia.
  • Fluxo de KYC com a Didit mapeado no handoff mas ainda não integrado no novo wizard.

Estatísticas do dia:

Atividade no PC:

  • Tempo ativo: 4h35min
  • Top apps: Antigravity IDE (1h58min) · Chrome (1h31min) · WhatsApp (34min) · Codex (30min)
  • Top sites: ambiente local Kmarote (23min) · 127.0.0.1 (11min) · claude.ai (5min)

Por categoria:

  • Coding: 2h18min
  • Uncategorized: 1h04min
  • Communication: 27min
  • Larissa Project: 23min
  • AI Chat: 23min

Trabalho com IA:

  • Conversas claude.ai: 0 (sem export novo)
  • Claude Code Windows: 8 sessões
  • Codex Windows: 2 sessões

Código produzido:

  • Commits: 4 (kmaroteApp) + 1 (elquercarlos)

Devlog do dia:

  • 822 palavras consolidadas
Fim do ato