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
+31
View File
@@ -99,6 +99,37 @@ class StrategyTrackingTests(unittest.TestCase):
self.assertEqual(metrics["max_gain"], 10.0)
self.assertEqual(metrics["max_drawdown"], -5.0)
def test_candidate_is_added_manually_and_can_be_removed_by_owner(self):
run_id = self.database.save_screener_run(
self.owner["id"],
"20260711",
"repair",
"手动跟踪策略",
{},
{
"meta": {},
"candidates": [{
"ts_code": "600000.SH",
"code": "600000",
"name": "浦发银行",
"sector": "银行",
"price": 12.5,
}],
},
)
result = self.service.add_candidate(self.owner["id"], run_id, "600000")
self.assertEqual(result["added"], 1)
tracks = self.database.list_strategy_tracks(self.owner["id"])
self.assertEqual(len(tracks), 1)
self.assertEqual(tracks[0]["code"], "600000")
self.assertEqual(self.database.list_strategy_tracks(self.other["id"]), [])
with self.assertRaises(ValueError):
self.service.add_candidate(self.other["id"], run_id, "600000")
removed = self.service.remove_candidate(self.owner["id"], tracks[0]["id"])
self.assertTrue(removed["deleted"])
self.assertEqual(removed["tracking"]["batches"], [])
if __name__ == "__main__":
unittest.main()