bugfixes: router stickness vs transaction workflow parameters
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -78,6 +78,7 @@ TOOLS: dict[str, dict[str, Any]] = {
|
||||
"consultar_historico_vas": {"description": "Consulta histórico de VAS.", "input_schema": {"msisdn": "string"}},
|
||||
"cancelar_vas_avulso": {"description": "Executa workflow de cancelamento VAS após confirmação transacional do framework.", "input_schema": {"msisdn": "string", "subject": "string", "items": "array"}},
|
||||
"tratar_vas_estrategico": {"description": "Executa workflow conversacional de VAS estratégico/bundle.", "input_schema": {"msisdn": "string", "subject": "string", "items": "array"}},
|
||||
"validar_contestacao": {"description": "Pre-valida contestação sem executar efeitos transacionais.", "input_schema": {"msisdn": "string", "subject": "string", "valor": "number", "motivo": "string", "target_tool": "string"}},
|
||||
"contestar_cobranca": {"description": "Executa workflow completo de contestação/Conta Certa.", "input_schema": {"msisdn": "string", "subject": "string", "valor": "number"}},
|
||||
"pro_rata": {"description": "Executa workflow conversacional de pró-rata.", "input_schema": {"msisdn": "string", "planos": "array", "has_plano_controle": "boolean"}},
|
||||
"termino_desconto": {"description": "Formata capability de término de desconto.", "input_schema": {"msisdn": "string", "nome_plano": "string"}},
|
||||
@@ -817,6 +818,25 @@ async def _run_cancelamento_com_contestacao(args: dict[str, Any]) -> dict[str, A
|
||||
},
|
||||
}
|
||||
|
||||
async def _validate_contestation(args: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Business-owned, side-effect-free eligibility validation for contestation."""
|
||||
await _enrich_invoice_context("contestar_cobranca", args)
|
||||
preflight = _preflight_subject("contestar_cobranca", args)
|
||||
if preflight is not None:
|
||||
status = str(preflight.get("status") or "OUT_OF_SCOPE") if isinstance(preflight, dict) else "OUT_OF_SCOPE"
|
||||
if status == "NEEDS_CLARIFICATION":
|
||||
return {**dict(preflight), "eligible": False}
|
||||
return {**dict(preflight), "eligible": False}
|
||||
return {
|
||||
"eligible": True,
|
||||
"status": "ELIGIBLE",
|
||||
"subject": args.get("subject"),
|
||||
"resolved_value": args.get("resolved_value") or args.get("valor"),
|
||||
"category": args.get("resolved_category"),
|
||||
"metadata": {"side_effect_free": True, "target_tool": args.get("target_tool") or "contestar_cobranca"},
|
||||
}
|
||||
|
||||
|
||||
async def _invoke(name: str, args: dict[str, Any]) -> Any:
|
||||
requirements = {
|
||||
"consultar_faturas": ("msisdn",),
|
||||
@@ -826,6 +846,7 @@ async def _invoke(name: str, args: dict[str, Any]) -> Any:
|
||||
"consultar_historico_vas": ("msisdn",),
|
||||
"cancelar_vas_avulso": ("msisdn", "subject"),
|
||||
"tratar_vas_estrategico": ("msisdn", "subject"),
|
||||
"validar_contestacao": ("msisdn", "subject", "valor"),
|
||||
"contestar_cobranca": ("msisdn", "subject", "valor"),
|
||||
"pro_rata": ("msisdn",),
|
||||
"termino_desconto": ("msisdn",),
|
||||
@@ -836,6 +857,9 @@ async def _invoke(name: str, args: dict[str, Any]) -> Any:
|
||||
}
|
||||
_require(args, *requirements.get(name, ()))
|
||||
|
||||
if name == "validar_contestacao":
|
||||
return await _validate_contestation(args)
|
||||
|
||||
await _enrich_invoice_context(name, args)
|
||||
preflight = _preflight_subject(name, args)
|
||||
if preflight is not None:
|
||||
|
||||
Reference in New Issue
Block a user