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