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

17
config/agents.yaml Normal file
View File

@@ -0,0 +1,17 @@
default_agent_id: telecom_contas
agents:
- agent_id: telecom_contas
name: TIM Contas - Agent Framework OCI
description: Migração framework-native do agente Contas TIM.
prompt_policy_path: ./config/prompt_policy.yaml
routing_config_path: ./config/routing.yaml
guardrails_config_path: ./config/guardrails.yaml
judges_config_path: ./config/judges.yaml
mcp_servers_config_path: ./config/mcp_servers.yaml
tools_config_path: ./config/tools.yaml
metadata:
domain: telecom_contas
system_prefix: |
Você está executando o agente Contas TIM sobre o agent_framework_oci.
Roteamento, stickiness, memória, clarificação, confirmações transacionais, RAG, guardrails e judges são responsabilidades do framework.
O agente de domínio contém somente regras específicas de negócio.

View File

@@ -0,0 +1,8 @@
input:
- code: MSK
enabled: true
- code: VLOOP
enabled: true
output:
- code: REVPREC
enabled: true

View File

@@ -0,0 +1,7 @@
judges:
- name: response_quality
enabled: true
threshold: 0.7
- name: groundedness
enabled: true
threshold: 0.6

View File

@@ -0,0 +1,6 @@
id: retail_orders_prompt_policy
version: 1
description: Prompt base isolado do agente de varejo/pedidos.
system_prefix: |
Você é um agente corporativo de varejo especializado em pedidos, entrega, troca, devolução e garantia.
Seja claro, objetivo e não use regras de negócio de telecom neste agente.

View File

@@ -0,0 +1,8 @@
input:
- code: MSK
enabled: true
- code: VLOOP
enabled: true
output:
- code: REVPREC
enabled: true

View File

@@ -0,0 +1,20 @@
enabled: true
fail_closed: true
profile: judge
judges:
- name: response_quality
enabled: true
threshold: 0.7
- name: groundedness
enabled: true
threshold: 0.6
- name: sentiment
enabled: true
fail_on_negative: false
- name: tone
enabled: true
fail_closed: true

View File

@@ -0,0 +1,6 @@
id: telecom_contas_prompt_policy
version: 1
description: Prompt base isolado do agente de telecom/contas.
system_prefix: |
Você é um agente corporativo de atendimento telecom especializado em faturas, produtos, VAS e suporte.
Seja claro, objetivo e não prometa execução operacional sem ferramenta ou confirmação válida.

29
config/guardrails.yaml Normal file
View File

@@ -0,0 +1,29 @@
# Guardrails executados pelo Agent Framework OCI.
# O domínio Contas apenas configura policies; a engine e o LLM dos rails são do framework.
input:
- {code: INPUT_SIZE, enabled: true}
- {code: MSK, enabled: true}
- {code: DLEX_IN, enabled: true}
- {code: TOX, enabled: true}
- {code: PINJ, enabled: true}
- {code: COER, enabled: true}
- {code: VLOOP, enabled: true}
output:
- {code: OOS, enabled: true}
- {code: AOFERTA, enabled: true}
- {code: REVPREC, enabled: true}
- {code: FRASEOLOGIA, enabled: true}
- {code: PINJ, enabled: true}
- {code: DLEX_OUT, enabled: true}
- {code: TOXOUT, enabled: true}
- {code: CMP, enabled: true}
- {code: GND, enabled: true}
- {code: ALUC_RISK, enabled: true}
retrieval:
- {code: RAGSEC, enabled: true}
- {code: RET_REL, enabled: true}
tool:
- {code: TOOL_VAL, enabled: true}

55
config/identity.yaml Normal file
View File

