Add trader mainline surface audit

This commit is contained in:
Codex
2026-05-21 11:02:07 +08:00
parent db1edf5c66
commit fdd3e08ade
6 changed files with 614 additions and 4 deletions
@@ -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()