Pular para o conteúdo principal

AIService

Visão Geral

O AIService fornece funcionalidades de IA para extração de produtos de documentos e sugestão de pedidos baseada em parâmetros de negociação.

Localização: services/ai/ai.service.ts

Endpoints

MétodoEndpointDescrição
POST/documents/extrair-produtosExtrai produtos de um arquivo (PDF/imagem)
GET/pedido-sugeridoSugere pedido baseado em parâmetros de venda

Métodos

extractProducts(file)

Extrai produtos de um documento enviado como arquivo.

Parâmetros

NomeTipoObrigatório
fileFileSim

Retorno: Promise<ExtractedProduct[]>

Exemplo

const file = new File(['data'], 'nota.pdf', { type: 'application/pdf' });
const products = await aiService.extractProducts(file);
console.log(products[0].nome); // 'Arroz Agulhinha Tipo 1'

Erros

StatusDescrição
4xx/5xxLança Error: AIService.extractProducts failed: {status}

suggestOrder(params)

Sugere um pedido baseado em parâmetros de negociação.

Parâmetros

NomeTipoObrigatório
params{ ipServer: string; codVend: string; codParc: string; dtNegIni: string; dtNegFin: string }Sim

Retorno: Promise<SuggestedOrder>

Exemplo

const order = await aiService.suggestOrder({
ipServer: '192.168.1.1',
codVend: '001',
codParc: '123',
dtNegIni: '01/04/2026',
dtNegFin: '30/04/2026'
});
console.log(order.VLRNOTA); // 1000

Erros

StatusDescrição
4xx/5xxLança Error: AIService.suggestOrder failed: {status}

Estruturas de Dados

ExtractedProduct

interface ExtractedProduct {
codprod?: number;
nome: string;
quantidade: number;
unidade: string;
volume?: string | null;
}

SuggestedOrder

Interface complexa com campos como VLRNOTA, CODPARC, ITEMS (array de OrderItem), etc.

SuccessResponse<T>

interface SuccessResponse<T> {
success: true;
data: T;
}

ExtractedProductWithMetadata

interface ExtractedProductWithMetadata {
products: ExtractedProduct[];
extractedText: string;
metadata: Metadata;
}

Componentes Relacionados

ComponenteDescrição
buildFormDataHelper para construir FormData a partir de objetos
buildQueryParamsSerializa parâmetros de query para requisições GET
apiWithoutAuthorizationInstância Axios sem interceptores de autenticação

Casos de Uso

  • Extrair produtos de notas fiscais ou listas de compras
  • Sugerir pedidos de venda baseado em histórico de negociação

Testes

Localização: services/ai/ai.service.test.ts

Principais cenários

CenárioResultado esperado
extractProducts status 200Retorna extractedProductsMock.products
extractProducts status 400Lança AIService.extractProducts failed
suggestOrder status 200Retorna suggestedOrderMock
suggestOrder status 400Lança AIService.suggestOrder failed

Mocks

Localização: __mocks__/ai.mock.ts

  • extractedProductsMock — resposta mockada para extração de produtos com metadados
  • suggestedOrderMock — pedido sugerido mockado com todos os campos preenchidos

Instância

Localização: services/ai/ai.service.instance.ts

import { aiService } from '@/services/ai/ai.service.instance';