Cenários
Cenários nomeados: provisionam as respostas passivas, disparam o webhook order-notice com um
traceId e aferem o fan-out (chamadas esperadas × recebidas) correlacionado por esse trace.
Rodar é feito pela Api (POST /_sim/scenarios/{id}/run); o resultado é lido do arquivo.
Legenda:
OUT ▲ Simulation → HAASS (ação)
IN ▼ HAASS → Simulation (recebida)
·
OBRIGATÓRIA decide pass/fail
CATÁLOGO verificação (soft-delete)
NÃO ESPERADA fora do previsto
Grupo
Conector (por categoria — multi, AND)
Filtro (AND): Vtex
Canal de venda
ERP
Bonus
Integrador
Vtex = canal-fonte de todo cenário. Integrador = conecta o
HAASS ao meio final (CrmBonus → iFood; SystemHope → Shopify). Clientes sem integrador
integram direto com o provider. Ver
specs/Integration/023.
ALL-ON (2401) — VTEX-ProntoSeparar sem execução
all-on-prontoseparar
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 5
CrmBonus → iFood (integrador)
Updi
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store ALL-ON 2401. ready-for-handling → ProntoSeparar: dispara ReserveStock (CrmBonus; a Vtex é dropada por loopback origem-VTEX → vtex-stock-update 0×). IntegrateOrderPaymentApproved não tem handler/rota → nenhuma outra chamada. Prova que ProntoSeparar reserva estoque mas NÃO separa nem desce ao ERP (SeparationStarted vive em ProntoFaturar, inalcançável via VTEX).
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice ready-for-handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
CrmBonus — reserva de estoque (ReserveStock)
endpoint=crmbonus-stock-update |
1+ | — |
| · |
OBRIGATÓRIA
VarejoOnline — sem separação em ProntoSeparar
endpoint=varejo-create-order |
0..0 | — |
| · |
OBRIGATÓRIA
Updi — sem descida ao ERP (PaymentApproved sem handler)
endpoint=updi-getvendas |
0..0 | — |
| · |
OBRIGATÓRIA
Vtex estoque — suprimido (loopback origem-VTEX)
endpoint=vtex-stock-update |
0..0 | — |
| · |
OBRIGATÓRIA
CrmBonus order-status — 0× (origem-VTEX)
endpoint=crmbonus-order-status |
0..0 | — |
ALL-ON (2401) — VTEX-EmFaturamento sem execução
all-on-emfaturamento
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 5
CrmBonus → iFood (integrador)
Updi
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store ALL-ON 2401. handling → EmFaturamento: SeparationFinished (VarejoOnline, change-status) + InvoicingStarted (Updi, updi-getvendas). NÃO reserva estoque neste status (crmbonus-stock-update 0×). crmbonus-order-status 0× (origem-VTEX sem ECCrmBonusSequence).
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — change status (SeparationFinished)
endpoint=varejo-change-status |
1+ | — |
| · |
OBRIGATÓRIA
Updi — início de faturamento (InvoicingStarted)
endpoint=updi-getvendas |
1+ | — |
| · |
OBRIGATÓRIA
CrmBonus estoque — 0× (EmFaturamento não reserva)
endpoint=crmbonus-stock-update |
0..0 | — |
| · |
OBRIGATÓRIA
Vtex estoque — 0×
endpoint=vtex-stock-update |
0..0 | — |
| · |
OBRIGATÓRIA
CrmBonus order-status — 0× (origem-VTEX)
endpoint=crmbonus-order-status |
0..0 | — |
ALL-ON (2401) — VTEX-PagamentoPendente sem execução
all-on-pagamentopendente
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 4
CrmBonus → iFood (integrador)
Updi
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store ALL-ON 2401. payment-pending → PagamentoPendente: IntegrateOrderCreated (Updi, updi-getvendas) + ReserveStock (CrmBonus; Vtex dropada por loopback). SEM separação (varejo-create-order 0×). Prova o gating por status do Map.
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice payment-pending
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
CrmBonus — reserva de estoque (ReserveStock)
endpoint=crmbonus-stock-update |
1+ | — |
| · |
OBRIGATÓRIA
Updi — descida do pedido ao ERP (IntegrateOrderCreated)
endpoint=updi-getvendas |
1+ | — |
| · |
OBRIGATÓRIA
VarejoOnline — NÃO deve separar (sem SeparationStarted)
endpoint=varejo-create-order |
0..0 | — |
| · |
OBRIGATÓRIA
Vtex estoque — suprimido (loopback origem-VTEX)
endpoint=vtex-stock-update |
0..0 | — |
ALL-ON (2401) — VTEX-Cancelado sem execução
all-on-cancelado
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 4
CrmBonus → iFood (integrador)
Updi
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store ALL-ON 2401. canceled → Cancelado: IntegrateOrderCancelled (Updi, updi-getvendas) + DropReserveStock. O DROP não exclui a origem (loopback assimétrico) → o estoque vai a CrmBonus E Vtex (vtex-stock-update REAPARECE, diferente do forward). crmbonus-order-status = 0× (origem-VTEX sem ECCrmBonusSequence).
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice canceled
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
Updi — order (IntegrateOrderCancelled)
endpoint=updi-getvendas |
1+ | — |
| · |
OBRIGATÓRIA
CrmBonus — drop de estoque (DropReserveStock)
endpoint=crmbonus-stock-update |
1+ | — |
| · |
OBRIGATÓRIA
Vtex — drop de estoque (SEM loopback no drop)
endpoint=vtex-stock-update |
1+ | — |
| · |
OBRIGATÓRIA
CrmBonus order-status — 0× (origem-VTEX)
endpoint=crmbonus-order-status |
0..0 | — |
ALL-OFF (2402) — VTEX-EmFaturamento sem execução
all-off-emfaturamento
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store ALL-OFF 2402 (nenhuma linha FlowSettingValue → tudo cai no DefaultValue='false'). EmFaturamento não produz fan-out: varejo-change-status 0× (ausência). Prova que sem config nada sai.
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — nao deve ocorrer
endpoint=varejo-change-status |
0..0 | — |
Hierarquia — Store resolve direto (2801) sem execução
hier-store
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store 2801 tem SepFinish @ Store/2801=true → resolve no próprio nível Store (o mais específico). varejo-change-status.
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — change status (resolve via Store)
endpoint=varejo-change-status |
1+ | — |
sentinela:
endpoint=varejo-change-status · timeout 90 sHierarquia — loja sem config sobe até BU (2802) sem execução
hier-bu
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store 2802 NÃO tem linha de SepFinish. Sobe a hierarquia: Store(nada)→BU/2700(true) → resolve via BusinessUnit. Prova que a loja não configurada usa a config da BU (e que BU vence FG/Company — mais específico).
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — change status (resolve via BU/2700)
endpoint=varejo-change-status |
1+ | — |
sentinela:
endpoint=varejo-change-status · timeout 90 sHierarquia — loja sem config (BU sem config) sobe até FG (2803) sem execução
hier-fg
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store 2803 (BU 2701, sem linha de SepFinish na Store nem na BU 2701). Sobe: Store(nada)→BU 2701(nada)→FG/2600(true) → resolve via FranchiseeGroup. Prova o fallback até o FG quando Store e BU não têm config.
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — change status (resolve via FG/2600)
endpoint=varejo-change-status |
1+ | — |
sentinela:
endpoint=varejo-change-status · timeout 90 sHierarquia — loja sem config (BU e FG sem config) sobe até Company (2804) sem execução
hier-company
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store 2804 (FG 2601, BU 2702, ambos sem linha). Sobe até o topo: Store→BU 2702(nada)→FG 2601(nada)→Company/2500(true) → resolve via Company. Prova o fallback até a Company.
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — change status (resolve via Company/2500)
endpoint=varejo-change-status |
1+ | — |
sentinela:
endpoint=varejo-change-status · timeout 90 sHierarquia — override Store=false vence tudo (2805) sem execução
hier-precedence
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store 2805 tem SepFinish @ Store/2805=FALSE, mesmo com BU/2700 e Company/2500 = true. O mais específico ganha (Store) → resolve OFF: varejo-change-status 0×. Prova a precedência do override no nível Store + que não vaza para as irmãs (2802 resolve BU normalmente).
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — nao deve ocorrer
endpoint=varejo-change-status |
0..0 | — |
Hierarquia — canal SITE resolve (2806) sem execução
hier-channel
· grupo: StatusFlow · orderId: 00-{{run}}-01
· esperadas: 1
VarejoOnline
Vtex
Detalhes — descrição, previsto × recebido, timeline
Store 2806 tem SepFinish @ Store/2806 + SalesChannelId=1 (SITE). O pedido VTEX resolve SITE(1) e casa a linha de canal → varejo-change-status. Prova a dimensão de canal na resolução.
Previsto × recebido
sem execução — só o previsto
OUT ▲ OUTBOUND — ações (Simulation → HAASS)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
AÇÃO
POST
notice handling
/api/v1.0/vtex/order-notice |
1 | — |
IN ▼ IN — Obrigatórias (decidem pass/fail)
| Chamada | Previsto | Veio | |
|---|---|---|---|
| · |
OBRIGATÓRIA
VarejoOnline — change status (resolve via Store + canal SITE)
endpoint=varejo-change-status |
1+ | — |
sentinela:
endpoint=varejo-change-status · timeout 90 sJSON