NODEDC_1C/tests/test_router_decision_flags.py

74 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
from router.query_classifier import classify_query_for_route
def _store_meta() -> dict:
return {
"precomputed_aggregates": ["baseline_period_summary", "period_trend_summary", "risk_slice_summary"],
}
def test_classifier_heavy_ranking_flags() -> None:
flags = classify_query_for_route(
"Рейтинг риск-счетов за июнь",
{"question_class": "heavy_analytical"},
_store_meta(),
)
assert flags.needs_full_period_aggregation is True
assert flags.needs_ranking is True
assert flags.needs_exact_object_trace is False
def test_classifier_drilldown_exact_trace_flags() -> None:
flags = classify_query_for_route(
"Цепочка документ -> проводки -> субконто",
{"question_class": "drilldown_explain"},
_store_meta(),
)
assert flags.needs_exact_object_trace is True
assert flags.needs_causal_chain is True
assert flags.needs_runtime_truth is True
def test_classifier_cross_entity_causal_flags() -> None:
flags = classify_query_for_route(
"Свяжи контрагентов, договоры и проводки",
{"question_class": "cross_entity"},
_store_meta(),
)
assert flags.needs_cross_entity_join is True
assert flags.needs_causal_chain is True
assert flags.needs_exact_object_trace is False
def test_classifier_inventory_stock_provenance_flags() -> None:
flags = classify_query_for_route(
"От какого поставщика куплен товар Диван трехместный из текущего остатка на складе Основной склад",
{"question_class": "simple_factual"},
_store_meta(),
)
assert flags.needs_exact_object_trace is True
assert flags.needs_runtime_truth is True
def test_classifier_inventory_account_on_date_flags() -> None:
flags = classify_query_for_route(
"Какие товары числятся на 41 счете на дату 2020-03-31",
{"question_class": "unknown"},
_store_meta(),
)
assert flags.needs_exact_object_trace is True
assert flags.needs_runtime_truth is True
def test_classifier_inventory_sale_chain_flags() -> None:
flags = classify_query_for_route(
"Есть ли документально подтвержденная цепочка: поставщик Гамма-мебель, ООО -> товар Шкаф картотечный -> покупатель",
{"question_class": "cross_entity"},
_store_meta(),
)
assert flags.needs_exact_object_trace is True
assert flags.needs_causal_chain is True
assert flags.needs_cross_entity_join is True