feat: add TradeBot web control panel
This commit is contained in:
+40
-4
@@ -2,9 +2,10 @@ from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
from crypto_spot_bot.dashboard import _compact_markets
|
||||
from crypto_spot_bot.dashboard import _apply_fast_trading
|
||||
from crypto_spot_bot.dashboard import _safe_config
|
||||
from crypto_spot_bot.dashboard import WEB_UI_REMOVED_MESSAGE
|
||||
from crypto_spot_bot.dashboard import WEB_INDEX
|
||||
from crypto_spot_bot.storage import Storage
|
||||
|
||||
|
||||
@@ -61,6 +62,41 @@ def test_safe_config_summarizes_torch_forecast_artifact(make_settings, tmp_path)
|
||||
}
|
||||
|
||||
|
||||
def test_web_ui_is_removed_from_api_service() -> None:
|
||||
assert "Web UI removed" in WEB_UI_REMOVED_MESSAGE
|
||||
assert "/api/*" in WEB_UI_REMOVED_MESSAGE
|
||||
def test_web_ui_assets_are_available() -> None:
|
||||
html = WEB_INDEX.read_text(encoding="utf-8")
|
||||
|
||||
assert "TradeBot — панель управления" in html
|
||||
assert "/assets/dashboard.css" in html
|
||||
assert "/assets/dashboard.js" in html
|
||||
|
||||
|
||||
def test_compact_markets_keeps_dashboard_fields_and_limits_candles() -> None:
|
||||
candles = [{"timestamp": index, "close": 100 + index, "open": 1} for index in range(60)]
|
||||
|
||||
compact = _compact_markets(
|
||||
{
|
||||
"symbols": ["BTCUSDT"],
|
||||
"ws_connected": True,
|
||||
"rest_error_count": 2,
|
||||
"markets": [
|
||||
{
|
||||
"ticker": {"symbol": "BTCUSDT", "last_price": 160},
|
||||
"candles": candles,
|
||||
"forecast": {"expected_return_percent": 0.4},
|
||||
"shadow_forecast": {"expected_return_percent": 0.5},
|
||||
"orderbook": {"spread_bps": 1.2},
|
||||
"quality": {"status": "ok"},
|
||||
"instrument": {"symbol": "BTCUSDT"},
|
||||
}
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
assert compact["ws_connected"] is True
|
||||
assert compact["rest_error_count"] == 2
|
||||
assert compact["markets"][0]["ticker"]["symbol"] == "BTCUSDT"
|
||||
assert len(compact["markets"][0]["sparkline"]) == 48
|
||||
assert compact["markets"][0]["sparkline"][0] == {"timestamp": 12, "close": 112}
|
||||
assert "instrument" not in compact["markets"][0]
|
||||
assert "orderbook" not in compact["markets"][0]
|
||||
assert "shadow_forecast" not in compact["markets"][0]
|
||||
|
||||
Reference in New Issue
Block a user