K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesCriar IssueTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
amazon-arb-scoutcode-standards-auditordesign-master (subagent)erica-nardi-auditorfeature-auditorGlobal agent instructionskodama-hub-auditorAgente: kodama-hub-launch-qalanding-page-architect (subagent spec)meta-campaign-builder (subagent spec)need-context-auditorprospek-blog-auditor — gate editorial do blog do Prospekprospek-blog-author — autor do blog do Prospekprospek-campaign-manager — gerente de campanhas do Prospekprospek-content-director — diretor de conteúdo diário do blogProspek Demo RecorderSubagent — prospek-marketing-creativeprospek-qaprospek-social-producerprospek-social-publisherprospek-social-strategistroblox-sim-buildersageland-auditor (subagent spec)seo-geo-optimizerteam-leadervek1-auditor — subagent specvek1-styleguide-auditor
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. ButAlinhamento com ADRIANO sobre produtos e simulaçãoCombinar com Lauro os produtos do diagnósticoSolicitar recursos (vbucks) à INEDIA/ObiettoAnálise de issues do Kodama-Hub e início pelo vaultIssue KH03 — estudo de abordagem DockerKH-12 — script de correção e PR no kodama-hubTeste de despacho e agentes da vaultRemover issues 7, 9 e 10 do fluxo de trabalhoKH-15 — testar e preparar para Gilini testar em prod (Kodama Hub)VEK-1 — testar no WhatsAppBot local — testar localmenteEscrever issues para replicação do modelo de LPSwarm — modelar landing pages para tecnologias concorrentes (Google Ads)Configurar Docker no Windows para tarefas do Hub LisaLP de Suplementos — iniciar issue #96 (Vek)PR #93 git — subir para testar em prodPR #94 git — despachar agents pelo vaultTestes e documentação de bugs no site VEKPR #98 de LP — cosméticosRemover issues concluídas do board (#5, #10, #11, #12, #13)PRs de comparação vek1 vs LPs — correções e mergeDocumentação de uso e bugs na Vek1Criação de issues via Vault — bugs VekFix bug redirect botão Produtos na sidebar colapsada (vek)Planejamento de issues e mini sprint no site da Vek1facilitabusca — cron de fetch parado desde 05/08 (RESOLVIDO 11/08)
kodama-watchdog — self-heal + alerta pra todos os projetos da VPS HermesVPS Hermes — acesso e estrutura
Memory namespacing (multi-user)
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
vek1-api — arquiteturavek1-api — contextovek1-api — decisões técnicasvek1-api — catálogo de endpointsvek1-api — gotchasvek1-api — integrações externasvek1-api — atividade recente
Amazon Arb (atacado→varejo BR)
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)carousel-paperPlugin marketing-skills (coreyhaines31/marketingskills)
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-17Standup 2026-06-18Standup 2026-06-22Standup 2026-06-23Standup 2026-06-29Standup 2026-06-30Standup 2026-07-01Standup 2026-07-02Standup 2026-07-03Standup 2026-07-06Standup 2026-07-07Standup 2026-07-08Standup 2026-07-09Standup 2026-07-10Standup 2026-07-13Standup 2026-07-14Standup 2026-07-15Standup 2026-07-16Standup 2026-07-17Standup 2026-07-21Standup 2026-07-22Standup 2026-07-23Standup 2026-07-28Standup 2026-07-29Standup 2026-07-30Standup 2026-07-31Standup 2026-08-03Standup 2026-08-06Standup 2026-08-07Standup 2026-08-10Standup 2026-08-11Standup 2026-08-12Standups
MOCStandup 2026 07 23Welcome
v0.3
K
Kodama Vault
brain / projects / vek1-api

vek1-api — decisões técnicas

Decisões técnicas

Postgres+pgvector self-hosted (não Supabase / não Neon)

  • Stack VPS já lotada (lunacrm, mimic, vault, etc.); 1 container vs ~8 do Supabase self-host
  • pgvector 0.8.2 cobre busca semântica sem dependência cloud
  • Backup pendente (gap conhecido)

bge-m3 1024 dim (não OpenAI text-embedding-3-small 1536)

  • Multilingual com força em PT-BR (modelo certificado pra PT/EN/ES)
  • 1024 dim reduz storage/index size sem perda relevante de qualidade pra catálogos PME
  • Self-hosted via Ollama — zero custo recorrente

DeepSeek (não OpenAI / Anthropic / outros)

  • Custo bem menor (~10x mais barato que GPT-4o-mini com qualidade similar pra PT-BR)
  • API OpenAI-compatible — zero refactor além de base_url
  • Function calling completo (compatível com tool calling protocol da OpenAI)
  • Trade-off: latência ~1.9s sem tools (vs 0.8s GPT-4o-mini), mas aceitável pra WhatsApp

psycopg2 síncrono (não asyncpg / não SQLAlchemy)

  • Handlers FastAPI já síncronos — refactor pra async daria churn enorme sem ROI claro
  • ThreadedConnectionPool cobre concorrência de tier-1 da PME (50-100 req/s)
  • Trade-off: blocking I/O por request — não vai escalar pra 1000s req/s sem rework. Aceitável pro tamanho atual.

