import importlib.util import sys import types from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] MODULE_PATH = PROJECT_ROOT / "utils" / "thinking_summary.py" utils_module = types.ModuleType("utils") config_module = types.ModuleType("utils.config") prompt_loader_module = types.ModuleType("utils.prompt_loader") config_module.settings = types.SimpleNamespace(thinking_summary=types.SimpleNamespace(enabled=True)) prompt_loader_module.load_prompt = lambda *args, **kwargs: "" sys.modules.setdefault("utils", utils_module) sys.modules["utils.config"] = config_module sys.modules["utils.prompt_loader"] = prompt_loader_module spec = importlib.util.spec_from_file_location("thinking_summary_under_test", MODULE_PATH) thinking_summary = importlib.util.module_from_spec(spec) spec.loader.exec_module(thinking_summary) def test_normalize_thinking_summary_uses_user_question_prefix(): text = ( "用户问的是“蜀道矿业集团出台过哪些有关于汛期安全管理的制度和办法”。" "这个问题属于集团或子公司内部制度查询。" ) normalized = thinking_summary.normalize_thinking_summary(text) assert normalized.startswith("用户问的是") assert "我们需要理解问题:" not in normalized assert "识别用户明确查询" not in normalized assert "问题核心主题" not in normalized assert "需结合公司主体" not in normalized def test_fallback_thinking_summary_uses_user_question_prefix(): summary = thinking_summary._build_fallback_summary( "蜀道矿业集团出台过哪些有关于汛期安全管理的制度和办法", max_points=3, max_output_chars=600, ) assert summary.startswith("用户问的是") assert "我们需要理解问题:" not in summary