Projeto do Agent Contas ORACLE

This commit is contained in:
2026-08-19 09:35:50 -03:00
commit 950a2bcd33
1366 changed files with 177217 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
name: contestacao_tool
version: 2
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"
# 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). Reaproveita o payload
# do prefetch da sessão quando disponível (evita 2ª chamada à API).
- id: check_invoice_status
action: check_invoice_status
input:
msisdn: $.input.msisdn
invoice_id: $.input.invoice_id
current_invoice_number: $.input.current_invoice_number
complete_invoices_payload: $.input.complete_invoices_payload
# 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. Em plano família,
# dependent_invoice_item=true força Conta Certa Manual obrigatória.
- id: consultar_contrato_corte
action: consultar_contrato_corte
input:
msisdn: $.input.msisdn
current_invoice_due_date: $.input.current_invoice_due_date
dependent_invoice_item: $.input.dependent_invoice_item
# 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 → reutiliza o CompleteInvoices do prefetch
- from: registrar_protocolo
to: check_invoice_status
# Todas as formas → abrir contestação
- from: check_invoice_status
to: abrir_contestacao_cliente
priority: 10
# Guardrail/validação financeira bloqueou a contestação: encerrar sem
# executar SMS, contrato ou SR. O MCP propaga success=false ao agente.
- from: abrir_contestacao_cliente
to: END
priority: 1
when:
eq: [$.vars.abrir_contestacao_cliente.success, false]
# 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
# Abrir SR Conta Certa Manual: após data de corte (regra padrão) OU
# contestação de item de fatura de dependente (plano família, obrigatória)
- from: consultar_contrato_corte
to: abrir_sr_conta_certa_manual
priority: 10
when:
any:
- 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]
- all:
- eq: [$.vars.consultar_contrato_corte.dependent_invoice_item, true]
# contestação registrada no portal (CRIAR ou ENVIADA): a SR manual
# de item de dependente não depende do portal pedir criação
- eq: [$.vars.consultar_contrato_corte.contestation_registered, true]
# Sem Conta Certa Manual elegível → atualiza tracking e fecha 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