<?php
// =============================================================
// TRADER — карточка трейдера (постоянный URL trader.php?id=…)
// =============================================================
// Вкладки: Позиции / Сделки / Сигналы / Настройки / Журнал / Аналитика.
// Все действия — те же action'ы wallets_handler, что и раньше
// (update_wallet, toggle_wallet, reset_wallet, delete_wallet,
// add_log, delete_log, remove_watching).

require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/auth.php';

require_auth();

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

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

require_once __DIR__ . '/../price_fetcher.php';
require_once __DIR__ . '/../balance_tracker.php';
require_once __DIR__ . '/data.php';
require_once __DIR__ . '/lib/forms.php';
require_once __DIR__ . '/lib/render.php';
require_once __DIR__ . '/lib/wallets_handler.php';
require_once __DIR__ . '/lib/layout.php';

$message = '';
$messageType = '';

$config = load_wallets_config();

$walletId = $_GET['id'] ?? '';

// POST: снятие watching обрабатываем локально, остальное — общий handler
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_verify();
    $action = $_POST['action'] ?? '';

    if ($action === 'remove_watching') {
        $wSymbol = $_POST['symbol'] ?? '';
        if ($walletId !== '' && $wSymbol !== '') {
            storage_remove_watching('wallet', $walletId, $wSymbol);
        }
        header('Location: trader.php?id=' . urlencode($walletId) . '#positions');
        exit;
    }

    $res = dashboard_handle_wallets_post($_POST, $config);
    $message     = $res['message'];
    $messageType = $res['messageType'];
    $config = load_wallets_config();

    // После удаления трейдера карточки больше нет — уходим в реестр
    if ($action === 'delete_wallet' && $res['messageType'] === 'success') {
        header('Location: traders.php');
        exit;
    }
}

$wallets        = $config['wallets'];
$globalSettings = $config['global_settings'];
$availableTags  = $config['available_tags'] ?? [];

$wallet = null;
foreach ($wallets as $w) {
    if ($w['id'] === $walletId) { $wallet = $w; break; }
}
if ($wallet === null) {
    layout_header(['title' => 'Трейдер не найден', 'page' => 'traders', 'back' => 'traders.php']);
    echo '<div class="empty">Трейдер «' . htmlspecialchars($walletId) . '» не найден. <a href="traders.php">К списку трейдеров</a></div>';
    layout_footer();
    exit;
}

// --- Данные трейдера -------------------------------------------
$settings     = resolve_wallet_settings($wallet, $globalSettings);
$balanceState = load_wallet_balance_state($walletId, $settings);
$metrics      = compute_account_metrics($balanceState, $settings);
$trades       = storage_get_closed_trades($walletId);
$signals      = load_signals($walletId);
$score        = calculate_wallet_score($trades);
$activity     = check_wallet_activity($trades);
$summary      = calculate_summary($trades);
$spark        = daily_pnl_series($trades, 14);

$positions = calculate_unrealized_pnl(load_open_positions([$wallet], $walletId));
$watching  = load_watching_positions([$wallet], $walletId);
$wLog      = storage_get_wallet_log($walletId, 50);

$status  = $wallet['status'] ?? 'WATCH';
$rating  = (int) ($wallet['rating'] ?? 0);
$tags    = $wallet['tags'] ?? [];
$isDead  = !$activity['active'] && $activity['last_trade_at'] !== null;
$overrides = $wallet['settings'] ?? [];
$ovCount = count(array_filter($overrides, fn($v) => $v !== null));

$recentTrades  = array_reverse($trades);
$recentSignals = array_reverse($signals);

layout_header([
    'title' => $wallet['label'] ?? $walletId,
    'page'  => 'traders',
    'back'  => 'traders.php',
    'crumb' => ['label' => 'Трейдеры', 'href' => 'traders.php'],
]);
layout_flash($message, $messageType);
?>

<!-- Шапка трейдера -->
<div class="card" style="margin-bottom:16px">
    <div style="display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap">
        <div style="flex:1; min-width:220px">
            <div style="display:flex; align-items:center; gap:10px; flex-wrap:wrap">
                <span style="font-size:19px; font-weight:750"><?= htmlspecialchars($wallet['label'] ?? $walletId) ?></span>
                <span class="badge st-<?= htmlspecialchars($status) ?>"><?= htmlspecialchars($status) ?></span>
                <?php if ($isDead): ?><span class="badge liq">☠ <?= $activity['days_silent'] ?>д без сделок</span><?php endif; ?>
            </div>
            <div style="display:flex; align-items:center; gap:8px; margin-top:6px; flex-wrap:wrap">
                <span class="addr"><?= htmlspecialchars($wallet['address']) ?></span>
                <?= hyperdash_link($wallet['address']) ?>
                <?php foreach ($tags as $tag) echo tag_pill($tag); ?>
                <?= rating_stars($rating) ?>
            </div>
            <?php if (!empty($wallet['notes'])): ?>
            <div class="dim" style="font-size:12.5px; margin-top:8px"><?= htmlspecialchars($wallet['notes']) ?></div>
            <?php endif; ?>
        </div>
        <div style="display:flex; gap:8px; align-items:center; flex-wrap:wrap">
            <form method="POST" id="toggle-form" style="display:inline-flex; align-items:center; gap:10px">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="toggle_wallet">
                <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
                <span class="dim" style="font-size:12.5px">Копирование</span>
                <span class="switch">
                    <input type="checkbox" <?= !empty($wallet['enabled']) ? 'checked' : '' ?> onchange="document.getElementById('toggle-form').submit()">
                    <span class="track"></span>
                </span>
            </form>
            <form method="POST" style="display:inline" onsubmit="return confirm('Сбросить state трейдера? Откроется заново с текущего момента.')">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="reset_wallet">
                <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
                <button type="submit" class="btn secondary small">Сбросить state</button>
            </form>
            <form method="POST" style="display:inline" onsubmit="return confirm('Удалить трейдера «<?= htmlspecialchars($wallet['label'] ?? $walletId) ?>» и весь его state? Это нельзя отменить.')">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="delete_wallet">
                <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
                <button type="submit" class="btn danger small">Удалить</button>
            </form>
        </div>
    </div>
</div>

<!-- KPI -->
<div class="kpi-grid">
    <div class="kpi">
        <div class="k-label">Баланс (вирт.)</div>
        <div class="k-value"><?= number_format($metrics['current_balance'], 2) ?> $</div>
        <div class="k-sub">ROI <span class="<?= pnl_class($metrics['total_return_pct']) ?>"><?= fmt_pct($metrics['total_return_pct']) ?></span></div>
    </div>
    <div class="kpi">
        <div class="k-label">Net PnL</div>
        <div class="k-value <?= pnl_class($metrics['total_net_pnl']) ?>"><?= fmt_usd($metrics['total_net_pnl']) ?></div>
        <div class="k-sub">gross <?= fmt_usd($metrics['total_gross_pnl']) ?> · fees <?= fmt_usd(-$metrics['total_fees']) ?></div>
    </div>
    <div class="kpi">
        <div class="k-label">Win rate</div>
        <div class="k-value"><?= number_format($metrics['winrate'], 1) ?>%</div>
        <div class="k-sub"><?= $metrics['trades_count'] ?> сделок · <?= count($signals) ?> сигналов</div>
    </div>
    <div class="kpi">
        <div class="k-label">Max DD / MTM DD</div>
        <div class="k-value neg"><?= number_format($metrics['max_drawdown_pct'], 1) ?>%</div>
        <div class="k-sub">MTM <?= number_format($metrics['mtm_max_drawdown_pct'] ?? 0, 1) ?>% (с открытыми)</div>
    </div>
    <div class="kpi">
        <div class="k-label">Score</div>
        <div class="k-value">
            <?php if ($score['score'] !== null): ?>
                <span class="badge grade-<?= $score['grade'] ?>" style="font-size:15px; padding:4px 12px"><?= $score['grade'] ?> <?= $score['score'] ?></span>
            <?php else: ?>
                <span class="dim">—</span>
            <?php endif; ?>
        </div>
        <div class="k-sub"><?= $score['score'] !== null ? 'автоскоринг 0–100' : htmlspecialchars($score['reason'] ?? '') ?></div>
    </div>
</div>

