first commit

This commit is contained in:
2026-06-16 20:54:49 -03:00
commit 60c2f03eb3
153 changed files with 19704 additions and 0 deletions

View File

@@ -0,0 +1 @@
version: 1

View File

@@ -0,0 +1,170 @@
name: contestacao_tool
version: 1
start: registrar_protocolo
nodes:
# 1. Registrar protocolo — primeiro passo ao entrar em contestação
- id: registrar_protocolo
action: registrar_protocolo
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
scenario: "contestacao"
request_status: "Aberto"
status: "OPENED"
# 2. Consultar perfil de fatura (forma de pagamento)
- id: consultar_perfil_fatura
action: consultar_perfil_fatura
input:
msisdn: $.input.msisdn
# 3. Enviar SMS com código do boleto
- id: enviar_sms
action: enviar_sms
input:
msisdn: $.input.msisdn
message: $.input.mensagem_sms
# 3.1 Consultar status da fatura (CompleteInvoices)
- id: check_invoice_status
action: check_invoice_status
input:
msisdn: $.input.msisdn
invoice_id: $.input.invoice_id
current_invoice_number: $.input.current_invoice_number
# 4. Abrir contestação no serviço dedicado
- id: abrir_contestacao_cliente
action: abrir_contestacao_cliente
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
customer_id: $.input.customer_id
current_invoice_number: $.input.current_invoice_number
invoice_id: $.input.invoice_id
current_invoice_due_date: $.input.current_invoice_due_date
servico: $.input.servico
valor: $.input.valor
descricao: $.input.descricao
items: $.input.items
protocolo_id: $.vars.registrar_protocolo.protocolo_id
customer_type: $.input.customer_type
customer_status: $.input.customer_status
invoice_status: $.vars.check_invoice_status.invoice_status
invoice_amount_open: $.input.invoice_amount_open
invoice_amount: $.input.invoice_amount
contestation_type: $.input.contestation_type
adjust_reason: $.input.adjust_reason
refund_option: $.input.refund_option
manual_conta_certa_indicator: $.input.manual_conta_certa_indicator
double_refund: $.input.double_refund
user_id: $.input.user_id
message_id: $.input.message_id
client_id: $.input.client_id
tipo_atendimento: $.input.tipo_atendimento
skip_invoice_item_validation: $.input.skip_invoice_item_validation
# 5. Consultar contrato para verificar data de corte
- id: consultar_contrato_corte
action: consultar_contrato_corte
input:
msisdn: $.input.msisdn
current_invoice_due_date: $.input.current_invoice_due_date
# 6. Abrir SR de Conta Certa Manual (quando após data de corte)
- id: abrir_sr_conta_certa_manual
action: abrir_sr_conta_certa_manual
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
dia_vencimento: $.vars.consultar_contrato_corte.dia_vencimento
request_status: "Encaminhado"
status: "Encaminhado"
# 7. Atualizar status do protocolo principal — último passo
- id: atualizar_status_sr
action: atualizar_status_sr
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
protocolo_id: $.vars.registrar_protocolo.protocolo_id
dia_vencimento: $.vars.abrir_sr_conta_certa_manual.dia_vencimento
scenario: "contestacao"
channel: "AIAGENTCR"
status: "Fechado"
client_id: "AIAGENTCR"
# 8. Atualiza status do protocolo principal após Conta Certa Manual
- id: atualizar_status_sr_registro
action: atualizar_status_sr
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
protocolo_id: $.vars.abrir_sr_conta_certa_manual.sr_conta_certa_id
scenario: "conta_certa_manual"
status: "Encaminhado"
client_id: "AIAGENTCR"
edges:
# Protocolo registrado → consultar perfil de fatura
- from: registrar_protocolo
to: consultar_perfil_fatura
# Consultou perfil → consulta status da fatura (CompleteInvoices)
- from: consultar_perfil_fatura
to: check_invoice_status
priority: 10
# Todas as formas → abrir contestação
- from: check_invoice_status
to: abrir_contestacao_cliente
priority: 10
# Após contestação: quando necessário, enviar SMS
- from: abrir_contestacao_cliente
to: enviar_sms
priority: 10
when:
all:
- exists: $.vars.abrir_contestacao_cliente.barcode
- neq: [$.vars.abrir_contestacao_cliente.barcode, ""]
# Após contestação (sem SMS) → verificar data de corte
- from: abrir_contestacao_cliente
to: consultar_contrato_corte
priority: 99
# Após SMS → verificar data de corte
- from: enviar_sms
to: consultar_contrato_corte
# Após data de corte → abrir SR Conta Certa Manual
- from: consultar_contrato_corte
to: abrir_sr_conta_certa_manual
priority: 10
when:
all:
- eq: [$.vars.consultar_contrato_corte.apos_data_corte, true]
- eq: [$.vars.consultar_contrato_corte.contestation_success, true]
- any:
- eq: [$.input.manual_conta_certa_indicator, true]
- eq: [$.vars.abrir_contestacao_cliente.manual_conta_certa_indicator, true]
# Antes da data de corte → ir direto para fechar protocolo
- from: consultar_contrato_corte
to: atualizar_status_sr
priority: 99
# Após SR manual → fechar protocolo
- from: abrir_sr_conta_certa_manual
to: atualizar_status_sr_registro
priority: 10
# Protocolo principal de contestação atualizado após Conta Certa Manual → END
- from: atualizar_status_sr_registro
to: END
# Protocolo atualizado → END
- from: atualizar_status_sr
to: END