@@ -0,0 +1,55 @@
identity:
version: "2"
required:
- session_key
keys:
customer_key:
description: Cliente/assinante/consumidor canônico.
sources:
- business_context.customer_key
- customer_key
- msisdn
- customer_id
- user_id
- ani
- from
contract_key:
description: Contrato, conta, fatura, pedido ou asset principal.
sources:
- business_context.contract_key
- contract_key
- invoice_id
- current_invoice_number
- order_id
- pedido_id
- asset_id
interaction_key:
description: Chave externa da interação/call/chat vinda do canal.
sources:
- business_context.interaction_key
- interaction_key
- ura_call_id
- call_id
- message_id
account_key:
description: Conta de cobrança/conta comercial.
sources:
- business_context.account_key
- account_key
- account_id
- billing_account_id
resource_key:
description: Recurso/linha/produto/asset específico.
sources:
- business_context.resource_key
- resource_key
- asset_id
- product_id
- sku
session_key:
description: Sessão técnica estável já escopada por tenant e agente.
sources:
- business_context.session_key
- session_key
- conversation_key
- session_id

8
config/judges.yaml Normal file
View File

@@ -0,0 +1,8 @@
enabled: true
fail_closed: true
profile: judge
judges:
- {name: response_quality, enabled: true, threshold: 0.70}
- {name: groundedness, enabled: true, threshold: 0.60}
sample_rate: 0.10
always_run_for_transactional: true

View File

@@ -0,0 +1,114 @@
mcp_parameter_mapping:
defaults:
use_mock: true
tools:
consultar_faturas:
map:
customer_key: msisdn
session_key: session_id
invoice_explanation:
map:
customer_key: msisdn
session_key: session_id
consultar_vas:
map:
customer_key: msisdn
session_key: session_id
consultar_historico_vas:
map:
customer_key: msisdn
session_key: session_id
consultar_status_solicitacao:
map:
customer_key: msisdn
interaction_key: protocol
session_key: session_id
consultar_tracking:
map:
customer_key: msisdn
interaction_key: protocol
session_key: session_id
cancelar_vas_avulso:
map:
customer_key: msisdn
session_key: session_id
extract:
subject:
from: message
type: string
strategy: llm
description: Extraia somente o nome do serviço que o cliente quer cancelar.
Retorne null se não estiver claro.
tratar_vas_estrategico:
map:
customer_key: msisdn
session_key: session_id
extract:
subject:
from: message
type: string
strategy: llm
description: Extraia somente o nome do serviço estratégico ou incluso citado
pelo cliente.
contestar_cobranca:
map:
customer_key: msisdn
session_key: session_id
extract:
subject:
from: message
type: string
strategy: llm
description: Extraia o nome do serviço/item cuja cobrança será contestada.
valor:
from: message
type: number
strategy: llm
description: Extraia o valor monetário explicitamente associado ao item.
Retorne null se não houver valor.
motivo:
from: message
type: string
strategy: llm
description: Extraia o motivo da contestação em frase curta; null se não
informado.
finalizar_atendimento:
map:
customer_key: msisdn
session_key: session_id
enviar_sms:
map:
customer_key: msisdn
session_key: session_id
extract:
message:
from: message
type: string
strategy: llm
description: Mensagem SMS explicitamente definida pelo fluxo de domínio.
recuperar_fatura_pdf:
map:
customer_key: msisdn
contract_key: invoice_id
session_key: session_id
pro_rata:
map:
customer_key: msisdn
session_key: session_id
termino_desconto:
map:
customer_key: msisdn
session_key: session_id
extract:
nome_plano:
from: message
type: string
strategy: llm
description: Extraia o nome do plano se explicitamente citado; null se ausente.
valor_divergente:
map:
customer_key: msisdn
session_key: session_id
retomar_workflow:
map:
session_key: session_id

View File

@@ -0,0 +1,6 @@
servers:
contas:
enabled: true
transport: http
endpoint: http://contas-mcp:8400/mcp
description: Adapter MCP do domínio Contas em Docker Compose, usando MockApiGateway no perfil local.

6
config/mcp_servers.yaml Normal file
View File

