v0.21 alpha add research brief and compressed findings

This commit is contained in:
kai
2026-05-06 19:23:30 +08:00
parent db626f1d58
commit 0644a68ecc
13 changed files with 539 additions and 27 deletions
+42
View File
@@ -17,6 +17,7 @@ from scripts.runtime.tasks import (
TaskCard,
detect_dependency_cycles,
generate_task_cards,
generate_task_cards_from_research_brief,
validate_packet,
validate_task_cards,
)
@@ -77,6 +78,47 @@ def test_generate_task_cards_from_chinese_framework() -> None:
"ch02-regulatory",
]
assert cards[0].output_packet == "phase2/packets/ch01-clinical.json"
assert cards[0].research_goal
assert "search-gateway" in cards[0].required_skills
assert cards[0].expected_evidence["min_tier_1_2_sources"] == 2
assert cards[0].stop_conditions
def test_generate_task_cards_from_research_brief_carries_prompt_and_skills() -> None:
brief = {
"research_method": "gmp_quality_operations_diagnosis",
"work_language": "zh",
"tone": "面向管理层的事实型整改诊断",
"task_planning": {
"required_skills": ["search-gateway", "evidence-table", "source-quality"],
"search_routes_by_axis": {
"quality_system_gap": ["general", "news"],
"counter": ["scholar", "general"],
},
"axis_prompt_briefs": {
"quality_system_gap": "把现场发现映射到质量体系流程缺口和法规要求。",
"counter": "主动寻找能削弱或限定结论的反方证据。",
},
"stop_conditions": ["每张卡至少形成 3 条可追溯证据。"],
},
"materials": [{"path": "phase0/extracted/audit.md", "role": "site_evidence"}],
}
framework = "## 第1章 质量体系闭环能力决定整改可信度\n\n研究思路。"
cards = generate_task_cards_from_research_brief(
"baifan-test",
framework,
brief,
axes=["quality_system_gap", "counter"],
)
assert [card.task_id for card in cards] == ["ch01-quality_system_gap", "ch01-counter"]
assert cards[0].prompt_brief == "把现场发现映射到质量体系流程缺口和法规要求。"
assert cards[0].research_method == "gmp_quality_operations_diagnosis"
assert cards[0].allowed_materials == ["phase0/extracted/audit.md"]
assert cards[0].preferred_model_role == "dr_analyst"
assert cards[1].preferred_model_role == "dr_verifier"
assert "search-gateway" in cards[0].required_skills
def test_task_card_validation_rejects_duplicates_and_cycles() -> None: