Pular para o conteúdo principal

Sugestão de Pedido

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

Visão Geral

"Sugestão de Pedido" promete montar um pedido pronto para um cliente, analisando o histórico dele. O fluxo tem cinco telas (carregamento, alertas, parâmetros, resultado) com bastante cuidado visual, mas nenhuma delas consulta o cliente de fato. Diferente do chat com a Sophia, aqui existe um método de serviço real e pronto para isso, AIService.suggestOrder, só que ele nunca é chamado.

Arquivos-chave

ArquivoResponsabilidade
features/home/subscreens/order-suggestion/home-order-suggestion-loading.tsxTela de carregamento, só espera e navega
features/home/subscreens/order-suggestion/home-order-suggestion-alerts.tsxAlertas sobre o cliente/pedido, mockados
features/home/subscreens/order-suggestion/home-order-suggestion-parameters.tsxParâmetros de geração, mockados
features/home/subscreens/order-suggestion/home-order-suggestion-result.tsxLista final de produtos sugeridos, mockada
features/home/subscreens/order-suggestion/home-order-suggestion.mock.tsFonte de todos os dados exibidos nas quatro telas
services/ai/ai.service.tssuggestOrder, o método real que nenhuma tela chama

O carregamento é só um temporizador

// home-order-suggestion-loading.tsx
const LOADING_DURATION_MS = 2000;

const timeout = setTimeout(() => {
router.replace({
pathname: "/home/sugestao-pedido-alertas",
params: { clientId, clientName },
} as any);
}, LOADING_DURATION_MS);

O clientId e clientName recebidos por parâmetro de rota, vindos de quem iniciou o fluxo (carteira de clientes ou home), não são usados para buscar nada, servem só para serem repassados às telas seguintes, que também não os utilizam para consultar dados.

Todas as telas seguintes vêm do mesmo arquivo de mock

Alertas, parâmetros e resultado leem, cada um, uma constante diferente do mesmo arquivo:

// home-order-suggestion.mock.ts
import { productsMock } from "@/__mocks__/products.mock";

export const ORDER_SUGGESTION_FIRST_ALERT_PRODUCTS: OrderSuggestionAlertProduct[] = [ /* ... */ ];
export const ORDER_SUGGESTION_PARAMETER_CARDS: OrderSuggestionParameterCard[] = [ /* ... */ ];
export const ORDER_SUGGESTION_RESULT_PRODUCTS: OrderSuggestionResultProduct[] = [ /* ... */ ];

Os produtos sugeridos no resultado final vêm, na base, dos mesmos produtos de teste usados em outros mocks já documentados neste fluxo e no de catálogo, não de uma consulta ao histórico de compras do cliente selecionado.

Terminar o fluxo não cria pedido nenhum

O botão final da tela de resultado só volta para a home, sem tocar em nenhum serviço de venda:

// home-order-suggestion-result.tsx
const handleFinishFlow = React.useCallback(() => {
router.replace({ pathname: "/(tabs)/home" } as any);
}, [router]);

Não há chamada a saleDraftService, nem navegação para /nova-venda com os itens sugeridos. Aceitar a sugestão de pedido, hoje, não produz nenhum efeito além de fechar as telas do fluxo.

O método de serviço para isso já existe, e está pronto, só não é chamado

// ai.service.ts
type SuggestOrderParams = {
ipServer: string;
codVend: string;
codParc: string;
dtNegIni: string; // DD/MM/YYYY
dtNegFin: string; // DD/MM/YYYY
};

async suggestOrder(params: SuggestOrderParams): Promise<SuggestedOrder> {
const queryParams = buildQueryParams(params);
const res = await this.apiWithoutAccessToken.get<SuccessResponse<SuggestedOrder>>(
"/pedido-sugerido",
{ params: queryParams },
);
// ...
}

Esse método, e o endpoint /pedido-sugerido que ele consulta, não aparecem em nenhuma das telas do fluxo. A única referência a ele no projeto inteiro é o teste automatizado do próprio AIService. A assinatura já espera exatamente os dados que as telas de carregamento e parâmetros já coletam (vendedor, cliente, intervalo de datas), o que sugere que a conexão entre a tela e o serviço é um trabalho pendente específico, não algo que precise ser desenhado do zero.

Armadilhas conhecidas

Não confunda esse método não utilizado com código morto para remover. Diferente de outros casos já documentados neste projeto (como funções de storage nunca chamadas), suggestOrder parece ser trabalho em andamento, a peça que falta é ligar as telas de features/home/subscreens/order-suggestion/* a ele, substituindo home-order-suggestion.mock.ts pelo resultado real da chamada.