@@ -0,0 +1,6 @@
servers:
contas:
enabled: true
transport: http
endpoint: http://localhost:8400/mcp
description: MCP nativo do domínio Contas. Não depende do pacote anterior; em local usa fixtures e em modo real chama APIs TIM.

10
config/prompt_policy.yaml Normal file
View File

@@ -0,0 +1,10 @@
tone:
style: claro, objetivo, empático e direto
vocabulary:
preferred:
fatura: fatura
contestacao: contestação
servico: serviço
policies:
framework_responsibilities: [routing, route_stickiness, transaction_confirmation, clarification, memory, rag, guardrails, judges]
domain_responsibilities: [billing_rules, vas_classification, contestation_eligibility, tim_api_contracts]

View File

@@ -0,0 +1,8 @@
system: |
Você é o agente de Fatura e Explicação do Contas TIM.
Responda somente sobre dados da fatura, variação, composição, vencimento, valores e explicações.
Use as tools retornadas pelo EnterpriseRouter; não invente dados de fatura.
Não implemente confirmação, stickiness, coleta transacional, memória, guardrails ou RAG no texto: essas responsabilidades são do agent_framework_oci.
Se houver resultado de invoice_explanation, preserve nomes, valores e conclusões vindas da tool.
Não prometa nem estime valores de faturas futuras.
Seja objetivo e mantenha o comportamento de negócio do Contas.

View File

@@ -0,0 +1,7 @@
system: |
Você é o agente de Contestação e Ações do Contas TIM.
Trabalhe apenas com itens explicitamente identificados pelos dados da fatura/tool.
Cancelamento de VAS avulso, contestação e demais mutações são transações determinísticas: nunca execute ação em texto livre.
O agent_framework_oci coleta parâmetros, mantém stickiness e exige confirmação antes da tool transacional.
Não conceda ressarcimento em dobro quando a regra de negócio não permitir.
Comunique o resultado real da tool, sem inventar protocolo ou sucesso.

View File

@@ -0,0 +1,5 @@
system: |
Você é o agente de Suporte e Encerramento do Contas TIM.
Trate acompanhamento de solicitações, tracking, envio/recuperação de fatura e encerramento.
Handoff humano e encerramento são estados do framework; não tente inferir confirmações de outras transações.
Use respostas curtas, com o status efetivamente retornado pelas integrações.

6
config/prompts/vas.yaml Normal file
View File

@@ -0,0 +1,6 @@
system: |
Você é o agente de Serviços/VAS do Contas TIM.
Explique serviços avulsos, estratégicos e inclusos no plano usando dados das tools e RAG.
Nunca transforme serviço estratégico/incluso em cancelável por inferência.
Para ação transacional, apenas descreva o que será feito; confirmação e execução são controladas pelo agent_framework_oci.
Não duplique regras de roteamento, continuidade, clarificação, guardrails ou memória no prompt.

297
config/routing.yaml Normal file
View File

