validador-pedidos-gocase
MCP server that validates orders from a spreadsheet, rejects inconsistent ones with explanations, prioritizes valid orders by deadline urgency, and attempts automatic AI recovery of rejected orders.
README
Validador de Pedidos — GoCase
Automação que atua como filtro de qualidade entre a captação de pedidos e o chão de fábrica: lê a planilha de pedidos, barra o que está inconsistente explicando o motivo, prioriza o que é válido pelo aperto do prazo e ainda tenta recuperar automaticamente, com IA, os pedidos que foram barrados.
Business case para o processo seletivo de Estágio em RPA na GoCase (GoGroup). Área de negócio: Operações de Fábrica.
Serviço no ar: https://validador-pedidos-gocase.onrender.com
O problema
Na produção sob demanda, cada pedido vira uma ordem de produção física. Um pedido com dado quebrado não é só um registro errado — é material personalizado gasto, hora-máquina perdida e cliente sem receber.
Os pedidos chegam de vários canais (site, marketplace, B2B, loja física), cada um com um nível diferente de validação na origem. O resultado é uma planilha onde convivem pedidos perfeitos e pedidos com cliente sem nome, e-mail quebrado, quantidade zerada, valor que não fecha, prazo vencido ou duplicidade.
Conferir isso à mão é lento, cansativo e deixa passar erro sutil — uma diferença de centavos, uma duplicata separada por dezenas de linhas.
Como o operador usa
- Abre o formulário no navegador.
- Sobe a planilha
.xlsx. - Recebe de volta um
.zipcom as três planilhas prontas.
Nada é instalado na máquina de ninguém: o processamento roda no servidor e o resultado volta pelo navegador.
O formulário é publicado pelo fluxo n8n, que acompanha o projeto em
integracoes/ e é importado uma única vez. Quem não
utiliza n8n pode consumir a API diretamente — o contrato está no mesmo guia.
Para experimentar sem preparar dados, o repositório inclui
exemplo/pedidos_exemplo.xlsx: 50 pedidos, dos
quais 10 contêm defeitos representativos dos que ocorrem na operação.
Primeira execução do dia. O serviço está hospedado em plano gratuito e hiberna após alguns minutos sem uso. A primeira chamada leva cerca de 50 segundos para acordar o servidor; as seguintes respondem em menos de 1 segundo. Se o fluxo acusar tempo esgotado na primeira tentativa, basta repetir.
Resultado medido
Lote de 50 pedidos, com 10 problemas reais:
| Métrica | Valor |
|---|---|
| Pedidos processados | 50 |
| Reprovados na validação | 10 |
| Recuperados pela IA | 5 |
| Válidos ao final | 45 (90%) |
| Tempo de processamento | menos de 1 segundo |
Regras de validação
Cada pedido é avaliado contra todas as regras. Um pedido pode acumular
vários motivos, concatenados na coluna motivo_rejeicao — a gestão vê a lista
completa de problemas de uma vez, não um erro por reprocessamento.
| # | Campo | Regra |
|---|---|---|
| 1 | id_pedido |
Não vazio e não duplicado. Na duplicata, a 2ª ocorrência é reprovada. |
| 2 | cliente |
Não vazio. |
| 3 | email |
Formato texto@texto.dominio. |
| 4 | quantidade |
Inteiro positivo. |
| 5 | valor_unitario |
Positivo. |
| 6 | valor_total |
Bate com quantidade × valor_unitario (tolerância de R$ 0,02). |
| 7 | prazo_entrega |
Não pode estar no passado. |
| 8 | produto |
Não vazio. |
| 9 | sku |
Não vazio. |
Prioridade de produção
Os aprovados recebem dias_restantes e entram numa fila ordenada por urgência —
os mais apertados primeiro.
| Prioridade | Dias até o prazo | Cor na planilha |
|---|---|---|
| URGENTE | 0 a 2 | Vermelho claro |
| ALTA | 3 a 5 | Laranja claro |
| NORMAL | 6 a 10 | Verde claro |
| BAIXA | 11 ou mais | Sem cor |
O que é entregue
| Planilha | Conteúdo |
|---|---|
pedidos_validados.xlsx |
Aprovados, na ordem de produção, coloridos por prioridade. |
pedidos_rejeitados.xlsx |
Reprovados, com o motivo exato de cada um. |
resumo_execucao.xlsx |
Métricas do lote: totais, percentuais, prioridades, canais, valores. |
Camada de IA — recuperação de pedidos reprovados
Barrar pedido resolve metade do problema. A outra metade é recuperá-lo.
A divisão de trabalho é explícita:
- Erro mecânico (valor que não fecha, espaço sobrando, e-mail a normalizar) → resolvido por regra, sem IA.
- Erro semântico (nome faltando, e-mail incompleto) → a IA infere cruzando os outros campos do próprio pedido.
- Dado impossível de deduzir → sinalizado para revisão humana, nunca inventado.
O que a IA corrigiu na execução real
| Pedido | Correção | De onde deduziu |
|---|---|---|
| PED-00003 | cliente: '' → 'Camila Rodrigues' |
do e-mail camila.rodrigues@... |
| PED-00016 | cliente: '' → 'Patricia Gomes' |
do e-mail patricia.gomes@... |
| PED-00034 | cliente: '' → 'Daniel Oliveira' |
do e-mail daniel.oliveira@... |
| PED-00022 | email: 'cliente@' → 'yasmin.monteiro@gmail.com' |
do nome do cliente |
| PED-00008 | email: 'clientegocase.com' → 'cliente@gocase.com' |
faltava o @ |
O que ela corretamente não resolveu
Dos 10 reprovados, 5 permaneceram — e é assim que deve ser:
- 2 duplicatas — exigem decisão humana sobre qual pedido vale.
- 1 prazo vencido — não é erro de dado, é problema operacional.
- 2 valores incoerentes — a IA ajustou a quantidade, mas o
valor_totalnão fechou, então o pedido continuou reprovado. A validação não abre exceção para a IA.
Trilha de auditoria
Correção automática só é confiável se for auditável. A IA assina o que fez, dentro das planilhas entregues:
- Coluna
corrigido_por_iamarca os pedidos recuperados. - Coluna
correcao_iaregistra o antes → depois de cada campo alterado. - O resumo traz a linha "Pedidos recuperados pela IA".
Deduzir o nome a partir do e-mail é uma inferência plausível, não um dado confirmado. Por isso a trilha existe: a IA acelera a recuperação e a decisão final continua conferível por uma pessoa.
Arquitetura
Responsabilidade única por módulo — cada arquivo faz uma coisa e é testável isoladamente.
| Módulo | Responsabilidade |
|---|---|
src/leitor.py |
Lê o Excel, tipa colunas e confere o schema esperado. |
src/validador.py |
Aplica as 9 regras; separa aprovados de reprovados; acumula motivos. |
src/organizador.py |
Calcula dias_restantes e prioridade; ordena a fila. |
src/relatorio.py |
Gera as 3 planilhas formatadas. |
src/assistente_ia.py |
Prepara os reprovados para a IA, aplica as correções e marca a autoria. |
src/config.py |
Carrega config.yaml com fallback embutido. |
src/agente.py |
executar_pipeline: o fluxo completo, em uma função só. |
src/gerar_dados.py |
Gera a planilha de demonstração. Ferramenta de teste, não de produção. |
api.py |
Superfície HTTP: validação, download e correção por IA. |
mcp_server.py |
Superfície MCP: 5 ferramentas + 1 prompt para clientes de IA. |
main.py |
Execução por terminal, para desenvolvimento. |
Fonte única de verdade. O fluxo vive em executar_pipeline; as métricas são
montadas uma vez e reaproveitadas pelo relatório, pelo log e pela API. Nomes,
ordem e cores das faixas de prioridade existem apenas no config.yaml.
Tecnologias
Python 3.10+ · pandas e openpyxl (planilhas) · FastAPI e uvicorn (API HTTP) · PyYAML (configuração externa) · httpx (chamada à IA) · MCP (integração com clientes de IA) · Anthropic Claude (correção assistida) · n8n (orquestração low-code) · Render (hospedagem).
Formas de consumo
Uma lógica de validação, três superfícies — sem regra duplicada.
| Superfície | Para quem | Como |
|---|---|---|
| n8n | Operação | Formulário de upload; devolve o .zip no navegador. Workflow pronto em integracoes/. |
| API HTTP | Qualquer sistema | HTTP + JSON padrão, sem SDK. Contrato em integracoes/README.md. |
| MCP | Ferramentas de IA | 5 ferramentas chamáveis por linguagem natural (ex.: Claude Desktop). |
Conectando o MCP a um cliente de IA
O n8n executa a automação em lote; o MCP permite interrogá-la em linguagem natural — "quantos pedidos foram barrados e por quê?". Para habilitar num cliente compatível (Claude Desktop, por exemplo), aponte-o para o servidor:
{
"mcpServers": {
"validador-gocase": {
"command": "python",
"args": ["mcp_server.py"],
"cwd": "caminho/para/validador-pedidos-gocase"
}
}
}
Ferramentas expostas: validar_pedidos, consultar_resumo,
analisar_rejeitados, revalidar_com_correcoes e gerar_dados_exemplo, mais
um prompt guia. As duas do meio formam o ciclo de correção assistida: o modelo
do próprio cliente propõe as correções e o servidor revalida.
A integração não amarra a ferramenta: por ser HTTP puro, Make, Power Automate ou código próprio consomem a mesma API. O n8n é o caminho documentado e testado, por ser o padrão na GoCase.
Configuração sem código
Regras de negócio ficam fora do código, em config.yaml: tolerância de valor,
padrão de e-mail, colunas obrigatórias e as faixas de prioridade (nomes,
intervalos e cores). Um gestor ajusta limites sem abrir Python.
Há ainda o mapa_colunas, que traduz os cabeçalhos de um export real do
e-commerce/ERP para os nomes esperados — planilha diferente não exige código
novo.
Configuração ausente ou inválida não derruba nada: o sistema avisa e usa os padrões embutidos.
Qualidade
testar.py executa 13 verificações de ponta a ponta: geração da planilha,
execução do fluxo, existência e conteúdo das 3 planilhas e do log, consistência
(aprovados + reprovados = total), presença de motivo em todos os reprovados e
o comportamento da API — validação, download do pacote e recusa de planilha fora
do formato com erro legível em vez de falha genérica — e o MCP Server, que é
exercitado pelo protocolo real: handshake, catálogo de ferramentas e uma
ferramenta executada de ponta a ponta.
Outras salvaguardas embutidas: relatório aberto no Excel é tratado com novas tentativas e mensagem clara; correção malformada vinda da IA é descartada sem derrubar o lote; arquivos temporários do servidor expiram sozinhos em 1 hora.
Escopo e evolução
Escopo desta entrega. A API está publicada sem autenticação, por decisão de escopo do business case. A URL deve ser usada apenas com a planilha de demonstração (dados sintéticos); pedidos reais contêm dados pessoais e exigem autenticação por chave antes de trafegar por uma URL aberta. É um passo consciente do roadmap, não um esquecimento.
Evolução natural. Ler os pedidos direto do ERP em vez de planilha; escrever o status de volta no sistema de origem; notificação ativa para a gestão quando o índice de reprovação subir; histórico entre lotes para detectar duplicidade que atravessa execuções.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。