Stage 03.3 - exchangeInfo and symbol validation

This commit is contained in:
2026-04-14 05:47:41 +03:00
parent d2d024f39b
commit 8e3f240558
12 changed files with 398 additions and 19 deletions

View File

@@ -48,5 +48,5 @@ def load_settings() -> Settings:
exchange_api_secret=os.getenv("EXCHANGE_API_SECRET", "").strip(),
exchange_timeout_sec=_parse_int(os.getenv("EXCHANGE_TIMEOUT_SEC", "10"), 10),
exchange_testnet=_parse_bool(os.getenv("EXCHANGE_TESTNET", "false")),
default_symbol=os.getenv("DEFAULT_SYMBOL", "BTCUSDT").strip() or "BTCUSDT",
default_symbol=os.getenv("DEFAULT_SYMBOL", "BTC/USD_LEVERAGE").strip() or "BTC/USD_LEVERAGE",
)

View File

@@ -25,20 +25,33 @@ class SystemSnapshot:
timezone_name: str
exchange_enabled: bool
exchange_name: str
default_symbol: str
symbol_validation_message: str
components: list[ComponentStatus]
def get_system_snapshot() -> SystemSnapshot:
settings = load_settings()
exchange_service = ExchangeService()
try:
symbol_validation = exchange_service.validate_symbol(settings.default_symbol)
except Exception as exc:
symbol_validation = None
symbol_validation_message = f"Не удалось проверить символ: {exc}"
else:
symbol_validation_message = symbol_validation.message
exchange_health = exchange_service.get_health()
if exchange_health.ok and exchange_health.mode == "mock":
exchange_state = "🟡 mock mode"
elif exchange_health.ok:
exchange_state = "🟢 OK"
exchange_state = "🟢 API OK"
else:
exchange_state = "🔴 attention"
exchange_state = "🔴 ошибка"
symbol_state = "🟢 OK" if symbol_validation and symbol_validation.is_valid else "🔴 ошибка"
components = [
ComponentStatus(
@@ -56,6 +69,11 @@ def get_system_snapshot() -> SystemSnapshot:
state=exchange_state,
details=exchange_health.message,
),
ComponentStatus(
name="Символ",
state=symbol_state,
details=symbol_validation_message,
),
ComponentStatus(
name="База данных",
state="🟡 не подключена",
@@ -72,6 +90,8 @@ def get_system_snapshot() -> SystemSnapshot:
timezone_name=settings.tz,
exchange_enabled=settings.exchange_enabled,
exchange_name=settings.exchange_name,
default_symbol=settings.default_symbol,
symbol_validation_message=symbol_validation_message,
components=components,
)
@@ -99,7 +119,8 @@ def build_system_text() -> str:
f"- os: {snapshot.os_name}\n"
f"- timezone: {snapshot.timezone_name}\n"
f"- exchange_enabled: {snapshot.exchange_enabled}\n"
f"- exchange_name: {snapshot.exchange_name}\n\n"
f"- exchange_name: {snapshot.exchange_name}\n"
f"- default_symbol: {snapshot.default_symbol}\n\n"
"<b>Справка</b>\n"
"/start — стартовый экран\n"
"/menu — показать меню\n"