Files

56 lines
2.3 KiB
Python

from __future__ import annotations
import pytest
from app.gateway.wiki_generation_config import compile_wiki_instructions
def test_compile_wiki_instructions_keeps_raw_text_and_adds_optional_guidance() -> None:
compiled = compile_wiki_instructions(
content_instructions="保持正式表达",
extraction_instructions="提取时间和主体",
focus_instructions="重点关注适用对象与截止日期",
directory_paths=[
["政策法规"],
["政策法规", "国内政策"],
["政策法规", "国内政策", "申报流程"],
],
)
assert compiled.content_instructions.startswith("保持正式表达")
assert "【用户重点要求】\n重点关注适用对象与截止日期" in compiled.content_instructions
assert "【参考目录层级】" in compiled.content_instructions
assert " - 申报流程" in compiled.content_instructions
assert "不是必须逐项套用的目录模板" in compiled.content_instructions
assert "自行合并、拆分、改名或补充目录" in compiled.content_instructions
assert "唯一允许使用的目录白名单" not in compiled.content_instructions
assert compiled.extraction_instructions.startswith("提取时间和主体")
assert "重点关注适用对象与截止日期" in compiled.extraction_instructions
assert compiled.directory_prompt_coverage == "full"
assert compiled.directory_prompt_covered_nodes == 3
assert compiled.directory_prompt_total_nodes == 3
def test_compile_wiki_instructions_reports_partial_directory_coverage() -> None:
compiled = compile_wiki_instructions(
content_instructions="",
extraction_instructions="",
focus_instructions="",
directory_paths=[["甲"], ["乙"], ["丙"]],
max_length=70,
)
assert compiled.directory_prompt_coverage in {"none", "partial"}
assert compiled.directory_prompt_covered_nodes < 3
assert compiled.directory_prompt_total_nodes == 3
def test_compile_wiki_instructions_rejects_untruncated_user_guidance() -> None:
with pytest.raises(ValueError, match="合并后不能超过"):
compile_wiki_instructions(
content_instructions="甲" * 3995,
extraction_instructions="",
focus_instructions="必须突出期限",
directory_paths=[],
)