feat: split portfolio and opportunity decision models

This commit is contained in:
2026-04-20 16:13:57 +08:00
parent 4312b16288
commit 1da08415f1
10 changed files with 326 additions and 195 deletions

View File

@@ -140,7 +140,7 @@ class CLITestCase(unittest.TestCase):
patch.object(cli, "get_binance_credentials", return_value={"api_key": "k", "api_secret": "s"}),
patch.object(cli, "SpotBinanceClient"),
patch.object(
cli.opportunity_service, "analyze_portfolio", return_value={"scores": [{"asset": "BTC", "score": 0.75}]}
cli.portfolio_service, "analyze_portfolio", return_value={"recommendations": [{"symbol": "BTCUSDT", "score": 0.75}]}
),
patch.object(
cli, "print_output", side_effect=lambda payload, **kwargs: captured.setdefault("payload", payload)
@@ -148,7 +148,7 @@ class CLITestCase(unittest.TestCase):
):
result = cli.main(["portfolio"])
self.assertEqual(result, 0)
self.assertEqual(captured["payload"]["scores"][0]["asset"], "BTC")
self.assertEqual(captured["payload"]["recommendations"][0]["symbol"], "BTCUSDT")
def test_opportunity_dispatches(self):
captured = {}
@@ -161,7 +161,7 @@ class CLITestCase(unittest.TestCase):
patch.object(
cli.opportunity_service,
"scan_opportunities",
return_value={"opportunities": [{"symbol": "BTCUSDT", "score": 0.82}]},
return_value={"recommendations": [{"symbol": "BTCUSDT", "score": 0.82}]},
),
patch.object(
cli, "print_output", side_effect=lambda payload, **kwargs: captured.setdefault("payload", payload)
@@ -169,7 +169,7 @@ class CLITestCase(unittest.TestCase):
):
result = cli.main(["opportunity", "-s", "BTCUSDT", "ETHUSDT"])
self.assertEqual(result, 0)
self.assertEqual(captured["payload"]["opportunities"][0]["symbol"], "BTCUSDT")
self.assertEqual(captured["payload"]["recommendations"][0]["symbol"], "BTCUSDT")
def test_catlog_dispatches(self):
captured = {}