feat: redesign workspaces and stabilize screeners

This commit is contained in:
leefer
2026-07-26 13:31:45 +08:00
parent 149c468240
commit 6adeb54458
21 changed files with 18786 additions and 917 deletions
+37 -1
View File
@@ -52,6 +52,33 @@ class AccountDataBoundaryTests(unittest.TestCase):
)
self.assertIsNone(self.database.latest_screener_run(self.second["id"], "20260722"))
def test_latest_screener_runs_are_isolated_by_mode_and_user(self):
expected = {
"smart": "600001",
"curated": "600002",
"quant": "600003",
}
for mode, code in expected.items():
self.database.save_screener_run(
self.first["id"], "20260721", "repair", f"{mode}-strategy", FORMULA,
{"candidates": [{"code": code}], "meta": {}}, mode,
)
results = self.database.latest_screener_runs(self.first["id"], "20260722")
self.assertEqual(set(results), set(expected))
for mode, code in expected.items():
self.assertEqual(results[mode]["meta"]["mode"], mode)
self.assertEqual(results[mode]["candidates"][0]["code"], code)
self.assertEqual(
self.database.latest_screener_run(
self.first["id"], "20260722", mode
)["candidates"][0]["code"],
code,
)
self.assertEqual(
self.database.latest_screener_runs(self.second["id"], "20260722"), {}
)
def test_mentor_messages_are_scoped_by_user_mentor_and_date(self):
self.database.save_mentor_exchange(
self.first["id"], "mentor-a", "20260721", "怎么看?", "先看承接。", "20260721"
@@ -164,7 +191,12 @@ class LegacyStrategyMigrationTests(unittest.TestCase):
created_at TEXT NOT NULL
);
INSERT INTO screener_runs VALUES
(1, '20260721', 'repair', '旧策略', '{}', '{"meta":{}}', '2026-07-21');
(1, '20260721', 'repair', '旧策略', '{}', '{"meta":{}}', '2026-07-21'),
(2, '20260721', 'repair', '旧精选策略',
'{"meta":{"library":"curated"}}', '{"meta":{}}', '2026-07-21'),
(3, '20260721', 'repair', '自定义量化公式',
'{"meta":{"library":"custom","category":"量化公式"}}',
'{"meta":{}}', '2026-07-21');
"""
)
connection.commit()
@@ -177,6 +209,10 @@ class LegacyStrategyMigrationTests(unittest.TestCase):
self.assertEqual(owners["旧策略"], 1)
self.assertIsNone(owners["旧内置"])
self.assertIsNotNone(migrated.latest_screener_run(1, "20260722"))
self.assertEqual(
set(migrated.latest_screener_runs(1, "20260722")),
{"smart", "curated", "quant"},
)
class PublicKnowledgePermissionTests(unittest.TestCase):