View File

@@ -0,0 +1 @@
version: 2

View File

@@ -0,0 +1,85 @@
name: invoice_explanation
version: 2
start: preparar
nodes:
- id: preparar
action: preparar_invoice_explanation
input:
msisdn: $.input.msisdn
customer_id: $.input.customer_id
current_invoice_number: $.input.current_invoice_number
past_invoice_number: $.input.past_invoice_number
current_invoice_due_date: $.input.current_invoice_due_date
past_invoice_due_date: $.input.past_invoice_due_date
channel: $.input.channel
tentativa_anterior: $.vars.preparar.tentativa
invoice_explanation_base: $.input.invoice_explanation_base
- id: formatar
action: formatar_invoice_explanation
input:
explicacao_base: $.vars.preparar.explicacao_base
invoice_detail: $.input.invoice_detail
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: decisao
action: no_op
input: {}
- id: registrar_sim
action: registrar_atendimento_invoice_explanation
input:
resposta_usuario: SIM
ic: VEB.003
- id: registrar_protocolo_aceite
action: registrar_protocolo_inicio
input:
msisdn: $.input.msisdn
scenario: invoice_explanation_aceite_fechado
request_status: Fechado
status: CLOSED
- id: registrar_nao
action: registrar_atendimento_invoice_explanation
input:
resposta_usuario: NAO
ic: VEB.004
edges:
- from: preparar
to: formatar
- from: formatar
to: decisao
- from: decisao
to: registrar_sim
priority: 10
when:
eq: [$.input.resposta_usuario, SIM]
- from: decisao
to: registrar_nao
priority: 20
when:
eq: [$.input.resposta_usuario, NAO]
- from: registrar_sim
to: registrar_protocolo_aceite
- from: registrar_protocolo_aceite
to: END
- from: registrar_nao
to: END

View File

@@ -0,0 +1 @@
version: 3

View File