<!-- Табы -->
<div class="tabs">
    <button class="tab-btn active" data-tab="tp-positions" data-hash="positions">Позиции <span class="cnt"><?= (count($positions) + count($watching)) ?: '' ?></span></button>
    <button class="tab-btn" data-tab="tp-trades" data-hash="trades">Сделки <span class="cnt"><?= count($trades) ?: '' ?></span></button>
    <button class="tab-btn" data-tab="tp-signals" data-hash="signals">Сигналы <span class="cnt"><?= count($signals) ?: '' ?></span></button>
    <button class="tab-btn" data-tab="tp-settings" data-hash="settings">Настройки</button>
    <button class="tab-btn" data-tab="tp-log" data-hash="log">Журнал <span class="cnt"><?= count($wLog) ?: '' ?></span></button>
    <button class="tab-btn" data-tab="tp-overview" data-hash="overview">Аналитика</button>
</div>

<!-- ПОЗИЦИИ -->
<div class="tab-panel active" id="tp-positions">
    <div class="card-title" style="margin-bottom:10px">Открытые позиции</div>
    <div class="table-wrap" style="margin-bottom:20px">
        <?php if (empty($positions)): ?>
            <div class="empty">Нет открытых позиций</div>
        <?php else: ?>
        <table class="sortable stack">
            <thead><tr><th>Символ</th><th>Сторона</th><th class="num">Размер $</th><th class="num">Плечо</th><th class="num">Вход</th><th class="num">Вход трейдера</th><th class="num">Тек. цена</th><th class="num">PnL $</th><th class="num">PnL %</th><th>Открыта</th></tr></thead>
            <tbody>
                <?php foreach ($positions as $p): ?>
                <tr>
                    <td class="stack-main"><b><?= htmlspecialchars($p['symbol']) ?></b> <?= tradingview_link($p['symbol']) ?></td>
                    <td data-label="Сторона"><span class="badge <?= $p['side'] ?>"><?= strtoupper($p['side']) ?></span></td>
                    <td class="num" data-label="Размер" data-sort="<?= (float) ($p['size_usd'] ?? 0) ?>"><?= number_format((float) ($p['size_usd'] ?? 0), 2) ?></td>
                    <td class="num" data-label="Плечо" data-sort="<?= (int) $p['leverage'] ?>">×<?= (int) $p['leverage'] ?></td>
                    <td class="num" data-label="Вход" data-sort="<?= (float) $p['entry_price'] ?>"><?= number_format((float) $p['entry_price'], 4) ?></td>
                    <td class="num" data-label="Вход трейдера"><?= isset($p['trader_entry_price']) && $p['trader_entry_price'] !== null ? number_format((float) $p['trader_entry_price'], 4) : '—' ?></td>
                    <td class="num" data-label="Тек. цена"><?= $p['current_price'] !== null ? number_format($p['current_price'], 4) : '—' ?></td>
                    <td class="num <?= pnl_class($p['pnl_usd']) ?>" data-label="PnL $" data-sort="<?= $p['pnl_usd'] ?? '' ?>" style="font-weight:650"><?= fmt_usd($p['pnl_usd']) ?></td>
                    <td class="num <?= pnl_class($p['pnl_pct']) ?>" data-label="PnL %" data-sort="<?= $p['pnl_pct'] ?? '' ?>"><?= fmt_pct($p['pnl_pct']) ?></td>
                    <td data-label="Открыта" class="dim"><span data-reltime="<?= (int) $p['opened_at'] ?>"><?= date('Y-m-d H:i', $p['opened_at']) ?></span></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <?php endif; ?>
    </div>
    <div class="card-title" style="margin-bottom:10px">Ожидание просадки (watching)</div>
    <div class="table-wrap">
        <?php if (empty($watching)): ?>
            <div class="empty">Нет символов в ожидании</div>
        <?php else: ?>
        <table class="stack">
            <thead><tr><th>Символ</th><th>Сторона</th><th class="num">Плечо</th><th class="num">Цена входа трейдера</th><th>С</th><th class="num">Возраст</th><th></th></tr></thead>
            <tbody>
                <?php foreach ($watching as $wp): ?>
                <tr>
                    <td class="stack-main"><b><?= htmlspecialchars($wp['symbol']) ?></b> <?= tradingview_link($wp['symbol']) ?></td>
                    <td data-label="Сторона"><span class="badge <?= htmlspecialchars($wp['side']) ?>"><?= strtoupper(htmlspecialchars($wp['side'])) ?></span></td>
                    <td class="num" data-label="Плечо">×<?= (int) ($wp['leverage'] ?? 1) ?></td>
                    <td class="num" data-label="Вход трейдера"><?= number_format((float) ($wp['trader_entry_price'] ?? 0), 4) ?></td>
                    <td data-label="С" class="dim"><span data-reltime="<?= (int) ($wp['started_at'] ?? time()) ?>"><?= date('m-d H:i', (int) ($wp['started_at'] ?? time())) ?></span></td>
                    <td class="num" data-label="Возраст"><?= floor(($wp['age_seconds'] ?? 0) / 3600) ?>ч <?= floor((($wp['age_seconds'] ?? 0) % 3600) / 60) ?>м</td>
                    <td style="text-align:right">
                        <form method="POST" style="display:inline" onsubmit="return confirm('Снять <?= htmlspecialchars($wp['symbol']) ?> с наблюдения?')">
                            <?= csrf_field() ?>
                            <input type="hidden" name="action" value="remove_watching">
                            <input type="hidden" name="symbol" value="<?= htmlspecialchars($wp['symbol']) ?>">
                            <button type="submit" class="btn danger small">Снять</button>
                        </form>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <?php endif; ?>
    </div>
