Files
deep_research/tests/test_research_methods.py
T

56 lines
1.8 KiB
Python

from __future__ import annotations
import json
import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
if str(REPO_ROOT) not in sys.path:
sys.path.insert(0, str(REPO_ROOT))
from scripts.runtime.methods import ResearchMethodRegistry
from scripts.runtime.orchestrator import create_phase2_task_cards
from scripts.runtime.tasks import generate_task_cards
def test_method_registry_loads_market_and_gmp_methods() -> None:
registry = ResearchMethodRegistry()
names = registry.list_names()
assert "mckinsey_market" in names
assert "gmp_gap_assessment" in names
assert registry.get("gmp_gap_assessment").task_axes[0] == "regulatory_gap"
def test_task_cards_use_method_axes() -> None:
framework = "## 第1章 GMP 审计差距决定整改优先级\n\n研究思路:法规、风险、CAPA。"
registry = ResearchMethodRegistry()
method = registry.get("gmp_gap_assessment")
cards = generate_task_cards("gmp-test", framework, method=method)
assert [card.topic_axis for card in cards] == method.task_axes
assert cards[0].task_id == "ch01-regulatory_gap"
def test_orchestrator_reads_research_method_from_manifest(tmp_path: Path) -> None:
project = tmp_path / "gmp-project"
(project / "phase1").mkdir(parents=True)
(project / "manifest.json").write_text(
json.dumps({"research_method": "gmp_gap_assessment", "phase2": {}}, ensure_ascii=False),
encoding="utf-8",
)
(project / "phase1" / "framework.md").write_text(
"## 第1章 GMP 体系差距需要按法规和风险双轴定位\n\n研究思路。",
encoding="utf-8",
)
cards = create_phase2_task_cards(project, dry_run=True)
assert [card["topic_axis"] for card in cards][:3] == [
"regulatory_gap",
"risk_classification",
"capa_design",
]