Per-domain routers com try/except ImportError no main.py

  • Routers carregados lazy; falha de import logada como warning, não trava startup
  • Permite deploy parcial (ex: novo router buggy não derruba auth/orders existentes)
  • Trade-off: bugs de import passam silenciosos pro user (vê 404 em vez de stack). Mitigado por logs.

Token scope segregation (3 tokens isolados)

  • INTERNAL_API_TOKEN (app) — domínios normais
  • INTERNAL_AUTH_TOKEN — só /internal/auth/* (Better Auth)
  • INTERNAL_WEBHOOK_TOKEN — webhooks (email, AbacatePay relay)
  • Comprometimento de um escopo não dá acesso aos outros
  • Fallback: app token serve pros 3 se dedicados ausentes (deploy parcial)
  • Constant-time compare via hmac.compare_digest

Pydantic strict (extra="forbid") em todos endpoints

  • 422 explícito se cliente manda campo desconhecido (anti-typo)
  • Anti version-drift entre vek1 e vek1-api: schema mismatch falha rápido
  • Trade-off: precisa coordenar updates de shape — vek1 e vek1-api precisam deploy junto se body schema mudar. Mitigação: deploys quase sempre simultâneos (single owner).

Cache em memória pro auth (não Redis)

  • Singleton dict no processo, TTL curto (findUserByEmail, findSessionByToken)
  • Reduz round-trip Postgres em hot path login
  • Single instance container — cache fica consistente
  • Trade-off: se escalar horizontal, cache fica inconsistente. Hoje single replica, ok. Próximo gap.

consumeOne(verification) atomic via DELETE..RETURNING

  • Elimina race PKCE (find + delete tem janela)
  • Single round-trip Postgres
  • Implementado em auth_service.consume_verification(identifier, value) — Better Auth chama via adapter

Audit log via BackgroundTasks (não inline)

  • audit_service.log_audit(...) chamado com bg.add_task(...) — não bloqueia request
  • Trade-off: se request falhar antes do bg rodar, audit não grava. Aceitável (audit é nice-to-have, não SLA).

Function calling com 5 iterações máx

  • LLM pode chamar várias tools em sequência (ex: search → get_details → create_order)
  • Limite 5 evita loop infinito de hallucinação
  • Trade-off: ocasionalmente trunca um fluxo complexo. Logs ajudam diagnosticar.

Skip backend persistence se lead_id present

  • vek1 já grava em messages_history (e fileira extract-lead)
  • Vek1-api gravava também → dupla escrita
  • dd2ac9f removeu — vek1-api só grava se NÃO veio do vek1 (ex: chamada direta de teste sem lead_id)

dry_run no /chat

  • dry_run: true simula side-effect tools (create_order, confirm_shipping) sem chamar HTTP
  • Usado em tests/test_function_calling.py pra rodar prompts contra DeepSeek real sem poluir DB
  • Sem dry_run, tests precisariam mock DeepSeek (frágil)

slowapi rate limit opcional

  • try: import slowapi — não trava dev sem pip install slowapi
  • Em prod, configurado em hot paths (chat, embed) com @limiter.limit("60/minute")
  • Trade-off: rate limit in-memory por IP — não distribuído. Single replica ok.

GZip middleware ≥1KB

  • Comprime responses ≥1KB
  • Reduz egress Vercel/VPS em endpoints com listas grandes (orders/leads/messages_history)
  • Melhora TTFB perceptível em dashboards

Logging verboso (com emojis)

  • 📥 request, 📤 response, ✅ success, ❌ erro, 🚨 exceção crítica
  • Stack trace completo em exceções não tratadas
  • Trade-off: logs gordos — LOG_LEVEL=INFO em dev, considerar WARNING em prod se egress de logs ficar caro

init/01-init.sql versionado no repo

  • pgvector ext + HNSW indexes + RPC match_documents_test
  • Aplicado no init do container Postgres (/docker-entrypoint-initdb.d)
  • Reproduzibilidade do schema parcial (Drizzle schema é o outro pedaço — vide vek1/data-model)

Sem ORM (raw SQL via psycopg2)

  • Toda query escrita manual em services/*_service.py
  • Vantagem: controle total (pgvector queries complexas, JOIN com filtro custom), zero overhead ORM
  • Trade-off: typing manual via TypedDict / dict; refactor de schema dá churn (achar todas as queries que tocam coluna X)

Tests pytest com integration suite real

  • tests/test_function_calling.py — chama DeepSeek real (não mock) + Postgres test DB
  • Valida prompt behavior (anti-skip create_order)
  • Trade-off: tests lentos (~30s suite full) + custo DeepSeek minimal mas real. Aceitável.

Single image Dockerfile (python:3.10-slim)

  • Imagem ~250MB final
  • Sem multi-stage build (não vale a pena pro tamanho)
  • Restart unless-stopped (compose) — reinicia automático em crash
notas relacionadas
carregando…