Pular para o conteúdo principal

Assistente Virtual (IA) — Visão Geral

Última atualização: 16 de julho de 2026

O que é este fluxo​

O app tem três superfícies de inteligência artificial: importar um pedido a partir de uma foto, áudio ou texto livre, receber uma sugestão de pedido pronta para um cliente, e conversar com uma assistente chamada Sophia na home. Das três, só uma de fato conversa com um serviço de IA real. As outras duas têm toda a interface pronta, incluindo animações de "pensando" e "digitando", em torno de dados fixos.

Resumo: o que é real e o que é mock​

SuperfícieEstadoDocumentado em
Importação de pedido por IA (nova venda)Real, chama o serviço de IAImportação de Pedido por IA
Chat com a Sophia (home)Mock, resposta fixaChat com a Sophia
Sugestão de pedido (home/carteira)Mock, apesar de existir um método de serviço real e não usadoSugestão de Pedido

O serviço de IA real: AIService e o backend "Sofia"​

Existe um serviço de IA de fato, services/ai/ai.service.ts, que fala com um backend próprio de IA, configurado como uma URL separada da API principal do app:

// app.json
"API_AI_SOFIA_URL": "https://api.sofia.vidyacode.com.br"

AIService expõe dois métodos, e só um deles é chamado por alguma tela do app:

// ai.service.ts
export class AIService {
/** Envia um arquivo/áudio/texto junto do catálogo de produtos para o middleware de IA. */
async importProducts(params: ImportProductsParams): Promise<AiImportResponseData> {
// ... POST multipart para /api/extrair-produtos, com baseURL: AUTH_CONFIG.API_AI_SOFIA_URL
}

/** Busca um pedido sugerido para um vendedor/cliente num intervalo de datas. */
async suggestOrder(params: SuggestOrderParams): Promise<SuggestedOrder> {
// ... GET /pedido-sugerido
}
}

importProducts é chamado de fato pela tela de importação de pedido em nova venda, documentada em Importação de Pedido por IA. suggestOrder não é chamado por nenhuma tela, é exercitado só no teste automatizado do próprio serviço, documentado em Sugestão de Pedido.

O histórico de conversas do chat não é persistido​

VirtualAssistantProvider, montado no layout raiz e usado pela tela de chat, guarda as conversas só em useState, sem nenhuma gravação em MMKV, SQLite ou qualquer outro storage:

// virtual-assistant.provider.tsx
export function VirtualAssistantProvider({ children }) {
const [conversations, setConversations] = useState<VirtualAssistantConversation[]>([]);
// startConversation, appendMessage, getConversationById operam só sobre esse estado em memória
}

Fechar o app, ou mesmo só recarregar a tela em desenvolvimento, apaga qualquer conversa em andamento. Isso é consistente com o restante do fluxo: nada aqui, além da importação de pedido, foi construído com persistência de dados reais em mente ainda.

Flags de configuração​

cfg-ativarimportacaopedidoia e cfg-ativarsugestaopedidoia controlam a visibilidade das ações de importar/sugerir pedido, tanto na home quanto na carteira de clientes (documentado em Seleção e Navegação), seguindo o mesmo padrão de gating por flag já visto em outros fluxos. As duas vêm desligadas por padrão.

Armadilhas conhecidas​

Ao testar qualquer uma dessas três superfícies, confirme primeiro qual delas está sendo tocada. É fácil assumir que, como a importação de pedido de fato funciona e chama um backend de IA real, o chat ou a sugestão de pedido também fazem algo parecido. Eles não fazem, hoje.