</div>

<!-- СДЕЛКИ -->
<div class="tab-panel" id="tp-trades">
    <div class="table-wrap">
        <?php if (empty($recentTrades)): ?>
            <div class="empty">Пока нет закрытых сделок</div>
        <?php else: ?>
        <table class="sortable stack">
            <thead><tr><th>Закрыта</th><th>Символ</th><th>Сторона</th><th class="num">Вход</th><th class="num">Выход</th><th class="num">Размер $</th><th class="num">Слиппедж</th><th class="num">Gross</th><th class="num">Fees</th><th class="num">Net PnL</th></tr></thead>
            <tbody>
                <?php foreach ($recentTrades as $t): ?>
                <?php
                    $fees = (float) ($t['entry_fee'] ?? 0) + (float) ($t['exit_fee'] ?? 0);
                    $slippage = ($t['exit_slippage_pct'] ?? '') !== '' ? (float) $t['exit_slippage_pct'] : null;
                    $closeTs = strtotime($t['close_time']);
                    $reason = $t['exit_reason'] ?? 'signal';
                ?>
                <tr>
                    <td class="dim num" data-label="Закрыта" data-sort="<?= (int) $closeTs ?>"><span data-reltime="<?= (int) $closeTs ?>"><?= htmlspecialchars(substr($t['close_time'], 5, 11)) ?></span></td>
                    <td class="stack-main"><b><?= htmlspecialchars($t['symbol']) ?></b> <?= tradingview_link($t['symbol']) ?>
                        <?php if ($reason === 'liquidation'): ?><span class="badge liq" title="Внутрисделочная ликвидация: убыток достиг маржи">LIQ</span>
                        <?php elseif ($reason === 'partial'): ?><span class="badge part" title="Частичное закрытие">PART</span><?php endif; ?>
                    </td>
                    <td data-label="Сторона"><span class="badge <?= $t['side'] ?>"><?= strtoupper($t['side']) ?></span></td>
                    <td class="num" data-label="Вход" data-sort="<?= (float) $t['entry_price'] ?>"><?= number_format((float) $t['entry_price'], 4) ?></td>
                    <td class="num" data-label="Выход" data-sort="<?= (float) $t['exit_price'] ?>"><?= number_format((float) $t['exit_price'], 4) ?></td>
                    <td class="num" data-label="Размер" data-sort="<?= (float) ($t['size_usd'] ?? 0) ?>"><?= number_format((float) ($t['size_usd'] ?? 0), 2) ?></td>
                    <td class="num <?= $slippage !== null ? pnl_class(-$slippage) : '' ?>" data-label="Слиппедж" data-sort="<?= $slippage ?? '' ?>"><?= $slippage !== null ? fmt_pct($slippage) : '—' ?></td>
                    <td class="num <?= pnl_class((float) $t['gross_pnl']) ?>" data-label="Gross" data-sort="<?= (float) $t['gross_pnl'] ?>"><?= fmt_usd((float) $t['gross_pnl']) ?></td>
                    <td class="num neg" data-label="Fees" data-sort="<?= -$fees ?>"><?= fmt_usd(-$fees) ?></td>
                    <td class="num <?= pnl_class((float) $t['net_pnl']) ?>" data-label="Net PnL" data-sort="<?= (float) $t['net_pnl'] ?>" style="font-weight:650"><?= fmt_usd((float) $t['net_pnl']) ?></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <?php endif; ?>
    </div>
