Suítes e registros
Backend de assistência com LLMs
23 testes aprovados · código de saída 0
Local; sem container Windows; sem chamada paga de modelo
Cenários extraídos do registro de testes (23)
- POST /api/ai/chat requires page.ai_assistant permission
- POST /api/ai/chat returns 503 when OpenRouter key is not configured and never asks the frontend for a key
- GET /api/ai/settings exposes user preferences, agent settings and management flags
- GET /api/ai/status derives context limit from the active registry model
- PUT /api/ai/settings/agent requires ai.agent.manage or settings.manage
- agent settings override OpenRouter model and generation parameters used by chat
- POST /api/ai/chat enables OpenRouter reasoning only for compatible models
- POST /api/ai/chat omits parallel tool calls when the active OpenRouter model does not support the parameter
- POST /api/ai/models validates and stores an eligible OpenRouter model
- POST /api/ai/models rejects models without CRM-required capabilities
- validateOpenRouterModel uses the documented single model lookup endpoint
- listOpenRouterModelCandidates sends server-side filters, sort and pagination
- fallback chain sends OpenRouter models array and returns the actual model used
- AI tool list sent to the LLM exposes semantic tools only
- POST /api/ai/chat calls OpenRouter with Bearer token and executes read-only semantic tools
- POST /api/ai/chat never retries invalid OpenRouter credentials
- POST /api/ai/chat retries one recoverable provider failure and accounts every attempt
- POST /api/ai/chat deterministically reads active ads campaigns before answering
- POST /api/ai/chat blocks legacy raw SQL tool calls without executing repository queries
- softenAiCertaintyLanguage removes absolute smoke-test wording before persistence
- buildListMemoryEntriesQuery keeps optional PostgreSQL parameters typed
- GET /api/ai/memories forwards shared memory management permission to the runner
- sanitizeAiToolRows removes sensitive fields before tool results are sent to the LLM
SHA-256 do registro privado
793709bdbe72159790c723623e7608c29247f5a6cc7d1920caa04a13e1876df4Contratos e privacidade de métricas — componente complementar
9 testes aprovados · código de saída 0
Local; sem container Windows; sem chamada paga de modelo
SHA-256 do registro privado
ecad184ffc7c74955a704226194e7f53da21f70889eadc3938660e6a700c1ef3Consentimento e minimização — componente complementar
3 testes aprovados · código de saída 0
Local; sem container Windows; sem chamada paga de modelo
Cenários extraídos do registro de testes (3)
- requires explicit analytics consent
- hashes IP without exposing the original value
- tracker keeps the production collect endpoint
SHA-256 do registro privado
a22817a597ec67fda0cd4832750e02cf49f61995a88a40ad9e7947be7fb89cfcCompetências e limites da prova
LLMs, OpenRouter e API compatível OpenAI
comprovada no recorte local
Fetch substituído por mocks; sem chamada paga ou certificação em produção.
Hash da fonte conferida
b9d13e0db0c9e7dd6661d9b6e88a9258c38520cbcb689c8f5bd7aa1f5733206bTool calling e guardrails
comprovada no recorte local
Ferramentas semânticas controladas; não equivalem a LangChain, LangGraph ou MCP server.
Hash da fonte conferida
b9d13e0db0c9e7dd6661d9b6e88a9258c38520cbcb689c8f5bd7aa1f5733206bMemória persistente e busca textual SQL
parcialmente comprovada — implementação sem validação integrada
Consulta/mapeamento testados sem PostgreSQL real; tsvector não é embedding nem busca vetorial.
Hash da fonte conferida
b9d13e0db0c9e7dd6661d9b6e88a9258c38520cbcb689c8f5bd7aa1f5733206bCustos, tokens e contexto LLM
comprovada no recorte local
Custos declarados pelo provedor; unavailable/partial não viram zero. Sem FinOps cloud certificado.
Hash da fonte conferida
b9d13e0db0c9e7dd6661d9b6e88a9258c38520cbcb689c8f5bd7aa1f5733206bPrivacidade nos resultados de ferramentas
comprovada no recorte local
Sanitização coberta; não comprova conformidade legal integral ou ausência de todo vazamento.
Hash da fonte conferida
b9d13e0db0c9e7dd6661d9b6e88a9258c38520cbcb689c8f5bd7aa1f5733206bPermissões e tenant no backend
comprovada no recorte local
Rotas com usuário/tenant servidor; não afirmar RLS uniforme em todo CRM.
Hash da fonte conferida
4f0d83ab73a091e8bea8ae3e71e2b5a51483d7b089b8598c0c61aa252cbba10eTimeout e retry de provedor
comprovada no recorte local
Retry recuperável exercitado; não é teste de carga/distribuição em produção.
Hash da fonte conferida
b9d13e0db0c9e7dd6661d9b6e88a9258c38520cbcb689c8f5bd7aa1f5733206bTypeScript, Node.js, Fastify e APIs
comprovada no recorte local
API real via inject com repositórios substituídos. Não equivale a FastAPI/Pydantic em Python.
Hash da fonte conferida
faecfefca682a05b8404fac46485a7253d6dcf8cd6542d0d5f5a4ab9c723a7c8Zod e validação de contratos
comprovada no recorte local
Validação TS; habilidade conceitual transferível a Pydantic, sem uso dessa biblioteca.
Hash da fonte conferida
4f0d83ab73a091e8bea8ae3e71e2b5a51483d7b089b8598c0c61aa252cbba10eAnalytics, contratos e qualidade de métricas
comprovada no recorte local
9 testes focais com privacidade e disponibilidade; sem dados externos reais ou ganho de negócio medido.
Hash da fonte conferida
28cca68a08f5c9c214acd0586fc6a0a83919409a95f9983de53d416429abac10Coleta, consentimento e IP minimizado
comprovada no recorte local
3 testes locais; sem commit Git no diretório, usar hash de arquivo.
Hash da fonte conferida
df251b31506846fb1349f65c5fa587aad3911e32d7dd11ac6cc6cb9b1c694bfaReact e aplicação web CRM
parcialmente comprovada — implementação sem validação integrada
Imports referenciados em bibliotecas.csv; não foi executado E2E comercial nesta auditoria.
Hash da fonte conferida
3d2e1f15a4a06356a9b54efb64fe3b412ebea10ef8bd0bc58fe94601084c4498SQL/PostgreSQL e migrations
parcialmente comprovada — implementação sem validação integrada
75 arquivos SQL tracked no CRM; quantidade não prova SQL avançado nem desempenho.
Hash da fonte conferida
ab90782073dabafe1d3f8cdd87c74e8074a1587ae3ff1a1a4f69a1b4a8a0016e