<?php
// =============================================================
// POOL — карточка пула (pool.php?id=…) и создание (pool.php?new=1)
// =============================================================
// Вкладки: Трейдеры / Настройки пула / Вебхуки / Опасная зона.
// Все действия — те же action'ы pools_handler (add_pool, update_pool,
// update_pool_webhooks, add/update/remove_trader, reset/delete_pool).

require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../pool_tracker.php';
require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/lib/forms.php';
require_once __DIR__ . '/lib/render.php';
require_once __DIR__ . '/lib/pools_handler.php';
require_once __DIR__ . '/lib/layout.php';

require_auth();

if (isset($_GET['logout'])) {
    logout();
    header('Location: login.php');
    exit;
}

if (!function_exists('bot_log')) {
    function bot_log(string $message): void {}
}

$poolsData = load_pools_config();
$pools = $poolsData['pools'];
$message = '';
$messageType = '';

$isNew  = ($_GET['new'] ?? '') === '1';
$poolId = $_GET['id'] ?? '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_verify();
    $action = $_POST['action'] ?? '';

    // id нового пула детерминирован — вычисляем до handler'а, чтобы
    // после создания сразу уйти на страницу пула (PRG).
    $newPoolId = $action === 'add_pool' ? generate_pool_id($pools) : null;

    $res = dashboard_handle_pools_post($_POST, $pools);
    $message     = $res['message'];
    $messageType = $res['messageType'];

    if ($messageType === 'success') {
        if ($action === 'add_pool') {
            header('Location: pool.php?id=' . urlencode($newPoolId) . '&created=1');
            exit;
        }
        if ($action === 'delete_pool') {
            header('Location: pools.php');
            exit;
        }
    }

    $poolsData = load_pools_config();
    $pools = $poolsData['pools'];
}

// --- Режим создания --------------------------------------------
if ($isNew) {
    layout_header(['title' => 'Новый пул', 'page' => 'pools', 'back' => 'pools.php', 'crumb' => ['label' => 'Пулы', 'href' => 'pools.php']]);
    layout_flash($message, $messageType);
    ?>
    <div class="alert info">Создание нового пула. После сохранения откроется страница пула — там добавляются трейдеры и настраиваются вебхуки.</div>
    <form method="POST">
        <?= csrf_field() ?>
        <input type="hidden" name="action" value="add_pool">
        <div class="card">
            <div class="card-title">Параметры</div>
            <div class="row2">
                <div class="field"><label>Название пула</label><input type="text" name="pool_label" placeholder="Скальперы / Агрессивный и т.п."></div>
                <div class="field"><label>Стартовый баланс, USDC</label><input type="number" step="any" min="0" name="virtual_balance" value="1000"></div>
            </div>
            <div class="row2">
                <div class="field"><label>Плечо</label><input type="number" step="1" min="1" name="leverage" value="3"></div>
                <div class="field"><label>Комиссия за сторону, %</label><input type="number" step="any" min="0" name="fee_pct_per_side" value="0.035"><div class="hint">Берётся отдельно на вход и на выход. ~0.035% taker на Hyperliquid.</div></div>
            </div>
            <div class="field"><label>Частичное закрытие (partial_close_mode)</label>
                <select name="partial_close_mode">
                    <option value="off">off — полное закрытие (паритет с любым вебхуком)</option>
                    <option value="on">on — частичное + partial_close-вебхук (custom/katoshi)</option>
                </select>
                <div class="hint">on: закрываем ту же долю, что трейдер, и шлём partial_close. Только custom/katoshi; altrady частичное не умеет.</div>
            </div>
            <button class="btn" type="submit">Создать пул</button>
        </div>
    </form>
    <?php
    layout_footer();
    exit;
}