</div>

<!-- СИГНАЛЫ -->
<div class="tab-panel" id="tp-signals">
    <div class="table-wrap">
        <?php if (empty($recentSignals)): ?>
            <div class="empty">Пока нет сигналов</div>
        <?php else: ?>
        <table class="sortable stack">
            <thead><tr><th>Время</th><th>Символ</th><th>Сторона</th><th class="num">Размер</th><th>Режим</th></tr></thead>
            <tbody>
                <?php foreach ($recentSignals as $s): ?>
                <?php $sigTs = strtotime($s['datetime']); ?>
                <tr>
                    <td class="dim num" data-label="Время" data-sort="<?= (int) $sigTs ?>"><span data-reltime="<?= (int) $sigTs ?>"><?= htmlspecialchars(substr($s['datetime'], 5, 11)) ?></span></td>
                    <td class="stack-main"><b><?= htmlspecialchars($s['symbol']) ?></b> <?= tradingview_link($s['symbol']) ?></td>
                    <td data-label="Сторона"><span class="badge <?= strtolower($s['side']) === 'long' ? 'long' : 'short' ?>"><?= strtoupper(htmlspecialchars($s['side'])) ?></span></td>
                    <td class="num" data-label="Размер" data-sort="<?= (float) $s['size'] ?>"><?= number_format((float) $s['size'], 6) ?></td>
                    <td data-label="Режим"><span class="badge mode"><?= htmlspecialchars($s['mode']) ?></span></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <?php endif; ?>
    </div>
</div>

