K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
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
vek1 — arquiteturavek1 — autenticaçãovek1 — contextovek1 — regras de copy e marketingvek1 — modelo de dadosvek1 — decisões técnicasvek1 — domínio e modelo de negóciovek1 — featuresvek1 — gaps e riscosvek1 — gotchasvek1 — integrações externasvek1 — pricing design (Stripe sub + topup)vek1 — atividade recentevek1 — roteiro de vendas (SDR → fechamento)vek1 — estado e maturidadevek1 — Migração Evolution API → WhatsApp Cloud API (Meta oficial)
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 / projects / vek1

vek1 — gotchas

Gotchas e armadilhas

Numeração estável; resolvidos ficam riscados com referência ao PR/commit que fixou.

Resolvidos pré-2026-05-20

  1. README/CHECKLIST mentem sobre stack de testes ✅ PR #40 (Jest → Vitest)
  2. Typo NEXT_PUBLIC__EVOLUTION_API_KEY (2 underlines) ✅ PR #33
  3. NEXT_PUBLIC_OPENAI_API_KEY vaza no client ✅ rota deletada em PR #43
  4. api/documents/route.ts filtra coluna inexistente ✅ rota deletada PR #38
  5. Duas regras divergentes "1 agente ativo por store" ✅ centralizado no vek1-api (PR #66+)
  6. lib/supabase.ts viola padrão Server Actions ✅ agora thin shim apiClient (PR #70)
  7. useCompanyProfile desloga em qualquer erro ✅ PR #36
  8. useCreateAgent caminho real, não Server Action ✅ unificado em apiClient PR #67/#69
  9. documents.embedding tipo errado ✅ Drizzle vector(1024) correto
  10. Múltiplos clients Supabase paralelos ✅ Supabase removido
  11. Lock files duplicados versionados — continua (bun.lock + package-lock.json)
  12. SUPABASE_PROJECT_ID não documentada ✅ Supabase removido
  13. /instance-settings na whitelist pública ✅ PR #34
  14. PPR sem Suspense ✅ PR #39 + #41 (Cache Components)
  15. Landing hydration bug ✅ PR #35
  16. Pricing landing ≠ pricing real — landing tem R$199/99/49 hardcoded; spec billing tem Starter R$79/Pro R$299/Business R$899. Drift até billing ser implementado.
  17. /agents/test/[id] duplicata morta ✅ PR #38
  18. Componentes soltos em components/ raiz — convenção components/[feature]/ violada por ~25+ arquivos. Continua.
  19. messages_history.role sem CHECK permanece — Drizzle define text livre; app convenção (user|assistant|tool|debug). Tolerado.
  20. Trigger bucket via INSERT em storage.buckets ✅ Supabase removido
  21. Apenas uma migration versionada → mudou: zero migrations versionadas; db:push --force direto. Risco de drift entre dev/prod resolvido por agent schema-migrator.
  22. Sem .env.example ✅ PR #37
  23. Wizard upload erro handling fraco — continua (falha em batch upsert mostra inline, user pode perder ao mudar de step). Tech debt.
  24. product_documents vestigial removida no PR #43
  25. product_events não plugada removida no PR #43
  26. Next 16 middleware.ts → proxy.ts ✅ PR #42

Novos (pós-cutover api-first)

27. DATABASE_URL via TCP plaintext

Senha do Postgres trafega em texto claro pela internet entre Vercel e VPS (porta 5434, sslmode=disable). Risco real. Pendente TLS (cert + key + pg_hba, ou PgBouncer/nginx stream TLS).

28. db:push --force dropa indexes não-Drizzle

hnsw vector indexes (documents.embedding, leads.profile_embedding) e unique constraints custom (leads (store_id, channel, external_id)) NÃO são definidos no schema Drizzle — Drizzle dropa em push destrutivo. Sempre rodar scripts/recreate-indexes.ts + re-aplicar init/01-init.sql (do repo vek1-api) após push. Agent schema-migrator cuida.

29. Better Auth manda camelCase, Pydantic exige snake_case

auth-http-adapter.ts converte com snakeKeys (out) + camelKeys (in) recursivamente. Se um campo novo for adicionado e endpoint vek1-api esperar camelCase (bug Pydantic), 422 silencioso. Sempre testar fluxo end-to-end de auth quando alterar shape.

30. Better Auth updateMany precisa de filtro manual

updatePassword chama updateMany(account, where=[userId, providerId='credential']). findManyRows retorna TODOS accounts do user (por userId só); filtragem pelo providerId é feita no adapter (30e1afa). Se outro provider for adicionado, validar lógica.

31. Verification reset-password usa findMany, não findOne

Better Auth chama findMany (não findOne) pra lookup de verification token no reset-password (e6c6ff0). Mapeamento findManyRows(verification) cobre identifier E value — se adicionar outro use case, alinhar.

32. LID privacy WhatsApp v2.3.x

Mensagem WhatsApp pode chegar com remoteJid em formato LID (*@lid) em vez de telefone real (*@s.whatsapp.net). Telefone real está em senderPn (PR #53) ou key.remoteJidAlt (PR #56). whatsapp-handler.ts tem fallback chain — se Evolution mudar shape de novo, ver agent evolution-debugger.

33. LLM hallucina product_id como slug

sales_assistant às vezes inventa product_id baseado em slug do produto. vek1-api create_order valida items contra products table e DROPA (fix(orders): drop fake product_ids before insert (FK 23503) — PR #60). Order pode terminar sem nenhum item se LLM hallucinou tudo. Prompt foi reforçado mas não 100%.

34. agents.stripe_product_id zumbi

Coluna no schema desde início, nunca preenchida. Mantida pra futuro billing. Não usar até spec Stripe ser implementada.

35. client-stats mock parcial

/client-stats ainda usa lib/mock-data.ts. Dados reais demandam billing implementado pra ter sentido de "cliente paga". Tolerado por enquanto.

36. Single OpenAI SDK 5 nas deps mas sem uso

Sobra do PR #43 cleanup. Backend (vek1-api) usa SDK Python direto contra DeepSeek; frontend não precisa. Remover em próxima limpeza de deps.

37. Lock files triplicados continuam

Pre-existing. bun.lock + package-lock.json (+ possivelmente pnpm-lock.yaml). CI usa Bun; devs em npm/pnpm causam churn de locks em PRs. Ideal: deletar package-lock.json + pnpm-lock.yaml, gitignore.

notas relacionadas
carregando…