# Hyper Analytics — концепт «Ink & Amber»

Полный редизайн UX/UI-прототипа дашборда с упором на мобайл. Функционал исходника
сохранён 1:1 (чек-лист ниже), визуально и структурно — новый продукт.

## Как открыть

```
cd UXUI && python3 -m http.server 8842
```

→ `http://localhost:8842/index.html`. Работает и через `file://`.
Единственная внешняя зависимость — Google Fonts (Archivo / IBM Plex Mono / Inter);
без сети шрифты деградируют до системных, всё остальное офлайн.

## Концепция

**«Ink & Amber»** — терминальная эстетика вместо «ещё одной админки»:

- **Палитра**: глубокий чернильный фон + янтарный бренд-акцент (наследие
  Bloomberg-терминалов), мятный/коралловый — только семантика PnL. Никакого
  клишированного крипто-неона.
- **Типографика**: Archivo (UI, заголовки) + IBM Plex Mono (все цифры и данные)
  + Inter (текст). Моно-цифры выравниваются в столбцы и читаются как терминал.
- **Данные как текстура** (сигнатура концепта): у каждого трейдера спарклайн
  вшит в фон карточки, у каждой позиции — тепловая полоса и градиент uPnL,
  герой дашборда — живая кривая капитала под числом.
- **Мобайл-паттерны вместо десктопных**: SPA с мгновенной навигацией,
  плавающий док внизу (4 раздела + «Ещё» → bottom-sheet), все формы, фильтры
  и подтверждения — в bottom-sheets, карточные ленты вместо таблиц,
  горизонтальные KPI-ленты со snap-скроллом, FAB для главного действия экрана.
- **Десктоп (≥1000px)** — надстройка над мобильной базой, один код:
  док превращается в вертикальный рейл слева со всеми разделами (без «Ещё»),
  контент расширяется до 1220px; «табличные» экраны (Трейдеры, Позиции,
  Журнал: сделки и сигналы, трейдеры пула, массовые операции, вкладки
  Позиции/Сделки/Сигналы в карточке трейдера) переключаются с карточек на
  плотные таблицы с сортировкой кликом по заголовку; дашборд, аналитика и
  обзор трейдера раскладываются в две колонки. Переключение мобайл↔десктоп
  происходит вживую при ресайзе окна без перезагрузки (`UI.isDesktop()` +
  перерисовка по matchMedia). Мобильная разметка при этом не менялась ни
  в одном правиле — десктоп живёт в отдельном медиазапросе и отдельных
  ветках рендера.

## Структура

```
UXUI/
  index.html               SPA-оболочка (все экраны, hash-роутер)
  assets/
    app.css                дизайн-система Ink & Amber
    app.js                 ядро: роутер, каркас, sheets, тосты, SVG-графики,
                           форматтеры, бейджи, CSV-экспорт
    screens-core.js        Обзор · Трейдеры · Карточка трейдера
    screens-ops.js         Позиции · Журнал · Аналитика
    screens-admin.js       Пулы · Карточка пула · Массовые · Настройки · Логин
    mock.js                mock-данные исходника БЕЗ ИЗМЕНЕНИЙ — структура
                           полей по-прежнему повторяет dashboard/data.php
```

Маршруты: `#/` (обзор), `#/traders`, `#/trader/:id`, `#/positions`,
`#/journal`, `#/analytics`, `#/pools`, `#/pool/:id`, `#/bulk`, `#/settings`,
`#/login`.

Как и в исходнике: все изменяющие действия показывают тост
«действие не выполняется» и ничего не сохраняют. Экспорт CSV в журнале —
рабочий (генерирует файл из отфильтрованных данных).

## Чек-лист паритета функционала (по README исходника)

- [x] Дашборд: капитал + uPnL, KPI, PnL по периодам (Дни/Недели/Месяцы ×
      7д/30д/90д/Всё), топ/аутсайдеры трейдеров, мини-список открытых позиций,
      лента активности, статус бота (cron/тик)
- [x] Трейдеры: поиск, фильтры (статус/рейтинг/включённые), 9 сортировок,
      спарклайн 14-дневного PnL, рейтинг-звёзды, grade-бейдж, добавление
      трейдера (FAB → sheet)
- [x] Карточка трейдера: вкладки Обзор / Позиции / Сделки / Сигналы /
      Настройки / Журнал; автоскоринг с разбивкой (winrate/roi/drawdown/
      activity) и scoreReason; паспорт (адрес, источник, теги, заметки,
      причина архива); тумблер копирования; полный набор overrides
      (scale_factor, cooldown, poll, leverage, min_notional, virtual_balance,
      allowed_symbols, sizing_mode, telegram_notify, отложенный вход +
      порог + TTL); исполнение (execution_mode, hl_margin_mode, hl_subaccount,
      SL/TP тип+значение, сетка: ордера/шаг/распределение); danger zone
      (сброс state, удаление); журнал заметок с добавлением
- [x] Позиции: суммарный uPnL и объём, тепловые карточки с полосой и
      градиентом uPnL, вход/вход трейдера/текущая, возраст, 6 сортировок;
      Watching с целевой просадкой, возрастом и «Снять»
- [x] Журнал: сделки (LIQ/PART-бейджи, слиппедж, fees, gross/net), периоды
      7д/30д/90д/Всё, сортировки, рабочий экспорт CSV; сигналы
      (open/close/watch/partial) со своими сортировками
- [x] Аналитика: KPI, кривая капитала, просадка от пика, Net PnL по
      инструментам (топ-8), детализация с TV-ссылками, распределение по ROI,
      время удержания по дням
- [x] Пулы: карточки-плитки (баланс/ROI/просадка, режимы), создание пула;
      карточка пула — вкладки Трейдеры (аллокации, sizing, плечо, cooldown,
      DD-вход; добавление и редактирование через sheets) / Настройки
      (баланс, плечо, комиссия, partial_close, execution_mode direct/webhook,
      margin mode cross/isolated, субаккаунт, тумблер пула) / Вебхуки
      (3 сервиса: katoshi/telegram, ключи) / Опасная зона
- [x] Массовые операции: чекбокс-лента с поиском и «выбрать всех»,
      включить/приостановить/изменить настройки (sheet с «отметить все поля /
      снять все / применить»)/сбросить/удалить; массовый импорт адресов
      (статус, теги, сразу включить); экспорт/импорт XLSX (+ «создавать
      новых»); теги — текущие с удалением, добавление, операции
      добавить/убрать у выбранных
- [x] Настройки: Торговля (allowed_symbols, scale_factor, cooldown, poll,
      default_leverage, symbol_leverage) / Симулятор (virtual_balance,
      sizing_mode/fixed/percent, min/max ордера, fee, slippage, funding,
      partial_close, отложенный вход + порог) / Исполнение (executor_mode
      mock|live, executor_url) / Уведомления (bot token, chat id, notify) /
      Теги / Система (статус бота, срок хранения сигналов, сброс state всех
      с чекбоксами bot.log и БД)
- [x] Логин-экран
- [x] HyperDash-ссылка у каждого адреса, TradingView-ссылка у каждого символа

## Что изменилось в подходе (для переноса в прод)

- Исходник — набор страниц с серверным layout; концепт — один шелл с
  hash-роутером. Для прод-переноса разметка экранов остаётся, серверный
  рендер подставляет данные вместо чтения `MOCK.*` (структура полей та же).
- Таблицы заменены карточками: на мобайле не нужен горизонтальный скролл,
  сортировка — чипами, фильтры — sheet'ом (эквивалент initSortableTables /
  initMobileSortTable из исходника).
