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étodo | Endpoint | Descrição |
|---|---|---|
| POST | /documents/extrair-produtos | Extrai produtos de um arquivo (PDF/imagem) |
| GET | /pedido-sugerido | Sugere pedido baseado em parâmetros de venda |
Métodos
extractProducts(file)
Extrai produtos de um documento enviado como arquivo.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
file | File | Sim |
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
| Status | Descrição |
|---|---|
| 4xx/5xx | Lança Error: AIService.extractProducts failed: {status} |
suggestOrder(params)
Sugere um pedido baseado em parâmetros de negociação.
Parâmetros
| Nome | Tipo | Obrigató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
| Status | Descrição |
|---|---|
| 4xx/5xx | Lanç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
| Componente | Descrição |
|---|---|
buildFormData | Helper para construir FormData a partir de objetos |
buildQueryParams | Serializa parâmetros de query para requisições GET |
apiWithoutAuthorization | Instâ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ário | Resultado esperado |
|---|---|
extractProducts status 200 | Retorna extractedProductsMock.products |
extractProducts status 400 | Lança AIService.extractProducts failed |
suggestOrder status 200 | Retorna suggestedOrderMock |
suggestOrder status 400 | Lança AIService.suggestOrder failed |
Mocks
Localização: __mocks__/ai.mock.ts
extractedProductsMock— resposta mockada para extração de produtos com metadadossuggestedOrderMock— 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';