Elquer Carlos

Frontend usuario/ removido, bug do reenviar codigo e o KYC que aprova sem validar dados

Remoção do frontend legado usuario/, bug de includes quebrados resolvido com log real, e descoberta preocupante no fluxo de KYC do Didit.

Esta janela cobre quatro dias de trabalho no Kmarote — de 2026-06-17 a 2026-06-21 — mas o volume real de decisões e código está concentrado no dia 21. Os dias anteriores foram iterações densas em diagnóstico e validação sem novos commits no repo; o dia 21 trouxe seis commits e três decisões que merecem registro permanente.

Contexto: 2026-06-17 a 2026-06-20 — cadastro e validação

Os quatro dias anteriores ao 21 giram em torno de uma mesma frente: solidificar o módulo de cadastro do Kmarote. O trabalho incluiu:

  • Suporte a ponto (.) no campo de username (comum em endereços de email usados como identificador)
  • Correção do padrão de acesso centralizado em ['SQL'] que gerava inconsistências silenciosas
  • Início do fluxo de cadastro CPF-first — o criador chega com CPF em mãos, não com email
  • Iterações em email verification: expiração correta de tokens, race conditions entre validação e criação de usuário, integração com painel admin

O Claude Code passou por 198 interações numa janela só investigando edge cases de permissão e integridade de dados. A maior parte do trabalho foi diagnóstico sem commits — identificar por que algumas queries falhavam silenciosamente na camada de multi-tenancy. Comportamento correto (negar acesso a registros de outros usuários), logs insuficientes para rastrear quando estava errado.

Na janela de 2026-06-19 a 2026-06-20, o Claude Code capturou 268 mensagens em duas sessões do kmaroteApp, focadas em validação de email com verificação de domínio, tratamento de conflitos em registros duplicados e pipeline de acesso ao banco para operações de escrita.

Nenhum desses dias trouxe commits novos no kmaroteApp. O trabalho foi de investigação e preparação.

2026-06-21 — o dia que virou commit

Remoção do frontend usuario/

A decisão mais irreversível do dia: a pasta usuario/ saiu inteira do Kmarote.

O produto não vai mais ter tela separada para usuário comum. Todos os níveis de acesso entram pelo painel admin (<PRIVATE-HOST>). O ambiente de teste compartilha banco com produção mas carrega o beta; o painel admin é o produto vigente.

Antes de remover, pedi ao Codex que implementasse um redirect dentro da pasta usuarios/ apontando para o admin — comportamento correto para qualquer link antigo que possa existir em bookmark ou histórico.

O commit 3b48745f varreu para fora:

  • main.css com 5683 linhas
  • libs.min.css com 11 mil linhas
  • Biblioteca inteira de fontes do tema
  • Templates e JS legados de usuario/

A documentação foi atualizada no mesmo movimento: docs/dev/ambientes.md, AGENTS.md, README.md.

Antes disso o Codex apresentou um diagnóstico inventado sobre a URL de um print — disse que era “MIR” sem nenhuma referência no código. Cortei direto:

“De onde tu tirou que a URL do print é MIR? Onde no código confirma? Caso tenha presumido, refaça e só traga informação confirmada. Sem presumir nem assumir nenhum ponto.”

Padrão recorrente nesta janela: o Codex tende a avançar com hipótese antes de varrer o código. Cada vez que isso aconteceu, cortei antes que virasse commit.

Bug “reenviar codigo” — diagnóstico real só depois do log

A tela de confirmação de e-mail ficava em carregamento indefinido quando o usuário clicava em “reenviar codigo”. Pedi ao Codex para investigar — sem alterar nada, só fatos do código. A primeira tentativa foi especulação. Cortei:

“O motivo do carregamento me parece um chute, não há certeza no diagnóstico. Precisamos de certeza para somente depois definir qual será o caminho utilizado para correção.”

A resolução real veio quando puxei o log do servidor:

[Sun Jun 21 22:34:48 2026] [php:notice] Uncaught exception 'Exception' ...

Com o erro real, o caminho ficou óbvio. Quando a pasta usuario/email_templates/ foi movida para admin/email_templates/, os include/require em vários arquivos continuavam apontando para o path antigo.