@@ -0,0 +1,210 @@
name: pro_rata
version: 2
start: preparar
nodes:
- id: preparar
action: preparar_pro_rata
input:
msisdn: $.input.msisdn
planos: $.input.planos
has_plano_controle: $.input.has_plano_controle
- id: formatar
action: formatar_pro_rata
input:
mensagem_base: $.vars.preparar.mensagem
pause:
enabled: true
when:
eq: [$.vars.preparar.await_user_input, true]
return_from: $.output.mensagem
expected_input:
key: resposta_usuario
allowed_values: ["SIM", "NAO", "OUTRO"]
normalize: upper_strip
resume_from: decisao_esclarecimento
- id: decisao_esclarecimento
action: no_op
input: {}
- id: ofertar_ajuste
action: formatar_pro_rata
input:
mensagem_base: $.vars.preparar.mensagem_oferta_ajuste
pause:
enabled: true
return_from: $.output.mensagem
expected_input:
key: resposta_usuario
allowed_values: ["SIM", "NAO", "OUTRO"]
normalize: upper_strip
resume_from: decisao_ajuste
- id: decisao_ajuste
action: no_op
input: {}
- id: reperguntar_esclarecimento
action: formatar_pro_rata
input:
mensagem_base: $.vars.preparar.mensagem_reperguntar_esclarecimento
pause:
enabled: true
return_from: $.output.mensagem
expected_input:
key: resposta_usuario
allowed_values: ["SIM", "NAO", "OUTRO"]
normalize: upper_strip
resume_from: decisao_esclarecimento
- id: reperguntar_ajuste
action: formatar_pro_rata
input:
mensagem_base: $.vars.preparar.mensagem_reperguntar_ajuste
pause:
enabled: true
return_from: $.output.mensagem
expected_input:
key: resposta_usuario
allowed_values: ["SIM", "NAO", "OUTRO"]
normalize: upper_strip
resume_from: decisao_ajuste
- id: registrar_nao_controle
action: registrar_atendimento_pro_rata
input:
msisdn: $.input.msisdn
mensagem_base: $.vars.formatar.mensagem
caminho: nao_controle
- id: registrar_aceitou
action: registrar_atendimento_pro_rata
input:
msisdn: $.input.msisdn
mensagem_base: $.vars.preparar.mensagem_pos_aceite
caminho: aceitou
ic: VEB.003
- id: registrar_recusou_ajuste
action: registrar_atendimento_pro_rata
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
mensagem_base: $.vars.preparar.mensagem_ajuste_recusado
caminho: recusou_ajuste
ic: VEB.003
- id: executar_contestacao
action: executar_contestacao_plano_controle
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
customer_id: $.input.customer_id
current_invoice_number: $.input.current_invoice_number
current_invoice_due_date: $.input.current_invoice_due_date
customer_type: $.input.customer_type
customer_status: $.input.customer_status
invoice_status: $.input.invoice_status
adjust_reason: $.input.adjust_reason
refund_option: $.input.refund_option
manual_conta_certa_indicator: $.input.manual_conta_certa_indicator
items: $.vars.definir_devolucao.items
invoice_amount_open: $.vars.definir_devolucao.invoice_amount_open
invoice_amount: $.vars.definir_devolucao.invoice_amount
devolucao: $.vars.definir_devolucao
- id: definir_devolucao
action: definir_devolucao_ajuste_pro_rata
input:
msisdn: $.input.msisdn
planos: $.input.planos
invoice_id: $.input.invoice_id
customer_id: $.input.customer_id
invoice_detail: $.input.invoice_detail
invoice_period: $.input.invoice_period
invoice_emissao: $.input.invoice_emissao
- id: orientar_pagamento
action: orientar_pagamento_pro_rata
input:
msisdn: $.input.msisdn
devolucao: $.vars.executar_contestacao.devolucao
- id: registrar_atendimento
action: registrar_atendimento_pro_rata
input:
msisdn: $.input.msisdn
social_sec_no: $.input.social_sec_no
mensagem_base: $.vars.orientar_pagamento.mensagem
devolucao: $.vars.orientar_pagamento.devolucao
caminho: nao_aceitou
ic: VEB.004
edges:
- from: preparar
to: formatar
- from: formatar
to: decisao_esclarecimento
priority: 10
when:
eq: [$.vars.preparar.await_user_input, true]
- from: formatar
to: registrar_nao_controle
priority: 20
- from: decisao_esclarecimento
to: registrar_aceitou
priority: 10
when:
eq: [$.input.resposta_usuario, SIM]
- from: decisao_esclarecimento
to: ofertar_ajuste
priority: 20
when:
eq: [$.input.resposta_usuario, NAO]
- from: decisao_esclarecimento
to: reperguntar_esclarecimento
priority: 30
- from: decisao_ajuste
to: definir_devolucao
priority: 10
when:
eq: [$.input.resposta_usuario, SIM]
- from: decisao_ajuste
to: registrar_recusou_ajuste
priority: 20
when:
eq: [$.input.resposta_usuario, NAO]
- from: decisao_ajuste
to: reperguntar_ajuste
priority: 30
- from: definir_devolucao
to: executar_contestacao
- from: executar_contestacao
to: orientar_pagamento
- from: orientar_pagamento
to: registrar_atendimento
- from: registrar_nao_controle
to: END
- from: registrar_aceitou
to: END
- from: registrar_recusou_ajuste
to: END
- from: registrar_atendimento
to: END

