Spaces:
Running
Running
| 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", | |
| ] | |