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
Novo cenário
Grupo
Conector (por categoria — multi, AND)
Filtro (AND): Vtex & VarejoOnline
Canal de venda
ERP
Bonus
Integrador
Meio de pagamento
Outros
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
org: StatusFlow cluster1-completude › StatusFlow BU cluster1-bu (2300) › StatusFlow Store all-on (2401)
ERPs: 2 · canais da loja: SITE, IFOOD
CrmBonus → iFood (integrador) Updi VarejoOnline Vtex
Editar
Detalhes — descrição, previsto × recebido, timeline
Store ALL-ON 2401. ready-for-handling → ProntoSeparar. MEDIDO: updi-getvendas 1× (a CRIAÇÃO do pedido, não o PaymentApproved) e crmbonus-stock-update 1× (a reserva). O destino da rota de estoque é `Ifood`; quem executa é o CrmBonusIntegrator, e por isso o endpoint observado é do CrmBonus. varejo-create-order 0×: separação não ocorre em ProntoSeparar. vtex-stock-update 0×: loopback exclui a origem.
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 Ifood — estoque, executado pelo CrmBonusIntegrator
endpoint=crmbonus-stock-update
1+ —
· OBRIGATÓRIA VarejoOnline — sem separação em ProntoSeparar
endpoint=varejo-create-order
0..0 —
· OBRIGATÓRIA Updi — criação do pedido desce ao ERP
endpoint=updi-getvendas
1+ —
· 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
org: StatusFlow cluster1-completude › StatusFlow BU cluster1-bu (2300) › StatusFlow Store all-on (2401)
ERPs: 2 · canais da loja: SITE, IFOOD
CrmBonus → iFood (integrador) Updi VarejoOnline Vtex
Editar
Detalhes — descrição, previsto × recebido, timeline
Store ALL-ON 2401. handling → EmFaturamento: passa por ProntoSeparar (reserva estoque no CrmBonus, 1×) e dispara InvoicingStarted (Updi). updi-getvendas 2× = criação + faturamento. varejo-change-status 0×: SeparationFinished vive ADIANTE de EmFaturamento e o webhook não o alcança. 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 Updi — criação + início de faturamento
endpoint=updi-getvendas
1+ —
· OBRIGATÓRIA Ifood — reserva da CRIAÇÃO, executada pelo CrmBonusIntegrator
endpoint=crmbonus-stock-update
1+ —
· OBRIGATÓRIA VarejoOnline — 0×: SeparationFinished não é alcançável por webhook
endpoint=varejo-change-status
0..0 —
· OBRIGATÓRIA Vtex estoque — 0× (loopback exclui a origem)
endpoint=vtex-stock-update
0..0 —
· OBRIGATÓRIA CrmBonus order-status — 0× (origem-VTEX)
endpoint=crmbonus-order-status
0..0 —
REALISTA (2921) — VTEX-EmFaturamento, um ERP só sem execução
realista-emfaturamento · grupo: Realista · orderId: 00-{{run}}-01 · esperadas: 5
org: StatusFlow cluster3-realista › StatusFlow BU cluster3-bu (2920) › StatusFlow Store realista-1erp (2921)
ERPs: 1 · canais da loja: SITE, MKPlace
CrmBonus → iFood (integrador) MKPlace Updi VarejoOnline Vtex
Editar
Detalhes — descrição, previsto × recebido, timeline
Store REALISTA 2921 (um ERP, dois canais). handling → passa por ProntoSeparar e dispara InvoicingStarted. Só `Updi` recebe: a loja não tem CrmBonusIntegrator, então a reserva de estoque que a 2401 faz aqui NÃO acontece (crmbonus-stock-update 0×), e não há rota de SepFinish (varejo 0×). O contraste com all-on-emfaturamento é o ponto: mesma transição, uma linha na aba de outbound em vez de duas.
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 Updi — o único ERP da loja
endpoint=updi-getvendas
1+ —
· OBRIGATÓRIA CrmBonus estoque — 0×: sem CrmBonusIntegrator na loja
endpoint=crmbonus-stock-update
0..0 —
· OBRIGATÓRIA VarejoOnline — 0×: a 2921 não roteia SepFinish
endpoint=varejo-change-status
0..0 —
· OBRIGATÓRIA Vtex estoque — 0×: sem push de estoque nesta loja
endpoint=vtex-stock-update
0..0 —
· OBRIGATÓRIA MKPlace — 0×: despacho/entrega não ocorrem em EmFaturamento
endpoint=mkplace-tracking
0..0 —
CENARIO 1 (2922) — um ERP + canal Ifood: pedido E estoque sem execução
cenario1-pedido-e-estoque · grupo: Realista · orderId: 00-{{run}}-01 · esperadas: 5
org: StatusFlow cluster3-realista › StatusFlow BU cluster3-bu (2920) › StatusFlow Store cenario1-1erp-ifood (2922)
ERPs: 1 · canais da loja: SITE, IFOOD
CrmBonus → iFood (integrador) MKPlace Updi VarejoOnline Vtex
Editar
Detalhes — descrição, previsto × recebido, timeline
Store 2922: config no nível de LOJA, um ERP (Updi), canais SITE + IFOOD. Venda via VTEX em ready-for-handling. É o par MÍNIMO que produz as DUAS pernas: updi-getvendas (criar pedido no ERP, via IntegrateOrderCreated) e crmbonus-stock-update (atualizar estoque; o destino da rota é `Ifood`, e o CrmBonusIntegrator é quem executa). Contraste com a 2921, que tem MKPlace em vez de IFOOD e por isso produz só a perna do ERP.
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 Updi — criar pedido no ERP
endpoint=updi-getvendas
1+ —
· OBRIGATÓRIA Ifood — atualizar estoque (executa CrmBonusIntegrator)
endpoint=crmbonus-stock-update
1+ —
· OBRIGATÓRIA Vtex estoque — 0×: loopback exclui a origem do pedido
endpoint=vtex-stock-update
0..0 —
· OBRIGATÓRIA VarejoOnline — 0×: esta loja não roteia SepFinish
endpoint=varejo-change-status
0..0 —
· OBRIGATÓRIA MKPlace — 0×: não é canal desta loja
endpoint=mkplace-tracking
0..0 —
ALL-ON (2401) — VTEX-PagamentoPendente sem execução
all-on-pagamentopendente · grupo: StatusFlow · orderId: 00-{{run}}-01 · esperadas: 4
org: StatusFlow cluster1-completude › StatusFlow BU cluster1-bu (2300) › StatusFlow Store all-on (2401)
ERPs: 2 · canais da loja: SITE, IFOOD
CrmBonus → iFood (integrador) Updi VarejoOnline Vtex
Editar
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-OFF (2402) — VTEX-EmFaturamento sem execução
all-off-emfaturamento · grupo: StatusFlow · orderId: 00-{{run}}-01 · esperadas: 1
org: StatusFlow cluster1-completude › StatusFlow BU cluster1-bu (2300) › StatusFlow Store all-off (2402)
ERPs: 2 · sem canal de venda semeado
VarejoOnline Vtex
Editar
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
org: StatusFlow cluster2-hierarquia › StatusFlow BU cluster2-bu-a (2700) › StatusFlow Store hier-store (2801)
ERPs: 2 · sem canal de venda semeado
VarejoOnline Vtex
Editar
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 s
Hierarquia — loja sem config sobe até BU (2802) sem execução
hier-bu · grupo: StatusFlow · orderId: 00-{{run}}-01 · esperadas: 1
org: account 2802 fora do catálogo de orgs
VarejoOnline Vtex
Editar
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 s
Hierarquia — loja sem config (BU sem config) sobe até FG (2803) sem execução
hier-fg · grupo: StatusFlow · orderId: 00-{{run}}-01 · esperadas: 1
org: StatusFlow cluster2-hierarquia › StatusFlow BU cluster2-bu-b (2701) › StatusFlow Store hier-fg (2803)
ERPs: 2 · sem canal de venda semeado
VarejoOnline Vtex
Editar
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 s
Hierarquia — 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
org: StatusFlow cluster2-hierarquia › StatusFlow BU cluster2-bu-c (2702) › StatusFlow Store hier-company (2804)
ERPs: 2 · sem canal de venda semeado
VarejoOnline Vtex
Editar
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 s
Hierarquia — override Store=false vence tudo (2805) sem execução
hier-precedence · grupo: StatusFlow · orderId: 00-{{run}}-01 · esperadas: 1
org: account 2805 fora do catálogo de orgs
VarejoOnline Vtex
Editar
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
org: account 2806 fora do catálogo de orgs
VarejoOnline Vtex
Editar
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 s
JSON