// --- Существующий пул ------------------------------------------
$pool = null;
foreach ($pools as $p) {
    if ($p['id'] === $poolId) { $pool = $p; break; }
}
if ($pool === null) {
    layout_header(['title' => 'Пул не найден', 'page' => 'pools', 'back' => 'pools.php']);
    echo '<div class="empty">Пул «' . htmlspecialchars($poolId) . '» не найден. <a href="pools.php">К списку пулов</a></div>';
    layout_footer();
    exit;
}

$state   = load_pool_balance($pool['id'], (float) $pool['virtual_balance']);
$metrics = compute_pool_metrics($state, (float) $pool['virtual_balance']);
$traders = $pool['traders'] ?? [];
$totalAlloc = array_sum(array_column($traders, 'allocation_pct'));

// Рейтинг трейдера из реестра — сопоставляем по адресу (нижний регистр),
// чтобы показать звёздочку избранного рядом с трейдером пула.
$ratingByAddress = [];
foreach (load_wallets_config()['wallets'] as $rw) {
    $addr = strtolower($rw['address'] ?? '');
    if ($addr !== '') {
        $ratingByAddress[$addr] = (int) ($rw['rating'] ?? 0);
    }
}
$roi     = $metrics['total_return_pct'] ?? 0;
$balance = $metrics['current_balance'] ?? $pool['virtual_balance'];

$protTypeOpts = ['pnl_pct' => 'PnL % (с учётом плеча)', 'price_pct' => 'движение цены %', 'price' => 'абсолютная цена'];

layout_header([
    'title' => $pool['label'],
    'page'  => 'pools',
    'back'  => 'pools.php',
    'crumb' => ['label' => 'Пулы', 'href' => 'pools.php'],
]);
if (($_GET['created'] ?? '') === '1' && $message === '') {
    layout_flash('Пул создан. Добавьте трейдеров и, при необходимости, настройте вебхуки.', 'success');
}
layout_flash($message, $messageType);
?>

<!-- Шапка с KPI -->
<div class="kpi-grid">
    <div class="kpi">
        <div class="k-label">Баланс</div>
        <div class="k-value"><?= number_format($balance, 2) ?> $</div>
        <div class="k-sub"><?= fmt_usd($balance - (float) $pool['virtual_balance']) ?> от старта</div>
    </div>
    <div class="kpi">
        <div class="k-label">ROI</div>
        <div class="k-value <?= pnl_class($roi) ?>"><?= fmt_pct($roi) ?></div>
    </div>
    <div class="kpi">
        <div class="k-label">Сделок</div>
        <div class="k-value"><?= (int) ($metrics['trades_count'] ?? 0) ?></div>
    </div>
    <div class="kpi">
        <div class="k-label">Max DD</div>
        <div class="k-value neg"><?= number_format($metrics['max_drawdown_pct'] ?? 0, 1) ?>%</div>
    </div>
    <div class="kpi">
        <div class="k-label">Трейдеров</div>
        <div class="k-value"><?= count($traders) ?></div>
        <div class="k-sub"><?= !empty($pool['enabled']) ? 'пул включён' : 'пул выключен' ?></div>
    </div>
</div>

<div class="tabs">
    <button class="tab-btn active" data-tab="tp-traders" data-hash="traders">Трейдеры <span class="cnt"><?= count($traders) ?: '' ?></span></button>
    <button class="tab-btn" data-tab="tp-config" data-hash="config">Настройки пула</button>
    <button class="tab-btn" data-tab="tp-webhooks" data-hash="webhooks">Вебхуки</button>
    <button class="tab-btn" data-tab="tp-danger" data-hash="danger">Опасная зона</button>
</div>

