Add trader mainline surface audit
This commit is contained in:
@@ -20,6 +20,7 @@ NONEXISTENT_VISUAL_PLAN_NAME = "AI_ICT_" + "视觉盯盘与主动告警增强方
|
||||
ACTIVE_TOP_LEVEL_DOCS = {
|
||||
"AI_ICT_硬性主线约束_必须遵循ICT交易全书_2026-05-21_v1.md",
|
||||
"AI_ICT_实盘辅助分析决策助手ICT主线开发方案_2026-05-21_v1.md",
|
||||
"AI_ICT_主线裁剪审计_S1_2026-05-21_v1.md",
|
||||
"AI_ICT_主线纠偏与功能裁剪方案_2026-05-20_v1.md",
|
||||
"AI_ICT_实盘辅助分析决策助手上线必做清单_2026-05-18_v1.md",
|
||||
"AI_ICT_实盘辅助分析决策助手使用说明_2026-05-18_v1.md",
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
import unittest
|
||||
|
||||
from scripts import audit_trader_mainline_surfaces as audit
|
||||
|
||||
|
||||
class TraderMainlineSurfaceAuditTests(unittest.TestCase):
|
||||
def test_main_navigation_is_reduced_to_five_trader_entries(self) -> None:
|
||||
nav_targets = audit.collect_nav_targets()
|
||||
self.assertEqual(
|
||||
[item["id"] for item in nav_targets],
|
||||
["trader-mode", "strategy-backtest", "trading-plan", "journal", "system-ops"],
|
||||
)
|
||||
self.assertEqual(
|
||||
[item["category"] for item in nav_targets],
|
||||
["Mainline", "Mainline", "Mainline", "Mainline", "System Ops"],
|
||||
)
|
||||
|
||||
def test_workspace_sections_are_classified_before_deletion(self) -> None:
|
||||
sections = audit.collect_workspace_sections()
|
||||
categories = {item["id"]: item["category"] for item in sections}
|
||||
self.assertEqual(categories["trader-mode"], "Mainline")
|
||||
self.assertEqual(categories["strategy-backtest"], "Mainline")
|
||||
self.assertEqual(categories["trading-plan"], "Mainline")
|
||||
self.assertEqual(categories["journal"], "Mainline")
|
||||
self.assertEqual(categories["system-ops"], "System Ops")
|
||||
self.assertEqual(categories["decision-assistant"], "Research Only")
|
||||
self.assertEqual(categories["visual-reviews"], "Research Only")
|
||||
self.assertEqual(categories["execution-tickets"], "Deprecated")
|
||||
self.assertEqual(categories["position-management"], "Deprecated")
|
||||
self.assertNotIn("Unclassified", categories.values())
|
||||
|
||||
def test_system_ops_links_cover_non_mainline_sections(self) -> None:
|
||||
sections = {item["id"] for item in audit.collect_workspace_sections()}
|
||||
system_ops_targets = audit.collect_system_ops_targets()
|
||||
for item in system_ops_targets:
|
||||
self.assertIn(item["id"], sections)
|
||||
self.assertNotEqual(item["category"], "Mainline")
|
||||
|
||||
def test_endpoint_classification_keeps_execution_surfaces_out_of_mainline(self) -> None:
|
||||
self.assertEqual(audit.classify_endpoint("/trading/backtests"), "Mainline")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/plans/latest"), "Mainline")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/journal"), "Mainline")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/workflow-archive"), "Research Only")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/external-context-surface-history"), "Research Only")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/tickets"), "Deprecated")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/executions"), "Deprecated")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/okx-sandbox-preflight"), "Deprecated")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/candidates/4/build-ticket"), "Deprecated")
|
||||
self.assertEqual(audit.classify_endpoint("/trading/watch/run"), "System Ops")
|
||||
|
||||
def test_frontend_api_references_are_classified(self) -> None:
|
||||
references = audit.collect_frontend_api_references()
|
||||
categories = {item["endpoint"]: item["category"] for item in references}
|
||||
self.assertEqual(categories["/trading/backtests"], "Mainline")
|
||||
self.assertEqual(categories["/trading/workflow-archive"], "Research Only")
|
||||
self.assertEqual(categories["/trading/executions"], "Deprecated")
|
||||
self.assertNotIn("Unclassified", categories.values())
|
||||
|
||||
def test_audit_summary_preserves_read_only_boundary(self) -> None:
|
||||
result = audit.build_audit()
|
||||
self.assertFalse(result["policy"]["physical_delete_allowed"])
|
||||
self.assertEqual(result["policy"]["execution_boundary"], "read_only_analysis_no_order_submission")
|
||||
self.assertEqual(result["summary"]["nav_count"], 5)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user