new feature: LOCALE pt-BR/en

This commit is contained in:
T3782834
2026-10-27 11:45:37 -03:00
parent 3e3d90f45e
commit f8197334a2
137 changed files with 12177 additions and 1018 deletions

View File

@@ -746,32 +746,41 @@ async def test_correction_of_missing_numeric_value_does_not_reopen_resolved_text
assert out == {"valor": 19.99}
@pytest.mark.asyncio
async def test_reconciler_exposes_schema_driven_field_evidence_views_for_missing_fields():
async def test_reconciler_receives_schema_context_and_preserves_known_values():
# Histórico: 1711575 (2026-09-07) removeu field_evidence_views e anchor_matches.
# O teste anterior verificava a montagem interna de um prompt descontinuado.
# Validamos o contrato: schema/contexto chegam ao provedor, o campo resolvido
# é aceito e preserve mantém o valor conhecido, mesmo se o modelo sugerir outro.
class _LLM:
def __init__(self):
self.prompt = ""
async def ainvoke(self, messages, **kwargs):
self.prompt = messages[0]["content"]
return {"content": '{"fields":{"subject":{"decision":"resolved","value":"Produto A","source":"history:1"},"valor":{"decision":"preserve","value":14.99,"source":"state"}}}'}
return {"content": json.dumps({"fields": {
"subject": {"decision": "resolved", "value": "Produto A", "source": "history:1"},
"valor": {"decision": "preserve", "value": 999.0, "source": "state"},
}})}
from agent_framework.runtime.transaction_parameters import reconcile_transaction_parameters
llm = _LLM()
schema = {
"subject": {"type": "string", "description": "referência concreta identificável"},
"valor": {"type": "number", "description": "quantia associada"},
}
current_text = "é a de quatorze e noventa e nove"
context = "history:1: assistant: Produto A no atributo 14,99. Produto B no atributo 10,00."
result = await reconcile_transaction_parameters(
llm,
text="é a de quatorze e noventa e nove",
tool_name="acao_generica",
parameter_names=["subject", "valor"],
known_arguments={"valor": 14.99},
parameter_schema={
"subject": {"type": "string", "description": "referência concreta identificável"},
"valor": {"type": "number", "description": "quantia associada"},
},
conversational_context=(
"priority_3_previous_assistant_tool_or_evidence_context:\n"
"history:1: assistant: * Produto A no atributo 14,99. * Produto B no atributo 10,00."
),
llm, text=current_text, tool_name="acao_generica",
parameter_names=["subject", "valor"], known_arguments={"valor": 14.99},
parameter_schema=schema, conversational_context=context,
)
assert result["values"]["subject"] == "Produto A"
assert "field_evidence_views:" in llm.prompt
assert '"subject"' in llm.prompt
assert '"anchor_matches"' in llm.prompt
assert current_text in llm.prompt
assert context in llm.prompt
for field, definition in schema.items():
assert json.dumps(field) in llm.prompt
assert definition["description"] in llm.prompt
assert result["values"] == {"subject": "Produto A", "valor": 14.99}
assert result["decisions"] == {"subject": "resolved", "valor": "preserve"}
assert result["provenance"] == {"subject": "history:1", "valor": "state"}
assert result["clear_fields"] == []