<!-- ТРЕЙДЕРЫ ПУЛА -->
<div class="tab-panel active" id="tp-traders">
    <div class="table-wrap" style="margin-bottom:14px">
        <?php if (empty($traders)): ?>
            <div class="empty">В пуле пока нет трейдеров — добавьте ниже</div>
        <?php else: ?>
        <table class="stack">
            <thead><tr><th>Трейдер</th><th class="num">Аллокация</th><th>Sizing</th><th class="num">Плечо</th><th>Вход</th><th>Вкл</th><th></th></tr></thead>
            <tbody>
                <?php foreach ($traders as $ti => $trader): ?>
                <tr>
                    <td class="stack-main"><b><?= htmlspecialchars($trader['label']) ?></b> <?= rating_badge($ratingByAddress[strtolower($trader['address'])] ?? 0) ?> <span class="addr"><?= htmlspecialchars(substr($trader['address'], 0, 6)) ?>…<?= htmlspecialchars(substr($trader['address'], -4)) ?></span> <?= hyperdash_link($trader['address']) ?></td>
                    <td class="num" data-label="Аллокация"><?= number_format($trader['allocation_pct'], 1) ?>%</td>
                    <td data-label="Sizing">
                        <?php if (($trader['sizing_mode'] ?? '') === 'fixed'): ?>
                            fixed <?= number_format($trader['sizing_fixed_usd'] ?? 0, 0) ?>$
                        <?php else: ?>
                            <?= number_format($trader['sizing_percent'] ?? 100, 0) ?>% аллок.
                        <?php endif; ?>
                    </td>
                    <td class="num" data-label="Плечо">
                        <?php if (($trader['leverage'] ?? null) !== null && $trader['leverage'] !== ''): ?>
                            <?= (int) $trader['leverage'] ?>×
                        <?php else: ?>
                            <span class="dim"><?= (int) ($pool['leverage'] ?? 3) ?>×*</span>
                        <?php endif; ?>
                    </td>
                    <td data-label="Вход">
                        <?php if (!empty($trader['copy_after_drawdown_enabled'])): ?>
                            <span class="badge st-WATCH">просадка −<?= number_format((float) ($trader['copy_after_drawdown_pct'] ?? 5), 1) ?>%</span>
                        <?php else: ?>
                            <span class="dim">сразу</span>
                        <?php endif; ?>
                    </td>
                    <td data-label="Вкл"><span class="badge <?= !empty($trader['enabled']) ? 'on' : 'off' ?>"><?= !empty($trader['enabled']) ? 'ВКЛ' : 'ВЫКЛ' ?></span></td>
                    <td style="text-align:right; white-space:nowrap">
                        <button class="btn ghost small" type="button" onclick="var el=document.getElementById('tedit-<?= $ti ?>'); el.style.display = el.style.display==='none' ? '' : 'none'">Изменить</button>
                        <form method="POST" style="display:inline" onsubmit="return confirm('Удалить трейдера из пула?')">
                            <?= csrf_field() ?>
                            <input type="hidden" name="action" value="remove_trader">
                            <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
                            <input type="hidden" name="trader_id" value="<?= htmlspecialchars($trader['id']) ?>">
                            <button type="submit" class="btn danger small">×</button>
                        </form>
                    </td>
                </tr>
                <tr id="tedit-<?= $ti ?>" style="display:none">
                    <td colspan="7" style="white-space:normal">
                        <?php
                        $tsl   = is_array($trader['stop_loss'] ?? null) ? $trader['stop_loss'] : [];
                        $ttp   = is_array($trader['take_profit'] ?? null) ? $trader['take_profit'] : [];
                        $tgrid = is_array($trader['grid'] ?? null) ? $trader['grid'] : [];
                        ?>
                        <form method="POST" style="padding:6px 0">
                            <?= csrf_field() ?>
                            <input type="hidden" name="action" value="update_trader">
                            <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
                            <input type="hidden" name="trader_id" value="<?= htmlspecialchars($trader['id']) ?>">
                            <div class="row2">
                                <div class="field"><label>Название</label><input type="text" name="trader_label" value="<?= htmlspecialchars($trader['label']) ?>"></div>
                                <div class="field"><label>Адрес</label><input type="text" name="trader_address" value="<?= htmlspecialchars($trader['address']) ?>" pattern="0x[a-fA-F0-9]{40}" required style="font-family:var(--mono)"></div>
                            </div>
                            <div class="row2">
                                <div class="field"><label>Аллокация, %</label><input type="number" step="any" min="0" max="100" name="allocation_pct" value="<?= htmlspecialchars((string) $trader['allocation_pct']) ?>"><div class="hint">% от баланса пула — динамически. Сумма по всем трейдерам ≤ 100%.</div></div>
                                <div class="field"><label>Пауза между входами, сек</label><input type="number" step="1" min="0" name="trader_cooldown" value="<?= htmlspecialchars((string) ($trader['cooldown_seconds'] ?? 30)) ?>"><div class="hint">Минимум секунд между сигналами по одной монете в одну сторону.</div></div>
                            </div>
                            <div class="alert info" style="margin:2px 0 12px; font-size:12.5px">
                                <b>Как считается размер у пула</b> (не так, как у отдельного трейдера):<br>
                                1. аллокация: <b><?= htmlspecialchars((string) $trader['allocation_pct']) ?>%</b> от баланса пула
                                   = бюджет этого трейдера;<br>
                                2. режим ниже берёт долю ОТ БЮДЖЕТА (а не от всего баланса пула);<br>
                                3. лимиты объёма — в НОТИОНАЛЕ (маржа × плечо), режут результат шага 2;<br>
                                4. итог капится свободной маржой пула; не хватило на минимум — вход пропускается.<br>
                                При балансе пула $<span class="num"><?= number_format(pool_virtual_balance($pool), 0, '.', ' ') ?></span>
                                бюджет ≈ $<span class="num"><?= number_format(pool_virtual_balance($pool) * ((float) $trader['allocation_pct'] / 100), 2, '.', ' ') ?></span>.
                            </div>
                            <div class="row3">
                                <div class="field"><label>Режим размера позиции</label>
                                    <select name="sizing_mode">
                                        <option value="percent_balance" <?= ($trader['sizing_mode'] ?? '') === 'percent_balance' ? 'selected' : '' ?>>% от аллокации</option>
                                        <option value="fixed" <?= ($trader['sizing_mode'] ?? '') === 'fixed' ? 'selected' : '' ?>>Fixed USD</option>
                                    </select>
                                </div>
                                <div class="field"><label>% от аллокации</label><input type="number" step="any" min="0" max="100" name="sizing_percent" value="<?= htmlspecialchars((string) ($trader['sizing_percent'] ?? 100)) ?>"><div class="hint">Доля БЮДЖЕТА трейдера, не баланса пула. 100 = весь бюджет в одну сделку.</div></div>
                                <div class="field"><label>Фикс. маржа, USD</label><input type="number" step="any" min="0" name="sizing_fixed_usd" value="<?= htmlspecialchars(fmt_val($trader['sizing_fixed_usd'] ?? null)) ?>" placeholder="не используется"><div class="hint">Маржа на сделку. Больше бюджета не возьмёт — обрежется по аллокации.</div></div>
                            </div>
                            <div class="field"><label>Плечо трейдера</label><input type="number" step="1" min="1" name="trader_leverage" value="<?= htmlspecialchars(fmt_val($trader['leverage'] ?? null)) ?>" placeholder="пула (<?= htmlspecialchars((string) ($pool['leverage'] ?? 3)) ?>)"><div class="hint">Пусто = плечо пула. Своё плечо у каждого трейдера — для разных систем/риска.</div></div>
                            <div class="row2">
                                <div class="field"><label>Мин. объём ордера, USD</label><input type="number" step="any" min="0" name="position_min_usd" value="<?= htmlspecialchars(fmt_val($trader['position_min_usd'] ?? null)) ?>" placeholder="пула (<?= htmlspecialchars((string) ($pool['position_min_usd'] ?? 0)) ?>)"><div class="hint">Нотионал = маржа × плечо, а НЕ маржа. Меньше — поднимаем. Пусто = лимит пула, 0 = выкл. Не хватило свободной маржи на минимум — вход пропускается целиком.</div></div>
                                <div class="field"><label>Макс. объём ордера, USD</label><input type="number" step="any" min="0" name="position_max_usd" value="<?= htmlspecialchars(fmt_val($trader['position_max_usd'] ?? null)) ?>" placeholder="пула (<?= htmlspecialchars((string) ($pool['position_max_usd'] ?? 0)) ?>)"><div class="hint">Нотионал = маржа × плечо. Больше — срезаем. Приоритет над режимом размера. Пусто = лимит пула, 0 = выкл.</div></div>
                            </div>

                            <div class="form-group-title">Отложенный вход по просадке</div>
                            <div class="row3">
                                <div class="field"><label>Режим входа</label>
                                    <select name="copy_after_drawdown_enabled">
                                        <option value="0" <?= empty($trader['copy_after_drawdown_enabled']) ? 'selected' : '' ?>>Входим сразу</option>
                                        <option value="1" <?= !empty($trader['copy_after_drawdown_enabled']) ? 'selected' : '' ?>>Ждём просадку</option>
                                    </select>
                                </div>
                                <div class="field"><label>Порог просадки, %</label><input type="number" step="any" min="0" max="100" name="copy_after_drawdown_pct" value="<?= htmlspecialchars((string) ($trader['copy_after_drawdown_pct'] ?? 5)) ?>"><div class="hint">Войти когда UPNL трейдера ≤ −N%</div></div>
                                <div class="field"><label>TTL ожидания, ч (0=∞)</label><input type="number" step="any" min="0" name="copy_after_drawdown_ttl_hours" value="<?= htmlspecialchars((string) ($trader['copy_after_drawdown_ttl_hours'] ?? 0)) ?>"><div class="hint">Снять watch если просадки нет за N ч.</div></div>
                            </div>

                            <div class="form-group-title">Прямая торговля (при execution_mode=direct пула)</div>
                            <div class="row3">
                                <div class="field"><label>Stop Loss</label>
                                    <select name="sl_enabled">
                                        <option value="0" <?= empty($tsl['enabled']) ? 'selected' : '' ?>>Выкл.</option>
                                        <option value="1" <?= !empty($tsl['enabled']) ? 'selected' : '' ?>>Вкл.</option>
                                    </select>
                                </div>
                                <div class="field"><label>SL тип</label>
                                    <select name="sl_type">
                                        <?php foreach ($protTypeOpts as $k => $lbl): ?>
                                        <option value="<?= $k ?>" <?= ($tsl['type'] ?? 'pnl_pct') === $k ? 'selected' : '' ?>><?= $lbl ?></option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="field"><label>SL значение</label><input type="number" step="any" min="0" name="sl_value" value="<?= htmlspecialchars((string) ($tsl['value'] ?? 50)) ?>"></div>
                            </div>
                            <div class="row3">
                                <div class="field"><label>Take Profit</label>
                                    <select name="tp_enabled">
                                        <option value="0" <?= empty($ttp['enabled']) ? 'selected' : '' ?>>Выкл.</option>
                                        <option value="1" <?= !empty($ttp['enabled']) ? 'selected' : '' ?>>Вкл.</option>
                                    </select>
                                </div>
                                <div class="field"><label>TP тип</label>
                                    <select name="tp_type">
                                        <?php foreach ($protTypeOpts as $k => $lbl): ?>
                                        <option value="<?= $k ?>" <?= ($ttp['type'] ?? 'pnl_pct') === $k ? 'selected' : '' ?>><?= $lbl ?></option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="field"><label>TP значение</label><input type="number" step="any" min="0" name="tp_value" value="<?= htmlspecialchars((string) ($ttp['value'] ?? 80)) ?>"></div>
                            </div>
                            <div class="row3">
                                <div class="field"><label>Сетка</label>
                                    <select name="grid_enabled">
                                        <option value="0" <?= empty($tgrid['enabled']) ? 'selected' : '' ?>>Выкл.</option>
                                        <option value="1" <?= !empty($tgrid['enabled']) ? 'selected' : '' ?>>Вкл.</option>
                                    </select>
                                </div>
                                <div class="field"><label>Кол-во ордеров</label><input type="number" step="1" min="0" name="grid_levels" value="<?= htmlspecialchars((string) ($tgrid['levels'] ?? 3)) ?>"></div>
                                <div class="field"><label>Шаг, % цены</label><input type="number" step="any" min="0" name="grid_step_pct" value="<?= htmlspecialchars((string) ($tgrid['step_pct'] ?? 1.0)) ?>"></div>
                            </div>
                            <div class="row2">
                                <div class="field"><label>Множитель размера</label><input type="number" step="any" min="0" name="grid_size_factor" value="<?= htmlspecialchars((string) ($tgrid['size_factor'] ?? 1.0)) ?>"></div>
                                <div class="field"><label>Распределение объёма</label>
                                    <select name="grid_distribution">
                                        <option value="equal" <?= ($tgrid['distribution'] ?? 'equal') === 'equal' ? 'selected' : '' ?>>равное</option>
                                        <option value="multiplicative" <?= ($tgrid['distribution'] ?? 'equal') === 'multiplicative' ? 'selected' : '' ?>>мартингейл (×factor^i)</option>
                                    </select>
                                </div>
                            </div>
                            <label class="check" style="margin-bottom:12px"><input type="checkbox" name="trader_enabled" value="1" <?= !empty($trader['enabled']) ? 'checked' : '' ?>> Включён</label>
                            <div style="display:flex; gap:8px">
                                <button class="btn" type="submit">Сохранить</button>
                                <button class="btn secondary" type="button" onclick="document.getElementById('tedit-<?= $ti ?>').style.display='none'">Отмена</button>
                            </div>
                        </form>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <?php endif; ?>
    </div>

    <?php if (!empty($traders)): ?>
    <div class="alert <?= $totalAlloc > 100 ? 'danger' : 'info' ?>">Суммарная аллокация: <b><?= number_format($totalAlloc, 1) ?>%</b><?= $totalAlloc > 100 ? ' ⚠ превышает 100%' : ($totalAlloc < 100 ? ' — свободно ' . number_format(100 - $totalAlloc, 1) . '%' : ' — распределено полностью') ?></div>
    <?php endif; ?>

    <div class="card" style="margin-top:14px">
        <div class="card-title">Добавить трейдера в пул</div>
        <form method="POST">
            <?= csrf_field() ?>
            <input type="hidden" name="action" value="add_trader">
            <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
            <div class="field"><label>Название</label><input type="text" name="trader_label" placeholder="Trader A"></div>
            <div class="field"><label>Адрес (0x…)</label><input type="text" name="trader_address" placeholder="0x1234…abcd" required pattern="0x[a-fA-F0-9]{40}" style="font-family:var(--mono)"></div>
            <div class="row3">
                <div class="field"><label>Аллокация, %</label><input type="number" step="any" min="0" max="100" name="allocation_pct" value="<?= max(0, 100 - $totalAlloc) ?>"><div class="hint">% от текущего баланса пула на каждую сделку</div></div>
                <div class="field"><label>Режим размера</label>
                    <select name="sizing_mode">
                        <option value="percent_balance" selected>% от аллокации</option>
                        <option value="fixed">Fixed USD</option>
                    </select>
                </div>
                <div class="field"><label>% от аллокации</label><input type="number" step="any" min="0" max="100" name="sizing_percent" value="100"><div class="hint">100% = вся аллокация целиком</div></div>
            </div>
            <div class="row2">
                <div class="field"><label>Плечо трейдера</label><input type="number" step="1" min="1" name="trader_leverage" value="" placeholder="пула (<?= htmlspecialchars((string) ($pool['leverage'] ?? 3)) ?>)"><div class="hint">Пусто = плечо пула</div></div>
                <div class="field"><label>Cooldown, сек</label><input type="number" step="1" min="0" name="trader_cooldown" value="30"></div>
            </div>
            <div class="row2">
                <div class="field"><label>Мин. объём ордера, USD</label><input type="number" step="any" min="0" name="position_min_usd" value="" placeholder="пула (<?= htmlspecialchars((string) ($pool['position_min_usd'] ?? 0)) ?>)"><div class="hint">Нотионал. Пусто = лимит пула, 0 = выкл.</div></div>
                <div class="field"><label>Макс. объём ордера, USD</label><input type="number" step="any" min="0" name="position_max_usd" value="" placeholder="пула (<?= htmlspecialchars((string) ($pool['position_max_usd'] ?? 0)) ?>)"><div class="hint">Нотионал. Пусто = лимит пула, 0 = выкл.</div></div>
            </div>
            <button class="btn" type="submit">Добавить трейдера</button>
        </form>
    </div>
