Elquer Carlos

Kmarote: faxina de legado em quatro fases, 196 funções mortas e o redesenho da Meus Canais v2

Faxina de legado do Kmarote em 4 fases (26 commits, 196 funções mortas) e o redesenho da tela Meus Canais v2.

Essa execução cobriu dois dias de uma vez — a run do devlog de ontem à noite não completou, então o cursor pegou 3 e 4 de julho juntos. Foram dois dias intensos em duas frentes bem separadas: uma faxina geral no legado da Kmarote (26 commits no total) e o redesenho da tela inicial do módulo de postagens, a Meus Canais v2.

A decisão: limpar antes de construir

Com o plano de assinatura SaaS já validado nos dias anteriores, decidi que antes de continuar construindo era hora de limpar: “Antes de seguirmos no desenvolvimento da plataforma, precisamos limpar código legado, banco e afins.” Propus um plano em fases — primeiro o banco (tabelas que nunca são usadas), depois o código morto, e do que sobrasse, decidir item a item o que fazia sentido manter. O Claude Code varreu o schema contra o código e voltou com a lista completa: todas as tabelas, quais nunca são utilizadas e, das utilizadas, para quê.

Fase 1: 19 tabelas em quarentena — rename, não drop

Deixei uma regra explícita antes de começar: nada de DROP. Quarentena via RENAME, reversível — “Rename é aceitável.” Saíram 19 tabelas órfãs do caminho numa única migration; o backup e a aplicação ficaram comigo: “faça commit que farei backup e aplicarei migration.” De brinde, a varredura achou um bug real: o módulo de FAQ estava quebrado porque o arquivo de funções nunca era carregado no bootstrap. O fix saiu commitado na sequência.

Fase 2: 196 funções mortas, 18 páginas e o fim do testes/

A fase de código morto rodou com um scanner de uso de funções em passada única (via token_get_all do PHP) e saiu em lotes temáticos:

  • 24 funções de posts/arquivos
  • 34 de perfil/KYC
  • 58 de produções/mídia
  • 35 do financeiro
  • 7 de bot/grupos
  • 38 de usuários/misc

No total, 196 funções mortas removidas, mais 18 páginas mortas e 4 módulos JS órfãos. E o diretório testes/ inteiro saiu do repositório. Sobre esse último, bati o martelo: “tudo relacionado a testes deve ser no qa. testes/ é legado e deve ser removido.” Foram 11 commits registrados no documento de execução da limpeza, e pedi push pra validar tudo no servidor de desenvolvimento (<PRIVATE-HOST>).

Fase 3: o corte dos módulos, item a item

Pedi ao Claude Code perguntas objetivas sobre os módulos candidatos a remoção e respondi na lata: “1 - Remover. 2 - Remover. 3 - Remover…” Caíram de vez:

  • o bot do Telegram
  • o fluxo de documentos manuais pré-Didit (o KYC antigo)
  • o módulo de roteiros/reels
  • o feed social de posts
  • o app standalone de checkout
  • os gateways legados Iugu, Stripe e Pagar.me — coerente com a decisão da véspera de ficar 100% Asaas

Um único sobrevivente, com ressalva: a importação via Google Drive e outras URLs — “deve ser refatorado. Porém, é importante para nosso sistema.” A fase 1b fechou o ciclo: re-scan do banco depois dos cortes, mais uma leva de tabelas em quarentena e a remoção dos usos residuais do fluxo de documentos.

Codex e Claude Code no mesmo repo — sem colisão

Momento de orquestração que merece registro. Pedi ao Codex commit e push da fase de centralização de QA. O Codex recusou o atalho do git add -A, montou o staging explícito arquivo a arquivo e, no meio do processo, detectou uma mudança concorrente: o HEAD do repositório tinha avançado — o Claude Code, no outro fluxo, já havia publicado um commit contendo toda a fase de QA junto com a validação do planejamento SaaS (as 23 decisões de anteontem). Worktree limpo, nada a commitar: o Codex se recusou a duplicar trabalho e encerrou. Dois agentes no mesmo repositório, sem pisar um no outro.

Meus Canais v2: pesquisa, plano auditado e a rodada de prints

A segunda frente foi a tela inicial do módulo de postagens. O objetivo que defini: “que o usuário tenha uma visão completa do estado do canal, agendamentos e ações” — com pesquisa de como plataformas de gestão de publicações tratam essa tela. O Claude Code despachou dois subagentes: um explorou o módulo inteiro (roteamento, estrutura do card, camada de dados), o outro desenhou o plano de implementação — que só passou depois da auditoria de regras obrigatória (existe um hook que bloqueia a saída do plan mode se o plano não tiver a seção de auditoria). A implementação veio com mockup HTML, seed de dados de teste, screenshots automatizados via Playwright e teste da lógica de estado dos canais.

Na noite seguinte veio a rodada de prints. Abri com elogio — “Tela ficou muito boa” — e emendei a lista honesta de quem olhou como usuário:

  • o termo “Fila parada” pode sumir
  • a legenda do calendário (“2º dia com agendamento”, “dia de postagem livre”, “fora da rotina”) confunde mais do que explica
  • o botão “Agendar corte” está escondido demais e deve virar um “Agendar” único que abre as duas opções
  • o nome do canal está sobrepondo o calendário
  • as cores estão semanticamente invertidas — verde deveria significar “livre para agendar”, não o contrário

Estado ao fim do dia

A faxina de legado está commitada e validada — 26 commits, 19 tabelas em quarentena, 196 funções mortas removidas, módulos inteiros cortados item a item. A Meus Canais v2 segue em aberto: a tela nova ainda não tem commit, com a lista de ajustes de UX levantada na rodada de prints como próximo passo.


Estatísticas do dia:

Fontes desta execução:

  • claude.ai: 0 conversas
  • Claude Code Windows: 3 sessões em [kmaroteApp] + 2 subagentes (fora as sessões do próprio devlog)
  • Codex Windows: 1 sessão em [kmaroteApp]
  • Claude Code Larissa: não lido (SSH inacessível nesta run)
  • Larissa drops: 0 arquivos
  • Git kmaroteApp: 26 commits
  • Git Larissa: não lido (SSH inacessível)
  • Git elquercarlos: 1 commit (devlog anterior)

Atividade no PC (ActivityWatch):

  • Tempo ativo: 8h14min (de 78h40min de janela total agregada; AFK: 70h26min)

Por categoria:

  • Coding: 3h16min
  • Uncategorized: 1h39min
  • Larissa Project: 1h06min
  • AI Chat: 1h06min
  • Browsing: 54min
  • Communication: 14min

Top apps: Chrome (4h39min) · Antigravity IDE (3h09min) · WhatsApp (8min)

Top sites navegados: painel da Sheer (27min) · Instagram (19min) · claude.ai (14min) · painéis internos da Kmarote (11min)

Fim do ato