| name | gerindo-expedicao |
| description | Consulta e opera dados logisticos da Nacom Goya. Consulta pedidos, estoque, disponibilidade, lead time. Cria separacoes. Resolve entidades (pedido, produto, cliente, grupo). Use para perguntas como 'tem pedido do Atacadao?', 'quanto tem de palmito?', 'quando fica disponivel?', 'crie separacao do VCD123'. |
| allowed-tools | Read, Bash, Glob, Grep |
Gerindo Expedicao
Skill para consultas e operacoes logisticas da Nacom Goya.
Indice
- Quando Usar Esta Skill
- DECISION TREE - Qual Script Usar?
- Scripts Disponiveis
- Fluxo de Criacao de Separacao
- Referencias (tables, business, glossary, synonyms, products, examples)
Quando Usar Esta Skill
USE para:
- Consultas de pedidos: "tem pedido do Atacadao?", "pedido VCD123 esta em separacao?"
- Consultas de estoque: "quanto tem de palmito?", "chegou cogumelo?"
- Analise de disponibilidade: "quando VCD123 fica disponivel?", "o que vai dar falta?"
- Calculo de prazo: "se embarcar amanha, quando chega?"
- Criacao de separacao: "crie separacao do VCD123 pra amanha"
- Resolucao de entidades: identificar pedido, produto, cliente por termos parciais
NAO USE para:
- Analise COMPLETA da carteira com decisoes (use o Agent
analista-carteira) - Comunicacao com PCP ou Comercial (use o Agent)
- Decisoes de priorizacao P1-P7 (use o Agent)
DECISION TREE - Qual Script Usar?
Mapeamento Rapido
| Se a pergunta menciona... | Use este script | Com estes parametros |
|---|---|---|
| PRODUTO + CLIENTE/GRUPO ("quanto de X pro Y?") | consultando_situacao_pedidos.py |
--grupo Y --produto X ou --cliente Y --produto X |
| Pedidos de um grupo ("tem pedido do atacadao?") | consultando_situacao_pedidos.py |
--grupo atacadao |
| Pedidos de um cliente ("tem pedido do Carrefour?") | consultando_situacao_pedidos.py |
--cliente Carrefour |
| Pedidos atrasados | consultando_situacao_pedidos.py |
--atrasados |
| Estoque de produto ("quanto tem de X?") | consultando_produtos_estoque.py |
--produto X --completo |
| Entradas recentes ("chegou X?") | consultando_produtos_estoque.py |
--produto X --entradas |
| Ruptura/falta ("vai faltar X?") | consultando_produtos_estoque.py |
--ruptura --dias 7 |
| Quando pedido fica disponivel | analisando_disponibilidade_estoque.py |
--pedido VCD123 |
| Disponibilidade de grupo | analisando_disponibilidade_estoque.py |
--grupo atacadao --completude |
| Prazo de entrega ("quando chega?") | calculando_leadtime_entrega.py |
--pedido X --data-embarque Y |
| Criar separacao | criando_separacao_pedidos.py |
--pedido X --expedicao Y (SEM --executar primeiro!) |
| Programacao de producao | consultando_programacao_producao.py |
--listar --dias 7 |
Regras de Decisao (em ordem de prioridade)
Se pergunta tem PRODUTO + CLIENTE/GRUPO juntos: → Use
consultando_situacao_pedidos.py --grupo X --produto You--cliente X --produto Y→ Exemplo: "quantas caixas de ketchup tem pro atacadao?" →--grupo atacadao --produto ketchupSe pergunta e sobre PEDIDOS de um cliente/grupo (sem produto): → Use
consultando_situacao_pedidos.py --grupo Xou--cliente X→ Exemplo: "tem pedido do assai?" →--grupo assaiSe pergunta e sobre ESTOQUE de produto (sem cliente): → Use
consultando_produtos_estoque.py --produto X --completo→ Exemplo: "quanto tem de palmito?" →--produto palmito --completoSe pergunta e sobre DISPONIBILIDADE de pedido: → Use
analisando_disponibilidade_estoque.py --pedido X→ Exemplo: "quando VCD123 fica disponivel?" →--pedido VCD123Se pergunta e sobre PRAZO de entrega: → Use
calculando_leadtime_entrega.py→ Exemplo: "se embarcar amanha, quando chega?" →--pedido X --data-embarque amanhaSe for ACAO de criar separacao: → Use
criando_separacao_pedidos.py(SEMPRE simular antes de executar!) → Exemplo: "crie separacao do VCD123" →--pedido VCD123 --expedicao [data](SEM --executar)
Como Decidir (Raciocinio Obrigatorio)
PASSO 1 - IDENTIFICAR: O que o usuario quer saber?
- E sobre PEDIDOS? (quem comprou, quanto, quando entregar)
- E sobre ESTOQUE? (tem, vai faltar, chegou, quanto sobra)
- E sobre DISPONIBILIDADE? (quando pedido fica pronto)
- E sobre PRAZO? (quando chega se embarcar dia X)
- E uma ACAO? (criar separacao)
PASSO 2 - VERIFICAR: Tem cliente/grupo mencionado?
- SIM + produto →
consultando_situacao_pedidos --grupo/--cliente + --produto - SIM sem produto →
consultando_situacao_pedidos --grupo/--cliente - NAO → provavelmente
consultando_produtos_estoque
PASSO 3 - CONFIRMAR: A escolha faz sentido?
- Se escolhi ESTOQUE mas usuario perguntou "pro atacadao" → ERRADO (use PEDIDOS)
- Se escolhi PEDIDOS mas usuario perguntou "quanto tem em estoque" → ERRADO (use ESTOQUE)
- Se escolhi DISPONIBILIDADE mas usuario perguntou "quando chega" → ERRADO (use LEADTIME)
PASSO 4 - PERGUNTAR: Se ainda em duvida apos os 3 passos → pergunte ao usuario!
Leitura de References (Sob Demanda)
Esta skill implementa um equilibrio entre scripts e IA:
SCRIPTS fazem:
- Resolver entidades (cliente, grupo, produto)
- Buscar dados no banco
- Retornar TODOS os candidatos (sem truncar)
IA decide:
- Como agrupar/apresentar resultados
- Se precisa perguntar algo ao usuario
- Quando usar references para contexto
| Gatilho na Pergunta | Reference a Ler | Motivo |
|---|---|---|
| Produto mencionado | references/products.md |
Entender abreviacoes (CI, AZ VF, BD) |
| Cliente/Grupo | references/business.md |
Prefixos CNPJ, constantes |
| Termo desconhecido | references/glossary.md |
"matar", "ruptura", "FOB" |
| Variacao de escrita | references/synonyms.md |
ketchup→catchup |
| Comunicar PCP/Comercial | references/communication.md |
Templates de mensagem |
| Duvida de script | references/examples.md |
Validar escolha |
Pergunta: "quanto tem de palmito pro atacadao 183"
- IA le
references/glossary.md→ "pendente" = qtd_saldo > 0 - IA le
references/business.md→ atacadao = grupo com prefixos CNPJ - IA executa:
python consultando_situacao_pedidos.py --grupo atacadao --produto palmito - Script encontra 18 candidatos de palmito
- Script busca TODOS na carteira do cliente (nao para por multiplos)
- Script retorna 2 SKUs com saldo: Tolete 15x300g (2.592 un), Rodela 15x300g (1.053 un)
- IA apresenta tabela consolidada ao usuario
IMPORTANTE: Quando script retorna ia_decide: true, a IA DEVE processar os dados e decidir a melhor forma de apresentar.
Termos Ambiguos - PERGUNTE antes de agir!
Se o usuario usar estes termos, PARE e PERGUNTE antes de executar.
"programacao de entrega" (CRITICO - 4 interpretacoes)
| Opcao | Significado | Campo | Tabela |
|---|---|---|---|
| A | Data que cliente solicitou | data_entrega_pedido |
CarteiraPrincipal |
| B | Data que vamos expedir | expedicao |
Separacao |
| C | Data que vai chegar no cliente | agendamento |
Separacao |
| D | Protocolo de agendamento | protocolo |
Separacao |
PERGUNTAR: "Voce quer saber: A) data que o cliente solicitou, B) data de expedicao programada, C) data de chegada no cliente, ou D) protocolo de agendamento?"
"quantidade pendente"
| Opcao | Significado | Fonte |
|---|---|---|
| Carteira | Ainda nao separado | CarteiraPrincipal |
| Separacao | Separado mas nao faturado | Separacao (sincronizado_nf=False) |
| Total | Ambos | Carteira + Separacao |
ACAO PADRAO: Mostrar AMBOS e explicar: "Na carteira: X un | Em separacao: Y un | Total pendente: Z un"
"itens" vs "unidades"
NUNCA usar "itens" sozinho. SEMPRE especificar:
- "X linhas de produto" (SKUs diferentes)
- "X unidades" ou "X caixas" (quantidade)
Multiplas lojas do mesmo grupo
Se resultado tiver mais de 1 loja do mesmo grupo (ex: Atacadao): PERGUNTAR: "Encontrei pedidos em X lojas do [grupo]. Qual loja especificamente, ou quer ver todas?"
Outros termos ambiguos
| Termo | Possibilidades | O que PERGUNTAR |
|---|---|---|
| "quando fica disponivel?" | Pedido ou produto? | "Voce quer saber quando um PEDIDO fica disponivel ou quando um PRODUTO estara em estoque?" |
| "situacao" | De que? | "Situacao de qual pedido ou produto?" |
| "crie separacao" | Data faltando | "Para qual data de expedicao?" |
Exemplos de Boas e Mas Escolhas
Scripts Disponiveis
Ambiente Virtual
Sempre ativar antes de executar:
source .venv/bin/activate
1. analisando_disponibilidade_estoque.py
Proposito: Analisa disponibilidade de estoque para pedidos ou grupos de clientes.
Queries cobertas: Q1, Q2, Q3, Q4, Q5, Q6, Q9, Q11, Q12
source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/analisando_disponibilidade_estoque.py [parametros]
| Parametro | Descricao | Exemplo |
|---|---|---|
--pedido |
Numero do pedido ou "grupo termo" | --pedido VCD123 ou --pedido "atacadao 183" |
--grupo |
Grupo empresarial | --grupo atacadao, --grupo assai, --grupo tenda |
--loja |
Identificador da loja (em raz_social_red) | --loja 183 |
--uf |
Filtrar por UF | --uf SP |
--data |
Data para analise (hoje, amanha, dd/mm, YYYY-MM-DD) | --data amanha |
--sem-agendamento |
Apenas pedidos sem exigencia de agendamento | flag |
--sugerir-adiamento |
Sugerir pedidos para adiar (liberar estoque) | flag |
--diagnosticar-origem |
Distinguir falta absoluta vs relativa | flag |
--completude |
Calcular % faturado vs pendente | flag |
--atrasados |
Analisar pedidos com expedicao vencida | flag |
--diagnosticar-causa |
Detalhar causa do atraso | flag |
--ranking-impacto |
Ranking de pedidos que mais travam carteira | flag |
--limit |
Limite de resultados (default: 100) | --limit 20 |
2. consultando_situacao_pedidos.py
Proposito: Consulta pedidos por diversos filtros e perspectivas.
Queries cobertas: Q8, Q10, Q14, Q16, Q19
source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/consultando_situacao_pedidos.py [parametros]
| Parametro | Descricao | Exemplo |
|---|---|---|
--pedido |
Numero do pedido ou termo de busca | --pedido VCD123 |
--grupo |
Grupo empresarial (atacadao, assai, tenda) | --grupo atacadao |
--cliente |
⭐ NOVO CNPJ ou nome parcial do cliente | --cliente Carrefour, --cliente "45.543.915" |
--produto |
Filtrar por produto (combina com --grupo ou --cliente) | --produto palmito |
--atrasados |
Listar pedidos atrasados | flag |
--verificar-bonificacao |
Verificar bonificacoes faltando | flag |
--status |
Mostrar status detalhado | flag |
--consolidar-com |
Buscar pedidos para consolidar | --consolidar-com "assai 123" |
--ate-data |
Data limite de expedicao | --ate-data amanha, --ate-data 15/12 |
--em-separacao |
Buscar em Separacao (nao CarteiraPrincipal) | flag |
--limit |
Limite de resultados (default: 100) | --limit 20 |
Combinacoes suportadas:
--grupo atacadao --produto ketchup→ Pedidos do Atacadao com ketchup--cliente Carrefour --produto palmito→ Pedidos do Carrefour com palmito--cliente "45.543.915"→ Busca por CNPJ
3. consultando_produtos_estoque.py
Proposito: Consulta estoque atual, movimentacoes, pendencias, projecoes e SITUACAO COMPLETA.
Queries cobertas: Q13, Q17, Q18, Q20 + SITUACAO COMPLETA
source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/consultando_produtos_estoque.py [parametros]
| Parametro | Descricao | Exemplo |
|---|---|---|
--produto |
Nome ou termo do produto | --produto palmito, --produto "az verde" |
--completo |
⭐ SITUACAO COMPLETA (estoque, separacoes, demanda, producao, projecao) | flag |
--entradas |
Mostrar entradas recentes (qtd > 0) | flag |
--saidas |
Mostrar saidas recentes (qtd < 0) | flag |
--pendente |
Quantidade pendente de embarque + lista pedidos | flag |
--sobra |
Calcular sobra de estoque apos demanda | flag |
--ruptura |
Previsao de rupturas | flag |
--dias |
Horizonte de projecao em dias (default: 7) | --dias 14 |
--limit |
Limite de resultados (default: 100) | --limit 50 |
--limit-entradas |
Limite de movimentacoes por produto (default: 100) | --limit-entradas 20 |
Opcao --completo retorna:
- Estoque atual e menor estoque nos proximos 7 dias
- Separacoes por data de expedicao (detalhado com pedidos)
- Demanda total (Carteira bruta/liquida + Separacoes)
- Programacao de producao (proximos 14 dias)
- Projecao dia a dia (estoque projetado)
- Indicadores: sobra, cobertura em dias, % disponivel, previsao de ruptura
4. calculando_leadtime_entrega.py
Proposito: Calcula data de entrega OU data de expedicao sugerida (calculo reverso).
Queries cobertas: Q7 + CALCULO REVERSO
source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/calculando_leadtime_entrega.py [parametros]
| Parametro | Descricao | Exemplo |
|---|---|---|
--pedido |
Numero do pedido ou termo de busca | --pedido VCD123, --pedido "atacadao 183" |
--cidade |
Cidade de destino (alternativa ao pedido) | --cidade "Sao Paulo" |
--uf |
UF de destino (requerido se usar --cidade) | --uf SP |
--data-embarque |
Data de embarque (calcula data de entrega) | --data-embarque amanha |
--data-entrega |
⭐ NOVO Data de entrega desejada (calcula data de embarque) | --data-entrega 25/12 |
--limit |
Limite de opcoes de transportadora (default: 10) | --limit 3 |
Modos de operacao:
| Modo | Parametro | Descricao |
|---|---|---|
| Previsao de entrega | --data-embarque |
Se embarcar dia X, quando chega? |
| Sugestao de embarque | --data-entrega |
Para chegar dia Y, quando embarcar? |
| Auto (usa pedido) | Apenas --pedido |
Usa data_entrega_pedido para calculo reverso |
5. criando_separacao_pedidos.py
Proposito: Cria separacoes de pedidos via linguagem natural.
IMPORTANTE: Sempre executar primeiro SEM --executar para simular!
source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/criando_separacao_pedidos.py [parametros]
| Parametro | Descricao | Exemplo |
|---|---|---|
--pedido |
Numero do pedido (OBRIGATORIO) | --pedido VCD123 |
--expedicao |
Data de expedicao (OBRIGATORIO) | --expedicao amanha, --expedicao 20/12 |
--tipo |
Tipo de separacao | --tipo completa, --tipo parcial |
--pallets |
Quantidade de pallets desejada | --pallets 28 |
--pallets-inteiros |
Forcar pallets inteiros por item | flag |
--apenas-estoque |
Separar apenas o que tem em estoque | flag |
--excluir-produtos |
JSON array de produtos a excluir | --excluir-produtos '["KETCHUP","MOSTARDA"]' |
--agendamento |
Data de agendamento | --agendamento 22/12 |
--protocolo |
Protocolo de agendamento | --protocolo AG12345 |
--agendamento-confirmado |
Marcar agendamento como confirmado | flag |
--executar |
Efetivamente criar (sem isso, apenas simula) | flag |
Modos de operacao:
| Modo | Descricao |
|---|---|
Sem --executar |
SIMULA e mostra o que seria criado |
Com --executar |
CRIA efetivamente a separacao |
Tipos de separacao:
| Tipo | Parametros | Descricao |
|---|---|---|
| Completa | --tipo completa |
Todos os itens com qtd total |
| Parcial | --tipo parcial |
N itens com qtds especificas |
| Por pallets | --pallets N |
Distribuir N pallets proporcionalmente |
| Pallets inteiros | --pallets N --pallets-inteiros |
Cada item = pallets inteiros |
| Apenas estoque | --apenas-estoque |
So o que tem disponivel |
| Excluindo produtos | --excluir-produtos '[...]' |
Tudo exceto lista |
6. consultando_programacao_producao.py
Proposito: Lista programacao de producao e simula alteracoes para resolver ruptura.
Queries cobertas: Q15 + LISTAGEM COMPLETA
source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/consultando_programacao_producao.py [parametros]
| Parametro | Descricao | Exemplo |
|---|---|---|
--listar |
⭐ NOVO Lista TODA a programacao de producao | flag |
--dias |
Horizonte em dias (default: 14) | --dias 7 |
--por-dia |
Mostrar detalhes agrupados por dia | flag |
--por-linha |
Mostrar detalhes agrupados por linha | flag |
--linha |
Filtrar por linha de producao | --linha "Linha A" |
--produto |
Produto em ruptura (para reprogramacao) | --produto "VF pouch 150" |
Modos de operacao:
| Modo | Parametro | Descricao |
|---|---|---|
| Listagem | --listar |
Toda a programacao dos proximos N dias |
| Reprogramacao | --produto |
Opcoes para resolver ruptura |
Exemplo de listagem completa:
python .claude/skills/gerindo-expedicao/scripts/consultando_programacao_producao.py --listar --dias 7 --por-dia
7. resolver_entidades.py
Proposito: Modulo utilitario para resolver entidades do dominio.
Uso interno pelos outros scripts. Resolve:
- Pedidos por numero parcial ou termo
- Produtos por nome ou abreviacoes
- Grupos empresariais por nome
- Cidades por nome (normalizado)
Fluxo de Criacao de Separacao
Checklist Obrigatorio
| Campo | Obrigatorio | Como Obter |
|---|---|---|
| Pedido | SIM | Usuario informa |
| Data expedicao | SIM | Usuario informa |
| Tipo (completa/parcial) | SIM | Perguntar se nao especificado |
| Agendamento | CONDICIONAL | Verificar ContatoAgendamento pelo CNPJ |
| Protocolo | CONDICIONAL | Se exige agendamento |
Sequencia
- SIMULAR primeiro (sem --executar)
- Verificar alertas de estoque
- Mostrar resultado ao usuario
- Solicitar confirmacao
- EXECUTAR (com --executar)
Nivel de Detalhes (Progressive Disclosure)
- Resposta inicial: Resumo com 3-5 itens principais
- Se pedir mais: Mostrar mais itens do mesmo JSON
- Se pedir "todos": Lista completa
Referencias
| Arquivo | Quando Consultar |
|---|---|
| tables.md | Precisa saber nome de campo ou tipo de dados |
| business.md | Precisa de constantes, prefixos CNPJ, limites veiculos, ou formulas |
| glossary.md | Encontrou termo desconhecido (ruptura, matar, FOB, RED) |
| synonyms.md | Usuario usou termo diferente do padrao (catchup, caixa, embarque) |
| products.md | Usuario usou abreviacao de produto (CI, AZ VF, BD, IND) |
| examples.md | Precisa ver resposta esperada ou output de exemplo |
| context.md | Precisa entender contexto da empresa, clientes, ou escalar decisao |
| communication.md | Vai gerar mensagem para PCP ou Comercial |
Grupos Empresariais: --grupo atacadao, --grupo assai, --grupo tenda