name: vas_estrategico version: 3 start: preparar nodes: - id: preparar action: preparar_vas_estrategico input: items: $.input.items linhas: $.input.linhas pause: enabled: true when: eq: [$.output.await_user_input, true] return_from: $.output.mensagem expected_input: key: resposta_usuario allowed_values: ["SIM", "NAO", "OUTRO"] normalize: upper_strip resume_from: decisao - id: resposta_bundle action: montar_resposta_texto input: dados: texto_usuario: $.vars.preparar.mensagem_bundle_fechamento - id: decisao action: no_op input: {} - id: resposta_sim action: montar_resposta_texto input: dados: texto_usuario: $.vars.preparar.mensagem_pos_aceite - id: explicar_cancelamento action: montar_explicacao_cancelamento_vas_estrategico input: linhas: $.vars.preparar.linhas orientacoes_cancelamento: $.input.orientacoes_cancelamento - id: registrar_sim action: registrar_atendimento_vas_estrategico input: linhas: $.vars.preparar.linhas mensagem_base: $.vars.resposta_sim.mensagem request_status: "Fechado" status: "CLOSED" - id: registrar_nao action: registrar_atendimento_vas_estrategico input: linhas: $.vars.preparar.linhas mensagem_base: $.vars.explicar_cancelamento.mensagem request_status: "Fechado" status: "CLOSED" - id: registrar_bundle action: registrar_atendimento_vas_estrategico input: linhas: $.vars.preparar.linhas mensagem_base: $.vars.resposta_bundle.mensagem request_status: "Fechado" status: "CLOSED" - id: registrar_outro action: registrar_atendimento_vas_estrategico input: linhas: $.vars.preparar.linhas mensagem_base: "Atendimento encerrado sem confirmação de manutenção do serviço." request_status: "Fechado" status: "CLOSED" edges: - from: preparar to: decisao priority: 10 when: eq: [$.vars.preparar.await_user_input, true] - from: preparar to: resposta_bundle priority: 20 # Decisão pós-pausa. A pergunta "aceitou a explicação?" decide ANTES da # distinção bundle (igual ao diagrama). OUTRO nunca chega aqui: o runtime # intercepta resposta ambígua antes de retomar (fluxo_repergunta_outro # re-explica e repergunta), então resposta_usuario é sempre SIM ou NAO. # Aceitou (SIM) — bundle OU estratégico: sem reforço, só registra/finaliza. - from: decisao to: resposta_sim priority: 10 when: eq: [$.input.resposta_usuario, SIM] # Não aceitou (NAO) + há estratégico: explica o procedimento de cancelamento # do(s) estratégico(s) (pedidos mistos seguem por aqui, como antes). - from: decisao to: explicar_cancelamento priority: 20 when: all: - eq: [$.vars.preparar.has_estrategico_items, true] - eq: [$.input.resposta_usuario, NAO] # Não aceitou (NAO) + bundle puro (sem estratégico): reforça a impossibilidade # de cancelar. SIM já foi tratado acima (priority menor), então aqui só cai NAO. - from: decisao to: resposta_bundle priority: 30 when: eq: [$.vars.preparar.has_estrategico_items, false] - from: decisao to: registrar_outro priority: 99 - from: resposta_sim to: registrar_sim - from: explicar_cancelamento to: registrar_nao - from: registrar_sim to: END - from: registrar_nao to: END - from: resposta_bundle to: registrar_bundle - from: registrar_bundle to: END - from: registrar_outro to: END