Предложение: Централизованная админ-панель (Operator Cockpit)
Проблема
Рынок работает, но нет интерфейса для управления.
Что нельзя сделать сейчас:
- ❌ Запустить IPO для новой персоны
- ❌ Одобрить/отклонить заявку на публичную личность
- ❌ Посмотреть что происходит с аукционом в реальном времени
- ❌ Вручную исправить проблему с застрявшей транзакцией
- ❌ Посмотреть логи market maker
- ❌ Остановить торги в экстренной ситуации
Итог: Приходится лезть в базу данных напрямую или запускать скрипты через консоль.
Решение: Operator Cockpit
Единая админ-панель для полного контроля над рынком.
Главные разделы:
- 🎯 Dashboard — обзор системы
- 👤 Модерация персон — одобрение заявок
- 🚀 Управление IPO — создание, запуск, мониторинг
- 📊 Мониторинг рынка — графики, orderbook, активность
- 💰 Транзакции — история, фильтры, детали
- ⚙️ Настройки — конфигурация системы
- 🔧 Аварийное управление — ручное вмешательство
1. Dashboard — Обзор системы
Что видит оператор:
┌─────────────────────────────────────────────────┐
│ PersonalShares Operator Cockpit │
│ │
│ 🟢 System Status: Operational │
│ 🔄 Market Maker: Running │
│ 📈 Active Assets: 12 │
│ 👥 Active Users: 1,234 │
│ │
│ Last 24 Hours: │
│ 💸 Trading Volume: $456,789 │
│ 🤝 Transactions: 2,345 │
│ 📝 New Orders: 456 │
│ ⚡ Avg Response Time: 45ms │
│ │
│ 🔔 Alerts: │
│ ⚠️ USYK auction - low demand in round 4 │
│ ⚠️ MNTK - high volatility detected │
│ ✅ 3 new persons pending moderation │
└─────────────────────────────────────────────────┘
Виджеты:
- ✅ Статус системы (маркет-мейкер работает/остановлен)
- ✅ Ключевые метрики (объём торгов, транзакции, пользователи)
- ✅ Алерты (проблемы, требующие внимания)
- ✅ Быстрые действия (кнопки для частых операций)
- ✅ Последние события (логи в реальном времени)
2. Модерация персон
Список заявок на модерацию:
┌───────────────────────────────────────────────────────────┐
│ Pending Moderation (3) │
├───────────────────────────────────────────────────────────┤
│ │
│ [👤] Oleksandr Usyk Status: Pending │
│ 📧 usyk@example.com │
│ 🔗 Instagram: 2.5M followers │
│ 🔗 TikTok: 1.8M followers │
│ 📝 "Professional boxer, Olympic champion..." │
│ │
│ [✅ Approve] [❌ Reject] [👁️ View Profile] │
│ │
├───────────────────────────────────────────────────────────┤
│ │
│ [👤] Maria Shevchenko Status: Pending │
│ 📧 maria@example.com │
│ 🔗 YouTube: 500K subscribers │
│ 📝 "Tech blogger, crypto enthusiast..." │
│ │
│ [✅ Approve] [❌ Reject] [👁️ View Profile] │
│ │
└───────────────────────────────────────────────────────────┘
Действия:
- ✅ Просмотр полного профиля
- ✅ Проверка соцсетей (клик открывает в новой вкладке)
- ✅ Одобрить / отклонить с комментарием
- ✅ Запросить дополнительную информацию
- ✅ История модераций (кто одобрил, когда)
Фильтры:
- По статусу: Pending / Approved / Rejected
- По дате подачи
- По количеству подписчиков
3. Управление IPO
3.1 Список активов
┌────────────────────────────────────────────────────────────────┐
│ Assets [+ Create New Asset] │
├────────────────────────────────────────────────────────────────┤
│ │
│ USYK - Oleksandr Usyk Type: IPO │
│ Status: Clock Auction Round 4 Price: $130 │
│ Sold: 60 / 1,000 shares Buyers: 45 │
│ [🎯 Monitor] [⚙️ Manage] [📊 Analytics] │
│ │
├────────────────────────────────────────────────────────────────┤
│ │
│ MNTK - Maria Shevchenko Type: Listed │
│ Status: Trading Price: $95.50 │
│ Volume 24h: $12,450 Change: +8.5% │
│ [📊 View Market] [⚙️ Settings] │
│ │
├────────────────────────────────────────────────────────────────┤
│ │
│ BRSKH - Borys Shukhevych Type: Pre-IPO │
│ Status: Preparing Price: — │
│ [🚀 Launch IPO] [⚙️ Configure] │
│ │
└────────────────────────────────────────────────────────────────┘
3.2 Создание нового актива
Форма создания:
┌────────────────────────────────────────────┐
│ Create New Asset │
├────────────────────────────────────────────┤
│ │
│ Ticker Symbol: [EXAMPLE] │
│ Person: [Select from approved ⬇] │
│ │
│ Asset Type: │
│ ○ Pre-IPO (not trading yet) │
│ ● IPO (ready for placement) │
│ ○ Listed (already trading) │
│ │
│ Total Shares: [1,000,000] │
│ │
│ IPO Type: │
│ ○ Simple IPO (fixed price) │
│ ● Clock Auction (price discovery) │
│ │
│ [Next: Configure IPO →] │
│ │
└────────────────────────────────────────────┘
3.3 Настройка Clock Auction
┌────────────────────────────────────────────┐
│ Clock Auction Configuration │
├────────────────────────────────────────────┤
│ │
│ Start Price: [$100] │
│ Price Increment: [$10] per round │
│ Shares Per Round: [1,000] │
│ Min Buyers to Continue:[50] people │
│ Max Shares Per User: [1] share │
│ │
│ Post-Auction Rounds: ☑ Enable │
│ └─ Price Growth: [10]% │
│ └─ Shares Per Round: [5]% of total │
│ │
│ [← Back] [Create & Start Auction] │
│ │
└────────────────────────────────────────────┘
3.4 Настройка Simple IPO
┌────────────────────────────────────────────┐
│ Simple IPO Configuration │
├────────────────────────────────────────────┤
│ │
│ Presale: ☑ Enable │
│ └─ Price: [$80] │
│ └─ Shares: [10,000] │
│ │
│ Public Listing: │
│ └─ Price: [$100] │
│ └─ Shares: [50,000] │
│ │
│ Discount: 20% (auto-calculated) │
│ │
│ [← Back] [Create IPO] │
│ │
└────────────────────────────────────────────┘
3.5 Мониторинг аукциона (Real-time)
┌────────────────────────────────────────────────────────────────┐
│ USYK Clock Auction - Live Monitor │
├────────────────────────────────────────────────────────────────┤
│ │
│ Status: 🟢 Active Round: 4 of ? │
│ Current Price: $130 Started: 2h 15m ago │
│ │
│ Progress: │
│ ████████████░░░░░░░░░░░░░░░ 45 / 1,000 shares (4.5%) │
│ │
│ Buyers: 45 (min required: 50) │
│ ⚠️ Warning: Below minimum threshold │
│ │
│ Round History: │
│ Round 1: $100 → 300 buyers → Completed │
│ Round 2: $110 → 150 buyers → Completed │
│ Round 3: $120 → 80 buyers → Completed │
│ Round 4: $130 → 45 buyers (ongoing...) │
│ │
│ Actions: │
│ [⏸️ Pause Auction] [🛑 Cancel Auction] [⚙️ Adjust Settings] │
│ │
│ Recent Activity (auto-refresh): │
│ 18:45 - user_123 bought 1 share at $130 │
│ 18:44 - user_456 bought 1 share at $130 │
│ 18:42 - user_789 bought 1 share at $130 │
│ │
└────────────────────────────────────────────────────────────────┘
Действия в реальном времени:
- ✅ Пауза аукциона (если проблемы)
- ✅ Отмена аукциона
- ✅ Ручное завершение раунда
- ✅ Изменение параметров на лету (если критично)
- ✅ Auto-refresh каждые 5 секунд
4. Мониторинг рынка
4.1 Orderbook в реальном времени
┌────────────────────────────────────────────────────────────────┐
│ Market Depth - USYK Price: $152.50 │
├────────────────────────────────────────────────────────────────┤
│ │
│ ПОКУПАЮТ: ПРОДАЮТ: │
│ $150 × 100 шт $151 × 50 шт │
│ $149 × 50 шт $152 × 100 шт │
│ $148 × 20 шт $155 × 200 шт │
│ │
│ Spread: $1.00 (0.66%) │
│ Total Bids: 170 shares Total Asks: 350 shares │
│ │
│ [📊 Full Orderbook] [⚡ Live Trades] [📈 Price Chart] │
│ │
└────────────────────────────────────────────────────────────────┘
4.2 Активность по всем тикерам
┌────────────────────────────────────────────────────────────────┐
│ Market Activity (Last 1 Hour) │
├────────────────────────────────────────────────────────────────┤
│ │
│ Ticker │ Volume │ Trades │ Price │ Change │
│ ────────┼───────────┼──────────┼───────────┼────────── │
│ USYK │ $12,450 │ 234 │ $152.50 │ +8.5% 🔥 │
│ MNTK │ $8,900 │ 156 │ $95.00 │ +2.3% │
│ BRSKH │ $4,200 │ 78 │ $45.50 │ -1.2% │
│ │
│ 🔥 Hottest: USYK (+8.5%) │
│ 📉 Weakest: BRSKH (-1.2%) │
│ 💰 Highest Volume: USYK ($12,450) │
│ │
└────────────────────────────────────────────────────────────────┘
5. Транзакции
5.1 История транзакций с фильтрами
┌────────────────────────────────────────────────────────────────┐
│ Transactions │
│ [Filters ⬇] Type: All Status: All Ticker: All User: All │
├────────────────────────────────────────────────────────────────┤
│ │
│ ID: tx_12345 Type: spot_buy Status: ✅ completed│
│ User: user_789 Ticker: USYK │
│ Amount: 10 shares Price: $150 Total: $1,500 │
│ Time: 2025-10-13 18:45:23 │
│ [👁️ Details] [🔄 Recalculate Portfolio] │
│ │
├────────────────────────────────────────────────────────────────┤
│ │
│ ID: tx_12344 Type: limit_sell Status: ⏸️ active │
│ User: user_456 Ticker: MNTK │
│ Amount: 50 shares Price: $100 Total: $5,000 │
│ Executed: 20/50 (40%) │
│ [👁️ Details] [❌ Cancel Order] │
│ │
├────────────────────────────────────────────────────────────────┤
│ │
│ ID: tx_12343 Type: spot_buy Status: ❌ failed │
│ User: user_123 Ticker: USYK │
│ Error: "Insufficient USD balance" │
│ [👁️ Details] [🔄 Retry] │
│ │
└────────────────────────────────────────────────────────────────┘
Фильтры:
- По типу транзакции (spot_buy, limit_sell, ipo_sell...)
- По статусу (completed, active, failed, cancelled)
- По тикеру
- По пользователю
- По дате/времени
- По сумме (от/до)
5.2 Детали транзакции
┌────────────────────────────────────────────┐
│ Transaction Details │
├────────────────────────────────────────────┤
│ │
│ ID: tx_12345 │
│ Type: spot_buy │
│ Status: ✅ completed │
│ │
│ User: │
│ └─ ID: user_789 │
│ └─ Email: investor@example.com │
│ │
│ Trade: │
│ └─ Ticker: USYK │
│ └─ Amount: 10 shares │
│ └─ Price: $150.00 │
│ └─ Total: $1,500.00 │
│ │
│ Execution: │
│ └─ Matched with 2 sell orders │
│ └─ Order 1: 7 shares @ $149 │
│ └─ Order 2: 3 shares @ $152 │
│ └─ Avg Price: $150.00 │
│ │
│ Timeline: │
│ └─ Created: 2025-10-13 18:45:20 │
│ └─ Executed: 2025-10-13 18:45:23 │
│ └─ Duration: 3s │
│ │
│ [Close] [🔄 Reprocess] [❌ Cancel] │
│ │
└────────────────────────────────────────────┘
6. Настройки системы
┌────────────────────────────────────────────┐
│ System Configuration │
├────────────────────────────────────────────┤
│ │
│ Market Maker: │
│ ● Enabled ○ Disabled │
│ └─ Poll Interval: [5000] ms │
│ └─ Max Retries: [3] │
│ │
│ Trading: │
│ ☑ Allow spot orders │
│ ☑ Allow limit orders │
│ ☑ Allow stop orders │
│ ☑ Self-trading prevention │
│ │
│ IPO Defaults: │
│ └─ Total shares: [1,000,000] │
│ └─ Auction start price: [100] │
│ └─ Auction increment: [10] │
│ │
│ Notifications: │
│ ☑ Email alerts for failed transactions │
│ ☑ Slack alerts for system errors │
│ └─ Slack Webhook: [https://...] │
│ │
│ [Save Changes] │
│ │
└────────────────────────────────────────────┘
7. Аварийное управление
7.1 Emergency Actions
┌────────────────────────────────────────────┐
│ ⚠️ Emergency Controls │
├────────────────────────────────────────────┤
│ │
│ Market Maker: │
│ [⏸️ Pause Processing] │
│ [▶️ Resume Processing] │
│ [🔄 Force Process Ticker: [____]] │
│ │
│ Trading: │
│ [🛑 Halt All Trading] │
│ [🛑 Halt Trading for Ticker: [____]] │
│ [✅ Resume All Trading] │
│ │
│ Maintenance: │
│ [🔄 Recalculate All Portfolios] │
│ [🔄 Recalculate All Prices] │
│ [🗑️ Cancel All Active Orders] │
│ │
│ ⚠️ These actions require confirmation │
│ │
└────────────────────────────────────────────┘
7.2 Логи Market Maker (Real-time)
┌────────────────────────────────────────────────────────────────┐
│ Market Maker Logs [Auto-refresh: ON ⬇] │
├────────────────────────────────────────────────────────────────┤
│ │
│ 18:45:23 [INFO] 🔄 Processing orders for ticker USYK │
│ 18:45:23 [INFO] 📊 Found 12 buy orders, 8 sell orders │
│ 18:45:23 [SUCCESS] ✅ Matched 2 orders (10 shares @ $150) │
│ 18:45:24 [INFO] 💰 Updated current price: $150.00 │
│ 18:45:24 [INFO] 🔄 Processing orders for ticker MNTK │
│ 18:45:24 [WARN] ⚠️ No matches found for limit orders │
│ 18:45:25 [INFO] 🎯 Clock auction USYK: checking round 4 │
│ 18:45:25 [WARN] ⚠️ Buyers (45) < minimum (50) │
│ 18:45:26 [ERROR] ❌ Transaction tx_12346 failed: │
│ Insufficient USD balance for user_999 │
│ │
│ [Filter by Level ⬇] [Search...] [📥 Download Logs] │
│ │
└────────────────────────────────────────────────────────────────┘
Уровни логов:
- 🔵 DEBUG
- ℹ️ INFO
- ⚠️ WARN
- ❌ ERROR
Действия:
- ✅ Real-time обновление
- ✅ Фильтр по уровню
- ✅ Поиск по тексту
- ✅ Скачать логи (CSV/JSON)
- ✅ Показать контекст (раскрыть детали)
8. Доступ и безопасность
Роли:
Super Admin:
- Полный доступ ко всем функциям
- Может создавать новых админов
- Аварийное управление
Operator:
- Модерация персон
- Управление IPO
- Просмотр транзакций
- Мониторинг рынка
Support:
- Только просмотр
- Может видеть транзакции пользователей
- Не может изменять
Auditor:
- Read-only доступ ко всему
- Скачивание отчётов
- Логи аудита
Аутентификация:
- ✅ Двухфакторная аутентификация (2FA)
- ✅ Логи действий (кто, что, когда)
- ✅ IP whitelist
- ✅ Session timeout (15 минут неактивности)
Технический стек
Frontend:
- React (админка)
- Material-UI или Ant Design (компоненты)
- WebSocket (real-time обновления)
- Chart.js (графики)
Backend:
- Express роуты /api/admin/*
- Middleware для проверки admin роли
- WebSocket server для live updates
Database:
- Таблица admin_users (роли, права)
- Таблица admin_logs (аудит действий)
Roadmap разработки
MVP
- ✅ Базовая авторизация и роли
- ✅ Dashboard с метриками
- ✅ Модерация персон (approve/reject)
- ✅ Список активов
- ✅ Создание Simple IPO
- ✅ История транзакций с фильтрами
Аукционы и мониторинг
- ✅ Создание Clock Auction
- ✅ Real-time мониторинг аукционов
- ✅ Управление раундами (пауза, отмена)
- ✅ Orderbook в реальном времени
- ✅ Детали транзакций
Аналитика и инструменты
- ✅ Графики и чарты
- ✅ Market Maker логи (live)
- ✅ Аварийное управление
- ✅ Настройки системы
- ✅ Отчёты и экспорт данных
Продвинутые фичи
- ✅ A/B тесты (разные параметры аукционов)
- ✅ Предиктивная аналитика (ML)
- ✅ Автоматические алерты (Slack/Email)
- ✅ Bulk operations (массовые действия)
- ✅ API для внешних инструментов
Примеры сценариев использования
Сценарий 1: Запуск нового IPO
1. Оператор заходит в "Модерация персон"
→ Видит заявку от Oleksandr Usyk
→ Проверяет соцсети
→ Одобряет
2. Оператор переходит в "Управление IPO"
→ Кликает "Create New Asset"
→ Выбирает Usyk из списка одобренных
→ Ticker: USYK
→ Type: Clock Auction
3. Настраивает параметры аукциона:
→ Start price: $100
→ Increment: $10
→ Shares per round: 1,000
→ Min buyers: 50
4. Кликает "Create & Start Auction"
→ Аукцион стартует автоматически
→ Система создаёт первый раунд
5. Оператор переходит в "Monitor USYK"
→ Видит live обновления
→ Раунд 1: 300 заявок → переходит в раунд 2
→ Раунд 2: 150 заявок → переходит в раунд 3
→ ...
Сценарий 2: Проблема с застрявшей транзакцией
1. Dashboard показывает алерт:
⚠️ Transaction tx_12345 stuck for 5 minutes
2. Оператор кликает на алерт
→ Открываются детали транзакции
→ Видит: spot_buy, status: "processing"
3. Оператор смотрит логи:
[ERROR] Failed to update portfolio for user_789
[ERROR] Database connection timeout
4. Оператор кликает "Retry"
→ Транзакция перезапускается
→ Status: ✅ completed
5. Если не помогло:
→ Emergency Controls
→ "Recalculate Portfolio for user_789"
→ Проблема решена
Сценарий 3: Аукцион под угрозой отмены
1. Live monitor показывает:
⚠️ USYK Round 4: 45 buyers (min: 50)
2. Оператор видит что осталось 10 минут
до конца раунда
3. Варианты действий:
Вариант A: Подождать
→ Может успеют ещё 5 человек купить
Вариант B: Снизить минимум
→ Settings → Min buyers: 40 → Save
→ Аукцион продолжается
Вариант C: Отменить раунд
→ Cancel Round 4
→ Fallback price = $120 (Round 3)
→ Запуск post-auction rounds
4. Оператор выбирает Вариант B
→ Параметр обновлён
→ Через 5 минут: раунд закрывается с 48 buyers
→ Переход к раунду 5
TL;DR
Проблема: Рынок работает, но управлять им можно только через БД или консоль.
Решение: Централизованная админ-панель (Operator Cockpit) для:
- Модерации персон — approve/reject в пару кликов
- Запуска IPO — простая форма, автоматический старт
- Мониторинга аукционов — live обновления, управление раундами
- Контроля рынка — orderbook, транзакции, логи
- Аварийного управления — пауза/отмена/пересчёт
Результат:
- ✅ Оператор управляет рынком без знания SQL
- ✅ Все операции через UI, а не консоль
- ✅ Real-time мониторинг всех процессов
- ✅ Быстрое реагирование на проблемы
- ✅ Аудит всех действий
Срок разработки: 3-4 месяца (MVP за 1 месяц)
Приоритет: 🔥 Высокий — без админки управлять платформой сложно и опасно.