← Назад

UI-SPEC.md — Futures Screener MVP

Эта спецификация описывает интерфейс MVP — таблицы плотностей для стратегии "отскок от плотностей".

Scope


Desktop Wide (1000px+)

Global chrome

Таблица

Колонки (14 шт):

  1. Symbol — имя тикера (жирный, .sym)
  2. BID level — цена уровня (2 знака после запятой)
  3. BID dist % — расстояние до markPrice в % (2 знака + %)
  4. BID notional — notional = price * qty (с разделителями, compact)
  5. BID xx = notional / mmBase (во сколько раз больше маркет-мейкера)
  6. NATR % — Normalized Average True Range % (фильтр)
  7. Vol 1×5m — объём за 1-ю (самую старую) 5-минутку
  8. Vol 2×5m — объём за 2-ю 5-минутку
  9. Vol 3×5m — объём за 3-ю (самую новую) 5-минутку
  10. ASK level
  11. ASK dist %
  12. ASK notional
  13. ASK x
  14. Score — общий score уровня (цветная индикация)
  15. isMM — флаг Market Maker (зелёный фон или ⭐)

Логика x:

x = notional / mmBase

Пример:
- mmBase = 100k
- notional = 400k
- x = 4 (х4 от маркет-мейкера)

Поведение:

Состояния UI

Idle:

Loading:

Success:

Error:


Mobile (320px–768px)

Global chrome

Таблица

Мобильные правила


Анимации и статусы

Loading

Error

Success


Mock data format (для UI)

{
  "count": 16,
  "minNotional": 50000,
  "windowPct": 1.0,
  "xFilter": 4, // фильтр: показывать только x >= 4
  "data": [
    {
      "symbol": "BTCUSDT",
      "side": "bid",
      "levelPrice": 67225.1,
      "distancePct": 0.02,
      "notional": 81492,
      "mmBase": 200000,
      "x": 0.407, // 81492 / 200000
      "isMM": false,
      "score": 4.85
    },
    {
      "symbol": "BTCUSDT",
      "side": "bid",
      "levelPrice": 67200.5,
      "distancePct": 0.03,
      "notional": 800000,
      "mmBase": 200000,
      "x": 4.0, // 800000 / 200000
      "isMM": true,
      "score": 6.21
    },
    {
      "symbol": "BTCUSDT",
      "side": "ask",
      "levelPrice": 67230.5,
      "distancePct": 0.05,
      "notional": 102166,
      "mmBase": 200000,
      "x": 0.51,
      "isMM": false,
      "score": 5.32
    }
  ]
}

План реализации (Phase 0 → Phase 1)

Phase 0 — MVP (точно сверстать)

Phase 1 — Доработки

Phase 2 — UX


CSS классы

Класс Назначение
.sidebar Боковая панель (desktop)
.main Основной контейнер
.table Таблица плотностей
.sym Жирный текст символа
.isMM Зелёный фон для MM-уровней
.x-high Золотистый/жёлтый фон для высокого x (опционально)
.eatSpeed-high Красный фон для высокой eatSpeed (опционально)
.error Блок ошибки
.modal Модальное окно фильтров
.btn-primary Основные кнопки
.btn-secondary Вспомогательные кнопки

Текущий статус

✅ UI реализован под твои скрины (desktop wide + mobile)
✅ Backend работает через systemd
✅ HTTPS активен на futures-screener.szhub.space
✅ Метрики eatSpeed, lifetimeSec, state добавлены в API
x = notional / mmBase — нужно добавить в API и UI

Следующий шаг: Добавить фильтр по x в UI и API.