@@ -0,0 +1,297 @@
router:
mode: router
fallback_agent: faturas_agent
confidence_threshold: 0.7
allow_handoff: true
state_policies:
- state: WAITING_FATURAS_CONFIRMATION
agent: faturas_agent
- state: WAITING_VAS_CONFIRMATION
agent: vas_agent
- state: WAITING_CONTESTACAO_CONFIRMATION
agent: contestacao_agent
- state: WAITING_SUPORTE_CONTAS_CONFIRMATION
agent: suporte_contas_agent
- state: COLLECTING_FATURAS_PARAMETERS
agent: faturas_agent
- state: COLLECTING_VAS_PARAMETERS
agent: vas_agent
- state: COLLECTING_CONTESTACAO_PARAMETERS
agent: contestacao_agent
- state: COLLECTING_SUPORTE_CONTAS_PARAMETERS
agent: suporte_contas_agent
intents:
- name: contas_invoice_query
domain: telecom_contas
agent: faturas_agent
priority: 140
description: Consulta, visualização, obtenção ou segunda via de fatura/conta sem
pedido de explicação de cobrança.
mcp_tools:
- consultar_faturas
keywords:
- quero minha fatura
- ver minha fatura
- consultar fatura
- consultar minha fatura
- mostrar minha fatura
- me mostra minha fatura
- segunda via
- segunda via da fatura
- obter fatura
- baixar fatura
- minha conta
- minhas faturas
- fatura atual
- última fatura
- ultima fatura
- fatura em aberto
- conta em aberto
examples:
- Quero minha fatura
- Quero ver a minha conta
- Pode consultar minha fatura atual?
- Preciso da segunda via da fatura
- Tenho alguma fatura em aberto?
- name: contas_invoice_explanation
domain: telecom_contas
agent: faturas_agent
priority: 130
description: Explicação, composição, diferença, aumento, variação ou dúvida sobre
valores/cobranças de uma fatura já conhecida.
mcp_tools:
- invoice_explanation
keywords:
- explicar fatura
- explique minha fatura
- entender minha fatura
- entender minha conta
- fatura veio alta
- conta veio alta
- veio mais cara
- valor aumentou
- diferença de valor
- divergência na fatura
- divergencia na fatura
- não entendi a cobrança
- nao entendi a cobranca
- por que cobraram
- por que veio esse valor
- composição da fatura
- composicao da fatura
- detalhar cobrança
- detalhar cobranca
examples:
- Minha fatura veio mais alta
- Quero entender minha conta
- Por que esse valor mudou?
- Explique essas cobranças da minha fatura
- Por que minha conta aumentou este mês?
- name: contas_contestation
domain: telecom_contas
agent: contestacao_agent
priority: 150
description: Contestação, reclamação ou pedido de ajuste por cobrança que o cliente
considera indevida.
mcp_tools:
- consultar_faturas
- invoice_explanation
- contestar_cobranca
keywords:
- contestar
- contestação
- contestacao
- cobrança indevida
- cobranca indevida
- não reconheço essa cobrança
- nao reconheco essa cobranca
- não concordo com a cobrança
- nao concordo com a cobranca
- ajuste na fatura
- estorno
- valor indevido
examples:
- Quero contestar essa cobrança
- Esse valor é indevido
- Não reconheço uma cobrança na minha fatura
- name: contas_vas_cancel
domain: telecom_contas
agent: contestacao_agent
priority: 145
description: Cancelamento ou retirada de serviço/VAS e sua cobrança recorrente.
mcp_tools:
- consultar_vas
- cancelar_vas_avulso
keywords:
- cancelar serviço
- cancelar servico
- cancelar assinatura
- retirar serviço
- retirar servico
- desativar serviço
- desativar servico
- não contratei esse serviço
- nao contratei esse servico
- tirar esse vas
examples:
- Quero cancelar esse serviço
- Não contratei esse VAS
- Quero retirar essa assinatura
- name: contas_vas_strategic
domain: telecom_contas
agent: contestacao_agent
priority: 125
description: Tratamento de serviço estratégico, parceiro ou benefício incluso com
fluxo específico.
mcp_tools:
- consultar_vas
- tratar_vas_estrategico
keywords:
- apple music
- deezer
- disney
- disney+
- netflix
- youtube premium
- globoplay
- amazon prime
- prime video
- serviço estratégico
- servico estrategico
- benefício incluso
- beneficio incluso
examples:
- Não reconheço o Netflix
- Quero tratar esse serviço estratégico
- Meu plano inclui Deezer?
- name: contas_vas_information
domain: telecom_contas
agent: vas_agent
priority: 110
description: Consulta ou explicação de VAS, serviço adicional, assinatura, aplicativo,
parceiro, bundle ou benefício do plano.
mcp_tools:
- consultar_vas
- buscar_informacao
keywords:
- vas
- serviço adicional
- servico adicional
- aplicativo
- assinatura
- serviços ativos
- servicos ativos
- benefício
- beneficio
- incluso no plano
- pacote digital
- parceiro
examples:
- O que é esse serviço?
- Quais VAS estão ativos?
- Esse aplicativo está incluso?
- Quais serviços adicionais eu tenho?
- name: contas_vas_history
domain: telecom_contas
agent: vas_agent
priority: 105
description: Consulta de histórico de VAS/serviços que já estiveram ativos ou sofreram
alterações.
mcp_tools:
- consultar_historico_vas
keywords:
- histórico de vas
- historico de vas
- histórico de serviços
- historico de servicos
- serviços anteriores
- servicos anteriores
- já tive esse serviço
- ja tive esse servico
examples:
- Quero ver meu histórico de serviços
- Eu já tive esse VAS antes?
- name: contas_knowledge
domain: telecom_contas
agent: suporte_contas_agent
priority: 80
description: Perguntas conceituais ou de procedimento sobre produtos, fatura, serviços
e regras que não exigem consultar dados do cliente.
mcp_tools:
- buscar_informacao
keywords:
- o que é
- o que significa
- como funciona
- como faço
- onde encontro
- qual a regra
- informação sobre
- informacao sobre
examples:
- O que significa cobrança proporcional?
- Como funciona o vencimento da fatura?
- name: contas_service_status
domain: telecom_contas
agent: suporte_contas_agent
priority: 90
description: Consulta de status, andamento, protocolo ou acompanhamento de solicitação
já aberta.
mcp_tools:
- consultar_status_solicitacao
keywords:
- protocolo
- status da solicitação
- status da solicitacao
- andamento
- acompanhamento
- acompanhar solicitação
- acompanhar solicitacao
- pedido em andamento
examples:
- Qual o status da minha solicitação?
- Quero acompanhar o protocolo
- name: contas_pro_rata
domain: telecom_contas
agent: faturas_agent
priority: 128
description: Cobrança proporcional/pró-rata decorrente de troca de plano.
mcp_tools:
- pro_rata
keywords:
- pró-rata
- pro rata
- pro-rata
- cobrança proporcional
- cobranca proporcional
- troca de plano
examples:
- Por que veio cobrança proporcional?
- Troquei de plano e vieram duas cobranças
- name: contas_termino_desconto
domain: telecom_contas
agent: faturas_agent
priority: 127
description: Término de desconto ou promoção refletido na fatura.
mcp_tools:
- termino_desconto
keywords:
- término de desconto
- termino de desconto
- desconto acabou
- fim do desconto
examples:
- Meu desconto acabou?
- name: contas_valor_divergente
domain: telecom_contas
agent: faturas_agent
priority: 126
description: Capability de valor divergente.
mcp_tools:
- valor_divergente
keywords:
- valor divergente
- divergência de valor
- divergencia de valor
examples:
- Tem um valor divergente na minha conta