<!-- НАСТРОЙКИ -->
<div class="tab-panel" id="tp-settings">
    <div class="alert info">
        <b>Пустое поле = как в <a href="settings.php">глобальных настройках</a></b>; что именно оттуда
        придёт — написано прямо в поле. Заполнил поле — значение действует только для этого трейдера
        и помечается жёлтой полосой слева.
        <?= $ovCount
            ? 'Сейчас переопределено полей: <b>' . $ovCount . '</b>.'
            : 'Сейчас все настройки берутся из глобальных.' ?>
        Профиль и настройки сохраняются одной кнопкой внизу.
    </div>

    <form method="POST">
        <?= csrf_field() ?>
        <input type="hidden" name="action" value="update_wallet">
        <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">

        <div class="card">
            <div class="card-title">Профиль</div>
            <div class="field"><label>Название</label><input type="text" name="label" value="<?= htmlspecialchars($wallet['label'] ?? '') ?>"></div>
            <div class="field"><label>Адрес</label><input type="text" name="address" value="<?= htmlspecialchars($wallet['address']) ?>" pattern="0x[a-fA-F0-9]{40}" required style="font-family:var(--mono)"></div>
            <div class="row3">
                <div class="field"><label>Статус</label>
                    <select name="status" id="s-status">
                        <?php foreach (['WATCH', 'TEST', 'ACTIVE', 'ARCHIVE'] as $st): ?>
                        <option value="<?= $st ?>" <?= $status === $st ? 'selected' : '' ?>><?= $st ?></option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="field"><label>Рейтинг</label>
                    <select name="rating">
                        <option value="0" <?= $rating === 0 ? 'selected' : '' ?>>— без рейтинга</option>
                        <?php for ($i = 1; $i <= 5; $i++): ?>
                        <option value="<?= $i ?>" <?= $rating === $i ? 'selected' : '' ?>><?= str_repeat('★', $i) . str_repeat('☆', 5 - $i) ?></option>
                        <?php endfor; ?>
                    </select>
                </div>
                <div class="field"><label>Источник</label><input type="text" name="source" value="<?= htmlspecialchars($wallet['source'] ?? '') ?>" placeholder="Twitter, Discord, вручную…"></div>
            </div>
            <div class="hint" style="margin:-4px 0 12px">
                Статус, рейтинг, теги и заметки — только для твоей аналитики и фильтров:
                на работу бота они не влияют. Копирование включает и выключает галка внизу карточки.
            </div>
            <div class="field" id="s-archive-wrap" style="<?= $status !== 'ARCHIVE' ? 'display:none' : '' ?>">
                <label>Причина архивации</label>
                <input type="text" name="archive_reason" value="<?= htmlspecialchars($wallet['archive_reason'] ?? '') ?>" placeholder="перестал торговать / начал сливать / сменил стиль…">
            </div>
            <?php if (!empty($availableTags)): ?>
            <div class="field"><label>Теги</label>
                <div class="tag-checkbox-grid">
                    <?php foreach ($availableTags as $tag): ?>
                    <div class="tag-checkbox-item">
                        <input type="checkbox" name="tags[]" value="<?= htmlspecialchars($tag) ?>" id="tag-<?= htmlspecialchars($tag) ?>" <?= in_array($tag, $tags, true) ? 'checked' : '' ?>>
                        <label for="tag-<?= htmlspecialchars($tag) ?>"><?= tag_pill($tag) ?></label>
                    </div>
                    <?php endforeach; ?>
                </div>
            </div>
            <?php endif; ?>
            <div class="field"><label>Заметки</label><textarea name="notes" rows="2" placeholder="Торгует только BTC, хорошо пережил мартовский слив…"><?= htmlspecialchars($wallet['notes'] ?? '') ?></textarea></div>
            <label class="check"><input type="checkbox" name="enabled" value="1" <?= !empty($wallet['enabled']) ? 'checked' : '' ?>> Включён (бот копирует сделки)</label>
        </div>

        <?php render_overrides_fields('edit_' . $walletId . '_', $overrides, $globalSettings); ?>

        <div style="margin: 4px 0 16px">
            <button class="btn" type="submit">Сохранить профиль и настройки</button>
        </div>
    </form>

    <div class="card danger-zone">
        <div class="card-title">Опасная зона</div>
        <p class="dim" style="font-size:12.5px; margin-bottom:14px">Сброс state: трейдер откроется заново с текущего момента, открытые позиции и дедупликация будут очищены. Удаление — необратимо, вместе со всем state (история сделок в БД останется).</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_wallet">
                <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
                <button type="submit" class="btn secondary">Сбросить state</button>
            </form>
            <form method="POST" style="display:inline" onsubmit="return confirm('Удалить трейдера и весь его state? Это нельзя отменить.')">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="delete_wallet">
                <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
                <button type="submit" class="btn danger">Удалить трейдера</button>
            </form>
        </div>
    </div>
</div>

<!-- ЖУРНАЛ -->
<div class="tab-panel" id="tp-log">
    <div class="card">
        <form method="POST" style="display:flex; gap:10px; margin-bottom:16px">
            <?= csrf_field() ?>
            <input type="hidden" name="action" value="add_log">
            <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
            <input type="text" name="note" placeholder="Добавить запись в журнал…" style="flex:1" required>
            <button class="btn" type="submit">Добавить</button>
        </form>
        <?php if (empty($wLog)): ?>
            <div class="empty">Записей нет</div>
        <?php else: ?>
            <?php foreach ($wLog as $entry): ?>
            <div style="display:flex; gap:12px; align-items:baseline; padding:9px 0; border-bottom:1px solid var(--border); font-size:13px">
                <span class="dim num" style="white-space:nowrap; font-size:12px; width:130px; flex-shrink:0"><?= htmlspecialchars($entry['created_at']) ?></span>
                <span style="flex:1"><?= htmlspecialchars($entry['note']) ?></span>
                <form method="POST" style="margin:0">
                    <?= csrf_field() ?>
                    <input type="hidden" name="action" value="delete_log">
                    <input type="hidden" name="wallet_id" value="<?= htmlspecialchars($walletId) ?>">
                    <input type="hidden" name="entry_id" value="<?= (int) $entry['id'] ?>">
                    <button type="submit" class="btn ghost small" title="Удалить">×</button>
                </form>
            </div>
            <?php endforeach; ?>
        <?php endif; ?>
    </div>