</div>

<!-- НАСТРОЙКИ ПУЛА -->
<div class="tab-panel" id="tp-config">
    <form method="POST">
        <?= csrf_field() ?>
        <input type="hidden" name="action" value="update_pool">
        <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
        <div class="card">
            <div class="card-title">Параметры</div>
            <div class="row2">
                <div class="field"><label>Название пула</label><input type="text" name="pool_label" value="<?= htmlspecialchars($pool['label']) ?>"></div>
                <div class="field"><label>Стартовый баланс, USDC</label><input type="number" step="any" min="0" name="virtual_balance" value="<?= htmlspecialchars((string) $pool['virtual_balance']) ?>"></div>
            </div>
            <div class="row2">
                <div class="field"><label>Плечо</label><input type="number" step="1" min="1" name="leverage" value="<?= htmlspecialchars((string) ($pool['leverage'] ?? 3)) ?>"></div>
                <div class="field"><label>Комиссия за сторону, %</label><input type="number" step="any" min="0" name="fee_pct_per_side" value="<?= htmlspecialchars((string) ($pool['fee_pct_per_side'] ?? 0.035)) ?>"><div class="hint">~0.035% taker на Hyperliquid</div></div>
            </div>
            <div class="row2">
                <div class="field"><label>Мин. объём ордера, USD (position_min_usd)</label><input type="number" step="any" min="0" name="pool_position_min_usd" value="<?= htmlspecialchars((string) ($pool['position_min_usd'] ?? 0)) ?>"><div class="hint">Нотионал (маржа × плечо). Меньше — поднимаем до минимума. 0 = выкл. Трейдер может переопределить своим.</div></div>
                <div class="field"><label>Макс. объём ордера, USD (position_max_usd)</label><input type="number" step="any" min="0" name="pool_position_max_usd" value="<?= htmlspecialchars((string) ($pool['position_max_usd'] ?? 0)) ?>"><div class="hint">Больше — срезаем. Приоритет над сайзингом и аллокацией. 0 = выкл.</div></div>
            </div>
            <div class="field"><label>Частичное закрытие (partial_close_mode)</label>
                <select name="partial_close_mode">
                    <option value="off" <?= (($pool['partial_close_mode'] ?? 'off') !== 'on') ? 'selected' : '' ?>>off — полное закрытие (паритет)</option>
                    <option value="on" <?= (($pool['partial_close_mode'] ?? 'off') === 'on') ? 'selected' : '' ?>>on — частичное + partial_close-вебхук (custom/katoshi)</option>
                </select>
                <div class="hint">on: закрываем ту же долю, что трейдер, и шлём partial_close. altrady частичное не умеет — оставьте off, иначе бумага разойдётся с реалом.</div>
            </div>
            <div class="row3">
                <div class="field"><label>Исполнение (execution_mode)</label>
                    <select name="execution_mode">
                        <option value="webhook" <?= (($pool['execution_mode'] ?? 'webhook') !== 'direct') ? 'selected' : '' ?>>webhook — симуляция/боты</option>
                        <option value="direct" <?= (($pool['execution_mode'] ?? 'webhook') === 'direct') ? 'selected' : '' ?>>direct (live) — реальные ордера</option>
                    </select>
                    <div class="hint">direct: пул шлёт ордера на Hyperliquid с сеткой/SL/TP каждого трейдера. Требует HL_* секретов. Размер — аллокация трейдера от реального счёта.</div>
                </div>
                <div class="field"><label>Режим маржи (hl_margin_mode)</label>
                    <select name="hl_margin_mode">
                        <option value="cross" <?= (($pool['hl_margin_mode'] ?? 'isolated') === 'cross') ? 'selected' : '' ?>>cross</option>
                        <option value="isolated" <?= (($pool['hl_margin_mode'] ?? 'isolated') !== 'cross') ? 'selected' : '' ?>>isolated</option>
                    </select>
                </div>
                <div class="field"><label>Субаккаунт (hl_subaccount)</label>
                    <input type="text" name="hl_subaccount" value="<?= htmlspecialchars($pool['hl_subaccount'] ?? '') ?>" placeholder="0x… (пусто = основной)" style="font-family:var(--mono)">
                    <div class="hint">Свой субаккаунт на пул → несколько пулов/трейдеров держат один символ независимо.</div>
                </div>
            </div>
            <label class="check" style="margin-bottom:16px"><input type="checkbox" name="pool_enabled" value="1" <?= !empty($pool['enabled']) ? 'checked' : '' ?>> Пул включён (бот обрабатывает трейдеров)</label>
            <div><button class="btn" type="submit">Сохранить настройки пула</button></div>
        </div>
    </form>