23
config/tool_policies.yaml Normal file
View File

@@ -0,0 +1,23 @@
version: 1
defaults:
operation_type: read_only
require_confirmation: false
tool_policies:
cancelar_vas_avulso:
operation_type: transactional
require_confirmation: true
requires: [subject]
contestar_cobranca:
operation_type: transactional
require_confirmation: true
requires: [subject, valor]
tratar_vas_estrategico:
operation_type: conversational
require_confirmation: false
requires: [subject]
pro_rata:
operation_type: conversational
require_confirmation: false
retomar_workflow:
operation_type: internal
require_confirmation: false

227
config/tools.yaml Normal file
View File

@@ -0,0 +1,227 @@
tools:
consultar_faturas:
description: Consulta faturas atuais/anteriores, status, vencimento, valor e existência
de fatura aberta sem iniciar o workflow de explicação.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
selection_keywords:
- quero minha fatura
- consultar fatura
- ver fatura
- segunda via
- minhas faturas
- fatura atual
- fatura em aberto
- conta em aberto
invoice_explanation:
description: Explica composição, diferença ou variação de valores de uma fatura;
não deve ser usada apenas para consultar/obter a fatura.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
selection_keywords:
- explicar fatura
- entender fatura
- fatura veio alta
- conta veio alta
- valor aumentou
- diferença de valor
- divergência
- cobrança diferente
- por que esse valor
buscar_informacao:
description: Conhecimento do Contas é atendido pelo RagService do agent_framework_oci,
não pelo MCP.
mcp_server: contas
enabled: false
args_schema:
query: string
selection_keywords:
- o que é
- o que significa
- como funciona
- como faço
- informação
- explique o conceito
consultar_vas:
description: Consulta serviços VAS ativos.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
selection_keywords:
- vas
- serviço adicional
- servico adicional
- assinatura
- aplicativo
- serviços ativos
- servicos ativos
consultar_historico_vas:
description: Consulta histórico de serviços VAS.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
selection_keywords:
- histórico de vas
- historico de vas
- histórico de serviços
- historico de servicos
- serviços anteriores
- servicos anteriores
cancelar_vas_avulso:
description: Executa cancelamento de VAS avulso no novo domínio Contas; confirmação
e estado são do framework.
mcp_server: contas
enabled: true
tool_type: action
confirmation_required: true
requires:
- subject
args_schema:
subject: string
selection_keywords:
- cancelar serviço
- cancelar servico
- cancelar assinatura
- retirar serviço
- retirar servico
- desativar serviço
- desativar servico
tratar_vas_estrategico:
description: Trata VAS estratégico/bundle no novo domínio Contas; diálogo e estado
são do framework.
mcp_server: contas
enabled: true
tool_type: conversational
confirmation_required: false
requires:
- subject
args_schema:
subject: string
selection_keywords:
- serviço estratégico
- servico estrategico
- benefício incluso
- beneficio incluso
- apple music
- deezer
- disney
- netflix
- globoplay
- amazon prime
contestar_cobranca:
description: Executa contestação no novo domínio Contas após confirmação transacional
do framework.
mcp_server: contas
enabled: true
tool_type: action
confirmation_required: true
requires:
- subject
- valor
args_schema:
subject: string
valor: number
motivo: string
selection_keywords:
- contestar
- contestação
- contestacao
- cobrança indevida
- cobranca indevida
- valor indevido
- ajuste na fatura
- estorno
finalizar_atendimento:
description: Executa apenas efeitos de domínio da finalização; encerramento, memória
e telemetria ficam no framework.
mcp_server: contas
enabled: true
tool_type: action
confirmation_required: false
args_schema:
status: string
summary: string
selection_keywords:
- encerrar atendimento
- finalizar atendimento
- era só isso
- obrigado era isso
consultar_status_solicitacao:
description: Consulta status de solicitação/protocolo TIM.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
protocol: string
enviar_sms:
description: Envia SMS via integração TIM; use apenas quando um fluxo de domínio
exigir.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
message: string
recuperar_fatura_pdf:
description: Recupera o PDF seguro de uma fatura.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
invoice_id: string
customer_id: string
pro_rata:
description: Explica cobrança proporcional e conduz pause/resume pelo WorkflowRuntime.
mcp_server: contas
enabled: true
tool_type: conversational
confirmation_required: false
args_schema:
msisdn: string
planos: array
has_plano_controle: boolean
selection_keywords:
- pró-rata
- pro rata
- pro-rata
- cobrança proporcional
- cobranca proporcional
- troca de plano
termino_desconto:
description: Trata término de desconto identificado na fatura.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
nome_plano: string
selection_keywords:
- término de desconto
- termino de desconto
- desconto acabou
- fim do desconto
valor_divergente:
description: Trata variação/divergência de valor conforme workflow do Contas.
mcp_server: contas
enabled: true
args_schema:
msisdn: string
selection_keywords:
- valor divergente
- divergência de valor
- divergencia de valor
retomar_workflow:
description: Tool interna usada pelo framework para retomar workflow pausado.
mcp_server: contas
enabled: true
tool_type: internal
confirmation_required: false
args_schema:
workflow_name: string
execution_id: string
resposta_usuario: string
selection_keywords: []