Skip to content

fix(portal): derivar last_used_at dos tokens do ai_search_log#144

Merged
BrunooMoniz merged 1 commit into
mainfrom
fix/brain-usage-from-log
Jun 18, 2026
Merged

fix(portal): derivar last_used_at dos tokens do ai_search_log#144
BrunooMoniz merged 1 commit into
mainfrom
fix/brain-usage-from-log

Conversation

@BrunooMoniz

Copy link
Copy Markdown
Owner

Bug

O card "Assistentes conectados" e o banner "Saúde do cérebro" liam account_api_tokens.last_used_at, que nunca é escrito em lugar nenhum do código (zero UPDATE ... last_used_at). Resultado: todo assistente aparecia como "nunca usado" e o painel dizia "Nenhuma IA usou seu cérebro ainda" mesmo com buscas reais já registradas em ai_search_log.

Fix

listMcpTokens agora deriva last_used_at de MAX(ai_search_log.ts) casando client = COALESCE(label, 'Assistente') (o mesmo rótulo que index.ts grava no log a cada request). GREATEST preserva a coluna caso um write path futuro a popule. Sem migração e sem mudança de front: corrige os dois fronts (portal/app.js legado e web/ Next) de uma vez e já reflete o uso histórico, não só buscas futuras.

Verificação

  • npm run build limpo, 1248 testes verdes (6 novos: derivação por client=label, fallback "Assistente", null quando nunca buscou, isolamento por conta).
  • Query validada read-only contra o Postgres de produção: retorna 2026-06-17 21:23 pro token "Outra IA" (antes NULL).

Limitação conhecida (fora de escopo)

Conexões só-Claude.ai (OAuth, sem token bearer na conta) ainda não aparecem na lista nem zeram o banner sozinhas. Isso é o Bug 1 (persistir conexões OAuth por conta) e fica para um PR separado.

🤖 Generated with Claude Code

O card "Assistentes conectados" e o banner "Saúde do cérebro" liam
account_api_tokens.last_used_at, que NUNCA é escrito em lugar nenhum do
código. Resultado: todo assistente aparecia como "nunca usado" e o painel
dizia "Nenhuma IA usou seu cérebro ainda" mesmo com buscas reais
registradas em ai_search_log.

listMcpTokens agora deriva last_used_at de MAX(ai_search_log.ts) casando
client = COALESCE(label, 'Assistente') (mesmo rótulo que index.ts grava no
log por request). GREATEST preserva a coluna caso um write path futuro a
popule. Sem migração, sem mudança de front: corrige os dois fronts
(portal/app.js legado e web/ Next) de uma vez e já reflete o uso histórico.

Verificado: build + 1248 testes verdes; query validada contra o Postgres
de produção retornando o last_used_at esperado.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@BrunooMoniz BrunooMoniz merged commit 4210305 into main Jun 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant