File size: 985 Bytes
ee37d63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import json
from pathlib import Path

from models.factor_skill_registry import level1_catalog, level2_sops_for_active_factors, level3_scripts_for_active_factors


def test_current_overlay_exposes_44_level1_factor_skills():
    payload = json.loads(Path("config/multi_factor_overlay.json").read_text())
    names = list(payload["selected_config"]["weights"])
    rows = level1_catalog(names)

    assert len(rows) == 44
    assert all(row["description"] and row["trigger"] and row["level2_sop"] for row in rows)


def test_triggered_factors_load_only_needed_sop_and_deep_scripts():
    active = ["intraday_60k_volume_low_guard", "big_player_buy"]

    assert level2_sops_for_active_factors(active) == [
        "docs/factor_skills/group_sops.md#量價行為",
        "docs/factor_skills/group_sops.md#籌碼與風險",
    ]
    assert level3_scripts_for_active_factors(active) == [
        "scripts/run_44factor_buy_gate_evaluation.py",
        "data/realtime_chip_adapter.py",
    ]