</div>

<!-- ВЕБХУКИ -->
<div class="tab-panel" id="tp-webhooks">
    <div class="alert info">До 3 интеграций. Katoshi/Altrady/Custom исполняют ордера, Telegram — только уведомления. Форма настроек пула и вебхуки сохраняются раздельно — сохранение одного не затирает другое.</div>
    <form method="POST">
        <?= csrf_field() ?>
        <input type="hidden" name="action" value="update_pool_webhooks">
        <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
        <?php render_webhooks_form($pool['webhooks'] ?? [], 'pool_wh_'); ?>
        <button class="btn" type="submit">Сохранить вебхуки</button>
    </form>
</div>

<!-- ОПАСНАЯ ЗОНА -->
<div class="tab-panel" id="tp-danger">
    <div class="card danger-zone">
        <div class="card-title">Опасная зона</div>
        <p class="dim" style="font-size:12.5px; margin-bottom:16px">Сброс обнулит виртуальный счёт пула и удалит watermarks трейдеров. История сделок в БД останется. Удаление пула убирает пул и всех его трейдеров.</p>
        <div style="display:flex; gap:10px; flex-wrap:wrap">
            <form method="POST" style="display:inline" onsubmit="return confirm('Сбросить state пула? Баланс вернётся к стартовому.')">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="reset_pool">
                <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
                <button type="submit" class="btn secondary">Сбросить state</button>
            </form>
            <form method="POST" style="display:inline" onsubmit="return confirm('Удалить пул и всех трейдеров?')">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="delete_pool">
                <input type="hidden" name="pool_id" value="<?= htmlspecialchars($pool['id']) ?>">
                <button type="submit" class="btn danger">Удалить пул</button>
            </form>
        </div>
    </div>
</div>

<script>UI.initTabs();</script>

<?php layout_footer(); ?>
