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 — gaps e riscos

Gaps e riscos do VEK1

Análise de lacunas. Versão prévia (2026-05-19) tinha vários gaps que viraram features — atualizado pós-sprint api-first.


Resolvidos desde 2026-05-19

Gap antigo Como resolveu
GAP-1 ERP/estoque ao vivo ✅ PR #62 bidirectional stock sync (outbound HMAC + inbound webhook). ERP customer-owned conecta via store_stock_sync_settings.
GAP-2 Processamento PDF/Word placeholder ✅ vek1-api /process-file extrai texto real (PDF chunking via pdfplumber + CSV). Embeddings reais via bge-m3.
GAP-4 Multi-usuário 🟡 Ainda 1:1 user:company. Não trabalhado.
GAP-5 Atualização automática catálogo ✅ Stock sync bidirectional cobre o caso. CSV manual continua opção.
GAP-6 Analytics conversa 🟡 Tem messages_history + lead_events + audit_log + token_usage, mas dashboard de conversation analytics não construído.
GAP-8 Schema não reproduzível 🟡 Mudou pra db:push --force direto (zero migrations versionadas). Agent schema-migrator cuida do fluxo. Reproduzibilidade depende de schema.ts + init/01-init.sql + recreate-indexes.ts rodados em ordem.
GAP-9 Test coverage mínima 🟡 Vitest 4. Orders e2e + state machine + stock sync + abacate-pay + auth-adapter cobertos. UI components ainda quase descobertos.
GAP-10 Migração API → Actions parada ✅ PRs #65–#70 cutover completo pra apiClient. lib/supabase.ts virou thin shim.
GAP-11 Multi clients Supabase ✅ Supabase removido inteiro.
GAP-16 Segurança webhook WhatsApp 🟡 Sem signature ainda no webhook Evolution (Evolution não assina). Mitigação: webhook só processa shapes esperados (PR #52, #54, #55) + fromMe=true filter + LID handling. Risco residual: token de URL pública se vazar.

🔴 Gaps críticos / Alta severidade

GAP-3 Billing Stripe não implementado

Severidade: Crítica para negócio
Impacto: Beta gratuito custa do bolso. DeepSeek, VPS, Evolution, Resend sem cobrança aos lojistas. Não escalável.

Estado: Spec detalhada em pricing-design + arquivo docs/superpowers/specs/2026-05-20-pricing-stripe-design.md. Aguardando aprovação user pra implementar.

Caminho: 3 tiers Stripe + metered overage + topup com bônus 50%. Schema 4 tabelas novas + alter token_usage. Worker reporting cron 5min. UI em /settings#billing + /pricing público.

GAP-17 (NOVO) DATABASE_URL plaintext entre Vercel e VPS

Severidade: Alta segurança
Impacto: Senha do Postgres trafega em texto claro na internet em cada query Vercel. Sniffable.

Estado: sslmode=disable ainda. TLS pendente — opções: cert direto no Postgres + ajuste pg_hba, ou PgBouncer/nginx stream com TLS termination.

GAP-18 (NOVO) .env.docker no histórico vek1-api

Severidade: Alta segurança
Impacto: Commit bf11231 ainda carrega OPENAI_API_KEY, SUPABASE_ANON_KEY, TOGETHER_API_KEY vazadas. Repo público. Não rotacionadas (pelo menos não documentado).

Caminho: rotate todas as 3 keys + git filter-repo ou git filter-branch pra remover do histórico.

GAP-23 (NOVO) Evolution API (Baileys) é canal não-oficial

Severidade: Alta estratégica
Impacto: Todo WhatsApp do produto roda em Baileys (engenharia reversa) via container Evolution self-hosted. Risco de ban do número a qualquer momento, sem SLA, sem suporte oficial Meta, e bloqueia features novas (templates, flows, interactive messages, click-to-chat ads). Lojistas que escalam não toleram número banido.

Decisão (2026-05-27): migrar pra WhatsApp Cloud API oficial com destino Solution Partner Meta (vek1 paga conversations, cobra plano único com margem). Gate obrigatório: operar como Tech Provider primeiro (Meta exige histórico). Multi-tenant via Embedded Signup desde dia 1 (cada lojista conecta o próprio número, não a Kodama).

Caminho: vek1/whatsapp-cloud-api-migration — 2 trilhas paralelas:

  • Trilha A (técnica, ~5-8 semanas): setup Meta → schema dual-provider → client+webhook → app review → embedded signup → templates → piloto → rollout Tech Provider → activation Solution Partner (quando trilha B aprovar)
  • Trilha B (Solution Partner application, ~meses): material financeiro+legal+business → customer commitment letters → submissão Meta → entrevista → Solution Partner Agreement → linha de crédito Meta

Trade-offs aceitos: custo per-conversation, janela 24h, templates aprovados pra mensagens proativas, risco de inadimplência lojista, responsabilidade compliance por todos os lojistas.

GAP-13 Sem monitoramento de produção

Severidade: Alta operacional
Impacto: Backend down, webhook quebrado, embeddings falhando — descobre por reclamação do cliente.

Caminho: Sentry/Datadog/Logflare integration. Alert no Slack pra /health degraded. Latency monitor no fluxo WhatsApp.


🟡 Média severidade

GAP-4 Multi-usuário por company

user.id == company_profiles.id. Equipes (dono + marketing + suporte) precisam compartilhar senha. Inviável >2 funcionários.

Caminho: company_members(user_id, company_id, role) + RBAC em assert_owns_* do vek1-api + UI de convite.

GAP-6 Conversation analytics dashboard

Dados existem (messages_history, lead_events, token_usage). Falta UI de:

  • Volume conversa / dia / agente
  • Taxa de fechamento de order
  • Sentiment ou flag "pediu humano"
  • Funnel: contato → lead → order → fulfilled

GAP-14 Backup/DR não documentado

Postgres self-hosted. ./pgdata é o único estado. Sem backup automático documentado. Cair o VPS = perda total.

Caminho: cron pg_dump → S3 (MinIO mesmo ou outro), retention policy, restore drill documentado.

GAP-19 (NOVO) Cache auth single-instance

auth_service cache em memória só vale dentro do processo. Se escalar horizontal (multi-replica vek1-api), cache fica inconsistente — login pode falhar após mudança de session.

Caminho: Redis externo (mas mais infra), ou aceitar latência Postgres direto (tirar cache).


🔵 Baixa severidade / Tech debt

GAP-7 Pricing landing ≠ pricing spec

Landing hardcoded R$199/99/49. Spec billing tem Starter R$79 / Pro R$299 / Business R$899. Atualizar landing junto com implementação Stripe.

GAP-15 Onboarding wizard erro handling fraco

Falha em batch upsert mostra inline; user pode mudar step e perder. Tech debt UX.

GAP-20 (NOVO) openai SDK 5 nas deps sem uso

Frontend não chama OpenAI direto. Backend (vek1-api) usa Python SDK. Limpar.

GAP-21 (NOVO) Components soltos em components/ raiz

~25+ arquivos violando convenção components/[feature]/. Reorganizar quando feature toca cada um.

GAP-22 (NOVO) Test coverage UI quase zero

Vitest cobre business logic (orders, stock, auth-adapter). Components React não. Hard pra fazer com Cache Components — tests precisam mocks de cookies/connection.


Resumo

Severidade Antes (2026-05-19) Agora (2026-05-20)
🔴 Críticos 4 4 (3 novos: billing, TLS, secrets vazados)
🟡 Médios 5 4 (multi-user, analytics, backup, cache single-instance)
🔵 Baixos 7 5 (pricing drift, onboarding UX, deps cleanup, components org, UI tests)

Prioridades imediatas:

  1. Billing Stripe (GAP-3) — bloqueador comercial
  2. DATABASE_URL TLS (GAP-17) — bloqueador segurança
  3. Rotate keys vazadas (GAP-18) — bloqueador segurança
  4. Monitoring (GAP-13) — bloqueador operacional
notas relacionadas
carregando…