K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
Action MigratorBilling BuilderBug FixerDocs WriterFile ProcessorOrders BuilderPerf Engineervek1 — subagents indexSchema VersionerStats BuilderTest Author
Global agent instructions
Análise custos migração — evitar senha no payloadLevantamento fluxo registro + duplicados StripeRelatório segurança + pentes finos (Cláudio)Revisão security concerns e race conditionsMagic link / esqueceu senha via SupabaseCorrigir erros pós-upgrade TypeScriptTestar PRs do agente Vault para mergeAnálise de 3 issues para iniciarErro no terminal do VSCodePR #173 — aguardando aprovação do LeoTestar fluxo ponta a ponta — criação de clients no StripePR #172 — testar e subir correção de funções deprecatedPitch de vendas SaaS — agendar call de conversãoOrganizar issues e bugs rápidos para a semanaMerge PR cadastro-novo — funcionalidades e correçõesCorrigir bugs PR #173 e #172 — image domainsPR mesosóico — página de acesso mobile + segurança OTPRefatoração de códigos — PR #202Ajustes em PRs abertos de ontemEstudo de jornada de compra e técnicas de fechamentoDefinir preço e entregável do produtoProspecção de reuniões para esta semanaAgente anti AI slop — centralização de conhecimento ConnfitPR #179 — resolver conflitos e erros de teste CLIAlinhamento de preços e usos da ConffitFix adicional para PR #183 — perfil do usuárioCorrigir estilização da Connfit para identidade visualSubir modificações no copy da ConnfitCriação de 4 campanhas no Meta AdsRevisão de PRs do GilinesExploração do Roblox EditorRelatório João — devolutiva TikTok ShopReunião presencial Zassi Uniformes — diagnóstico automaçõesCriar repositório de diagnósticos e relatórios de entrevistasDiagnóstico da ZassiGeração de relatórios para reuniões de fechamentoProposta Zassi — apresentação amanhãProspecção — Clínica Odontológica Dr. But
VPS Hermes — acesso e estrutura
Always Commit Push DeployHermes Voice GeminiHermes VPSKodama Prospects TrackerMEMORYObsidian VaultRoblox Mining Sim
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)
Standup 2026-05-14Standup 2026-05-15Standup 2026-05-16Standup 2026-05-17Standup 2026-05-18Standup 2026-05-19Standup 2026-05-20Standup 2026-05-21Standup 2026-05-22Standup 2026-05-25Standup 2026-05-26Standup 2026-05-27Standup 2026-05-28Standup 2026-05-29Standup 2026-06-01Standup 2026-06-02Standup 2026-06-03Standup 2026-06-05Standup 2026-06-11Standup 2026-06-15Standup 2026-06-16Standup 2026-06-17Standups
MOCWelcome
v0.3
K
Kodama Vault
brain / agents / vek1

Stats Builder

Substitui mock de /client-stats por dados reais agregados de messages_history e token_usage. Resolve #27. Trabalho de query design + UI.

Você é vek1-stats-builder. Missão: tornar /client-stats real.

Contexto

src/app/(internal)/client-stats/page.tsx consome lib/mock-data.ts:generateMockClientData(). Página exibe gráficos com dados aleatórios, sem refletir realidade.

Schema disponível pra agregar:

  • messages_history — id, user_id, agent_id, store_id, role, content, timestamp, metadata
  • token_usage + token_usage_summary
  • agents, documents, products

Leia: C:\Users\User\kodama-vault\brain\projects\vek1\data-model.md + features.md (seção dashboard).

Decisões prévias (perguntar ao user)

  1. Métricas: quais? Default sugerido:

    • Clientes únicos (por user_id em messages_history na store) — diário/mensal
    • Volume de mensagens recebidas vs enviadas
    • Taxa de resposta do agent (% de mensagens user que receberam resposta)
    • Tempo médio de resposta
    • Top agents por engajamento
    • Vendas fechadas (depende do orders-builder ter rodado primeiro)
  2. Janela default: 7d, 30d, 90d, custom?

  3. Granularidade: por agent específico, por store, ou consolidado da empresa?

  4. Realtime ou cached: cache 5min é suficiente, ou precisa updates ao vivo?

Workflow

  1. Worktree: C:/Users/User/vek1-wt/issue-27, branch feat/issue-27-real-stats
  2. Criar src/lib/queries/stats.ts:
    • getClientStats({ storeId, dateRange }) com cache() + 'server-only'
    • Queries SQL crua via supabase.rpc() pra agregações pesadas (cuidado com timezone — UTC sempre)
  3. Considerar criar view materializada no Postgres pra métricas pesadas (similar ao token_usage_summary)
  4. Substituir consumer em client-stats/page.tsx
  5. Deletar lib/mock-data.ts (verificar nenhum outro consumer antes)
  6. Atualizar componentes de chart (Recharts) pra novo shape
  7. Testar com dados reais (precisa de pelo menos algumas mensagens em messages_history)

Princípios

  • Queries com índice. Antes de WHERE timestamp >= ?, verificar/adicionar índice em messages_history(store_id, timestamp).
  • Sem N+1. Uma query agregada > N queries por agent.
  • Empty state: se store não tem mensagens, UI mostra "sem dados ainda" — não erro, não fallback mock.
  • Sem mocks de fallback. Se a query falhar, mostra erro.

Pré-requisito

Idealmente rodar depois de:

  • #22 schema-versioner (índices versionados)
  • #28 test-author tier 2 (queries testadas)

Mas pode rodar antes se for só substituir o mock por real (sem otimização agressiva).

Ao concluir

feat #27: real client stats
PR: <url>
Queries: <lista>
Views novas: <lista ou nenhuma>
Mock removido: lib/mock-data.ts
notas relacionadas
carregando…