fix(ai): recognize conversational document filters
This commit is contained in:
@@ -266,6 +266,46 @@ def test_semantic_ontology_service_extracts_entities_time_and_constraints() -> N
|
||||
assert result.time_range.end_date == "2026-04-30"
|
||||
|
||||
|
||||
def test_semantic_ontology_service_recognizes_colloquial_travel_city_filter(
|
||||
monkeypatch,
|
||||
) -> None:
|
||||
session_factory = build_session_factory()
|
||||
with session_factory() as db:
|
||||
service = SemanticOntologyService(db)
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"_parse_with_model",
|
||||
lambda **_kwargs: (None, [], "model_unavailable_for_rule_regression"),
|
||||
)
|
||||
|
||||
result = service.parse(
|
||||
OntologyParseRequest(
|
||||
query="出差上海的单据请筛选一下",
|
||||
user_id="pytest",
|
||||
)
|
||||
)
|
||||
|
||||
entity_map = {item.type: item.normalized_value for item in result.entities}
|
||||
assert result.scenario == "expense"
|
||||
assert result.intent == "query"
|
||||
assert result.permission.level == "read"
|
||||
assert entity_map["expense_type"] == "travel"
|
||||
assert entity_map["location"] == "上海"
|
||||
|
||||
generic_result = service.parse(
|
||||
OntologyParseRequest(
|
||||
query="上海的单据请筛选一下",
|
||||
user_id="pytest",
|
||||
)
|
||||
)
|
||||
generic_entities = {
|
||||
item.type: item.normalized_value for item in generic_result.entities
|
||||
}
|
||||
assert generic_result.scenario == "expense"
|
||||
assert generic_result.intent == "query"
|
||||
assert generic_entities["location"] == "上海"
|
||||
|
||||
|
||||
def test_semantic_ontology_service_extracts_budget_query_fields() -> None:
|
||||
session_factory = build_session_factory()
|
||||
with session_factory() as db:
|
||||
|
||||
Reference in New Issue
Block a user