</div>

<!-- АНАЛИТИКА -->
<div class="tab-panel" id="tp-overview">
    <div class="card">
        <div class="card-title">Дневной PnL за 14 дней</div>
        <div class="chart-box" id="t-pnl-chart"></div>
    </div>
    <div class="charts-2" style="margin-top:16px">
        <div class="card" style="margin-top:0">
            <div class="card-title">Автоскоринг</div>
            <?php if ($score['score'] !== null): ?>
                <?php foreach ($score['breakdown'] as $key => $b): ?>
                <?php $pctW = $b['max'] > 0 ? (int) round($b['score'] / $b['max'] * 100) : 0; ?>
                <div style="margin-bottom:12px">
                    <div style="display:flex; justify-content:space-between; font-size:12.5px; margin-bottom:4px">
                        <span class="dim"><?= htmlspecialchars($key) ?> · <?= htmlspecialchars((string) $b['value']) ?></span>
                        <span class="num"><?= $b['score'] ?>/<?= $b['max'] ?></span>
                    </div>
                    <div style="height:6px; border-radius:3px; background:var(--surface-3)">
                        <div style="height:6px; border-radius:3px; width:<?= $pctW ?>%; background:<?= $pctW >= 70 ? 'var(--pos)' : ($pctW >= 40 ? 'var(--warn)' : 'var(--neg)') ?>"></div>
                    </div>
                </div>
                <?php endforeach; ?>
            <?php else: ?>
                <div class="empty"><?= htmlspecialchars($score['reason'] ?? 'Недостаточно данных для скоринга') ?></div>
            <?php endif; ?>
        </div>
        <div class="card" style="margin-top:0">
            <div class="card-title">Паспорт</div>
            <div style="font-size:13px">
                <?php
                $passport = [
                    ['Статус', '<span class="badge st-' . htmlspecialchars($status) . '">' . htmlspecialchars($status) . '</span>'],
                    ['Источник', htmlspecialchars($wallet['source'] ?? '') ?: '—'],
                    ['Активность', $activity['last_trade_at'] === null
                        ? '<span class="dim">нет сделок</span>'
                        : ($isDead
                            ? '<span class="neg">⚠ ' . $activity['days_silent'] . 'д тишины</span>'
                            : ($activity['days_silent'] === 0 ? '<span class="pos">сегодня</span>' : '<span class="dim">' . $activity['days_silent'] . 'д назад</span>'))],
                    ['Средний ROI/сделка', '<span class="' . pnl_class($summary['avg_pnl_pct']) . '">' . fmt_pct($summary['avg_pnl_pct']) . '</span>'],
                    ['Слиппедж ср.', $summary['avg_slippage'] != 0 ? fmt_pct($summary['avg_slippage']) : '—'],
                    ['Profit factor', $summary['profit_factor'] === null ? '∞' : number_format($summary['profit_factor'], 2)],
                    ['Overrides', $ovCount ? $ovCount . ' полей переопределено' : 'нет — всё глобальное'],
                ];
                if (!empty($wallet['archive_reason'])) {
                    $passport[] = ['Причина архива', htmlspecialchars($wallet['archive_reason'])];
                }
                foreach ($passport as [$k, $v]):
                ?>
                <div style="display:flex; justify-content:space-between; gap:14px; padding:7px 0; border-bottom:1px solid var(--border)">
                    <span class="dim"><?= $k ?></span><span style="text-align:right"><?= $v ?></span>
                </div>
                <?php endforeach; ?>
            </div>
        </div>
    </div>
</div>

<?php render_settings_ui_script(); ?>
<script>
(function () {
    UI.barChart('t-pnl-chart', <?= json_encode($spark['labels']) ?>, <?= json_encode($spark['usd']) ?>, ' $', { w: 1000, h: 180 });

    // Причина архивации — только при статусе ARCHIVE
    const st = document.getElementById('s-status');
    if (st) st.addEventListener('change', e => {
        document.getElementById('s-archive-wrap').style.display = e.target.value === 'ARCHIVE' ? '' : 'none';
    });

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

<?php layout_footer(); ?>
