Elquer Carlos

Grok V1 entregue de madrugada, tarde inteira caçando três bugs no mesmo modal

Grok V1 concluído pelo Claude Code enquanto eu dormia; tarde resolvendo paste, CSRF 403 e scroll mobile no modal de agendamento.

A madrugada terminou com o Claude Code entregando o que a sessão anterior não tinha conseguido finalizar — o contexto havia estourado com a feature do Grok V1 meio implementada. A continuação fechou o trabalho.

Grok V1 — implementação completa

O commit 7345e9d3 fechou o Grok V1. Um botão na tabela de plataformas do kmaroteApp abre um modal com campos estruturados para configurar como o Grok vai gerar conteúdo para aquela plataforma específica:

  • Nome da IA
  • Estilo de título
  • Keywords por nicho
  • Comprimento do conteúdo
  • Instrução especial
  • Prompt livre (override total — se preenchido, ignora todos os campos acima e passa direto para o modelo)

A plataforma Sheer já saiu pré-configurada com suas regras.

Logo depois vieram dois documentos gerados pelo Claude Code:

  • docs/dev/sistemas/sistema_grok_prompt.md — fluxo completo em 8 passos, blocos do prompt, arquivos responsáveis, todas as AJAX actions, schema das migrations
  • Seção nova em sistema_postagem_plataformas.md integrando o Grok ao restante da arquitetura

Commit bc187123.

Investigação da fila — postagem 621

Com o Grok V1 no ar, ficou uma dúvida: por que a postagem 621 não saía da fila depois de agendada? O comportamento parecia bug no modal de agendamento.

Fui investigar a query de ordenação da fila em canal_postagens.ordem_fila_em e os dados do EstruturaKmarote.sql. A causa não estava no agendamento: o pipeline FTP cria um job novo às 02:00 de cada madrugada com status na_fila. O job criado na madrugada de 31/05 empurrou 621 de volta ao topo da fila a cada dia. Era o cron noturno funcionando exatamente como projetado. Sem correção necessária — só entendimento do fluxo.

Format fix nas Tag IDs

Às 11:52, o Claude Code corrigiu o formato de saída dos Tag IDs no prompt da plataforma. O bloco de instrução passou a especificar o formato esperado de forma literal:

15 Tag IDs com seus respectivos textos (ex: 123, 234 - tag name, tag name1)

Commit a8a61587.

Tarde — três bugs no mesmo modal de agendamento

A tarde foi uma sequência de três problemas no mesmo lugar. Cada bug tinha causa separada e foi resolvido em sessão diferente do Claude Code.

Bug 1 — Paste de tags não funcionava (14:11)

O JavaScript do modal já processava tags por vírgula via keydown. Digitar tag1, gerava o badge corretamente. Mas colar (Ctrl+V) um bloco como tag1, tag2, tag3 não fazia nada — o texto entrava no campo e ficava travado sem virar badges.

Causa: não havia handler de paste. O evento keydown não é disparado ao colar.

Fix: adicionei um handler de paste que processa os tokens imediatamente ao colar.

Commit a8de8b28.

Bug 2 — 403 em buscar_tags.php (15:47)

Depois do fix do paste, ao colar tags, o console disparava 403 em /ajaxphp/buscar_tags.php.

Causa: resolverTag estava enviando window.CSRF_POSTAGEM — o token do contexto postagem_plataformas. Mas buscar_tags.php opera no contexto global_ajax e exige fetchGlobalAjaxComCsrf. O padrão correto está documentado em docs/dev/padroes/padroes_ajax_endpoints.md. Estava certo na documentação; foi aplicado errado no código.

O Claude Code confirmou o padrão nos docs e aplicou o fix.

Commit 1bc3ea28.

Bug 3 — Scroll não funcionava no mobile (22:22)

No mobile, o modal de agendamento não scrollava. O conteúdo ficava cortado na tela.

Causa: modal-dialog-centered combinado com modal-dialog-scrollable limita o espaço disponível em telas pequenas. O Bootstrap não entrega o scroll esperado nessa combinação.

O padrão nos outros modais do sistema usa modal-fullscreen-sm-down: tela cheia no mobile, centralizado no desktop. O Claude Code verificou os outros modais, confirmou o padrão e aplicou.

Commit c1a07cb7.

Hook agent — skills km-* desatualizadas

Às 23:23, identifiquei que o hook PostToolUse de verificação de padrões ainda apontava para kmaroteapp-patterns/SKILL.md — um redirect deprecated desde 2026-05-11. Naquela data a skill monolítica foi dividida em 6 skills focadas: km-php-security, km-css-bootstrap, e outras quatro, cada uma com escopo bem definido.

O Claude Code atualizou o settings.json com roteamento por extensão e path, reescreveu o redirect deprecated e reforçou o CLAUDE.md.

Commit b4a82fcb.

Botão limpar tags e bug no redirect

Em paralelo com o bug 3, outra sessão do Claude Code trabalhava no mesmo modal. Um subagente identificou um bug separado: o formulário enviava os dados via POST AJAX corretamente, mas depois redirecionava o usuário para HOME com todos os dados na query string GET. Os dados da postagem ficavam expostos na URL.

Dois commits fecharam isso:

  • 561fbe61 — botão “limpar tags” adicionado ao modal
  • fd0110da — redirect corrigido; handler de limpar tags adicionado

Pendências

Larissa inacessível hoje — SSH indisponível durante todo o dia. Zero sessões, zero commits no repo Larissa. A próxima etapa antes de escalar o Grok V1 é validar com uma postagem real em produção.


Estatísticas do dia:

Atividade no PC:

  • Tempo ativo: 2h 29min
  • AFK: 24h 37min
  • Janela total monitorada: 27h 7min

Por categoria:

  • Coding: 1h 12min
  • Larissa Project: 39min
  • Uncategorized: 34min
  • Communication: 2min
  • Browsing: 2min

Top apps: Antigravity IDE (1h 12min) · Chrome (1h 10min) · FileZilla (2min) · WhatsApp (1min)

Top sites navegados: <PRIVATE-HOST> (admin) · <PRIVATE-HOST> (banco) · grok.com · youtube.com · google.com

Trabalho com IA:

  • Conversas claude.ai: 0 (0 mensagens)
  • Sessões Claude Code: 12 (kmaroteApp)

Código produzido:

  • Commits: 7 (kmaroteApp) — a8a61587, a8de8b28, 1bc3ea28, c1a07cb7, b4a82fcb, 561fbe61, fd0110da
Fim do ato