View File

@@ -0,0 +1,104 @@
name: pro_rata
version: 3
start: preparar
nodes:
- id: preparar
action: preparar_pro_rata
input:
msisdn: $.input.msisdn
planos: $.input.planos
has_plano_controle: $.input.has_plano_controle
- id: formatar
action: formatar_pro_rata
input:
mensagem_base: $.vars.preparar.mensagem
pause:
enabled: true
when:
eq: [$.vars.preparar.await_user_input, true]
return_from: $.output.mensagem
expected_input:
key: resposta_usuario
allowed_values: ["SIM", "NAO", "OUTRO"]
normalize: upper_strip
resume_from: decisao_esclarecimento
- id: decisao_esclarecimento
action: no_op
input: {}
- id: devolver_orquestrador
action: no_op
input: {}
- id: reperguntar_esclarecimento
action: formatar_pro_rata
input:
mensagem_base: $.vars.preparar.mensagem_reperguntar_esclarecimento
pause:
enabled: true
return_from: $.output.mensagem
expected_input:
key: resposta_usuario
allowed_values: ["SIM", "NAO", "OUTRO"]
normalize: upper_strip
resume_from: decisao_esclarecimento
- id: registrar_nao_controle
action: registrar_atendimento_pro_rata
input:
msisdn: $.input.msisdn
mensagem_base: $.vars.formatar.mensagem
caminho: nao_controle
- id: registrar_aceitou
action: registrar_atendimento_pro_rata
input:
msisdn: $.input.msisdn
mensagem_base: $.vars.preparar.mensagem_pos_aceite
caminho: aceitou
ic: VEB.003
edges:
- from: preparar
to: formatar
- from: formatar
to: decisao_esclarecimento
priority: 10
when:
eq: [$.vars.preparar.await_user_input, true]
- from: formatar
to: registrar_nao_controle
priority: 20
- from: decisao_esclarecimento
to: registrar_aceitou
priority: 10
when:
eq: [$.input.resposta_usuario, SIM]
- from: decisao_esclarecimento
to: devolver_orquestrador
priority: 20
when:
eq: [$.input.resposta_usuario, NAO]
- from: decisao_esclarecimento
to: reperguntar_esclarecimento
priority: 30
- from: devolver_orquestrador
to: END
- from: reperguntar_esclarecimento
to: decisao_esclarecimento
- from: registrar_nao_controle
to: END
- from: registrar_aceitou
to: END

View File

@@ -0,0 +1 @@
version: 3

View File

@@ -0,0 +1,132 @@
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
# Bundle puro (sem item estratégico): após a pausa em "sanei sua dúvida?", o
# cliente respondeu. O agente não cancela bundle, então fecha com a reafirmação
# breve (resposta_bundle) e registra/finaliza, independente de SIM/NAO. Tem
# precedência (priority menor) sobre os ramos SIM/NAO do estratégico.
- from: decisao
to: resposta_bundle
priority: 5
when:
eq: [$.vars.preparar.has_estrategico_items, false]
- from: decisao
to: resposta_sim
priority: 10
when:
eq: [$.input.resposta_usuario, SIM]
- from: decisao
to: explicar_cancelamento
priority: 20
when:
eq: [$.input.resposta_usuario, NAO]
- 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