Pedi: “busque todas menções a usuario/email_templates/ e altere para admin/email_templates/”.

O commit 37dbda32 corrigiu:

  • funcs/email.inc.php
  • funcs/db_usuarios_perfil.php
  • Templates HTML: boas_vindas.html, confirmar_email.html, enviar_redefinir_senha.html, retirada_concluida.html, retiradas_pendentes.html, sucesso_enviar_codigo.html

Lição que se confirma pela terceira vez nesta sprint: log de servidor antes de qualquer hipótese.

KYC Didit — aprovação com dados divergentes

O tema mais desconfortável do dia. Fui investigar onde o KYC do Didit altera o usuário no sistema — queria confirmar se o sucesso da verificação mexe em usuarios_perfil e usuarios, e qual seria o caminho certo para marcar verificado quando o CPF da conta bate com o que o Didit retornou.

O Codex tentou montar um plano sem ler a documentação do Didit. Cortei mais de uma vez:

“O plano não deve ser elaborado sem as informações completas.”

“A viabilidade do processo foi verificada junto à documentação do Didit?”

“Verificou nos padrões do projeto como deve ser feito a leitura da documentação?”

A descoberta apareceu na sequência. Perguntei direto: o KYC valida se os dados da conta enviada são os mesmos apresentados pelo usuário na verificação?

Resposta: não necessariamente. O Didit pode retornar Approved mesmo com dados divergentes entre o que a conta declara e o que o documento mostra.

Minha reação:

“Isso me parece sem lógica. Isso está claro na documentação?”

Virou pesquisa de mercado:

“Pesquise sobre padrões no uso do KYC no sistema. E verifique se nosso sistema segue o padrão do mercado. Estou preocupado de estar fazendo o processo de maneira ineficaz abrindo brechas para fraude.”

Não fechou. Fica como tarefa aberta para a próxima sessão.

Painel de contratos — download individual de imagens

Duas melhorias no ver_contrato_criador que estavam na fila:

Commit eaec3cd9: botão de download por foto (frente, verso, selfie) antes do botão “Baixar tudo” (que era chamado “Baixar imagens” antes desta alteração).

Commit dfd38520: nome dos arquivos baixados — PDFs, fotos individuais e ZIPs — agora usa o username do signatário, buscado via participante_perfil_id, com fallback para assinante_nome quando não tem perfil.

Gerador de títulos Grok — handoff e validação

Dois commits de documentação para o fluxo de geração automática de títulos via Grok:

Commit ba3f2e73: catálogo de perguntas e dados que o prompt usa.

Commit 66ef3e2b: handoff completo do gerador em docs-dev/Grok - Geracao de titulo/HANDOFF.md e dois scripts em dev-scripts/ para validar o prompt:

  • gerar_md_prompt_real.php — imprime o prompt real enviado ao Grok
  • gerar_md_validacao_perguntas.php

Pendências

  • KYC Didit: verificar se o sistema segue padrão de mercado e se há brecha de fraude na aprovação com dados divergentes. Não fechado.
  • Cadastro CPF-first: lógica de validação implementada, sem commits novos no período (últimos dias foram diagnóstico).
  • Email verification: race conditions e expiração de token — identificados, correções parciais, fila aberta.

Estatísticas do dia (geradas automaticamente):

Atividade no PC:

  • Tempo ativo: 5h 57min
  • AFK: 36h 25min
  • Janela total monitorada: ~31h

Por categoria (do que ficou ativo):

  • Uncategorized: 2h 42min
  • Browsing: 59min
  • Coding: 54min
  • Larissa Project: 46min
  • Communication: 32min
  • AI Chat: 2min

Top apps: Chrome (2h 39min) · Codex (1h 16min) · Antigravity IDE (45min) · WhatsApp (32min)

Top sites navegados: painel admin Kmarote (~23min) · Cloudflare dashboard (13min) · Facebook (6min)

Trabalho com IA:

  • Conversas claude.ai: 0
  • Sessões Claude Code Windows: 0
  • Sessões Codex Windows: 4 (kmaroteApp — 3 worktrees + tree principal)

Código produzido:

  • Commits: 6 (kmaroteApp) + 1 (elquercarlos/devlog)
Fim do ato