"use client";
import { useParams, useSearchParams, useRouter } from "next/navigation";
import { useEffect, useState, useCallback } from "react";
import { authFetch } from "@/lib/auth";
import Link from "next/link";
import dynamic from "next/dynamic";
import {
ArrowLeft,
CheckCircle,
PauseCircle,
AlertCircle,
Clock,
} from "lucide-react";
// ─── Dynamic imports for each strategy's pages ───────────────────
const SignalsV53 = dynamic(() => import("@/app/signals-v53/page"), { ssr: false });
const SignalsV53Fast = dynamic(() => import("@/app/signals-v53fast/page"), { ssr: false });
const SignalsV53Middle = dynamic(() => import("@/app/signals-v53middle/page"), { ssr: false });
const PaperV53 = dynamic(() => import("@/app/paper-v53/page"), { ssr: false });
const PaperV53Fast = dynamic(() => import("@/app/paper-v53fast/page"), { ssr: false });
const PaperV53Middle = dynamic(() => import("@/app/paper-v53middle/page"), { ssr: false });
// ─── Types ────────────────────────────────────────────────────────
interface StrategySummary {
id: string;
display_name: string;
status: string;
started_at: number;
initial_balance: number;
current_balance: number;
net_usdt: number;
net_r: number;
trade_count: number;
win_rate: number;
avg_win_r: number;
avg_loss_r: number;
open_positions: number;
pnl_usdt_24h: number;
pnl_r_24h: number;
cvd_windows?: string;
description?: string;
}
// ─── Helpers ──────────────────────────────────────────────────────
function fmtDur(ms: number) {
const s = Math.floor((Date.now() - ms) / 1000);
const d = Math.floor(s / 86400);
const h = Math.floor((s % 86400) / 3600);
const m = Math.floor((s % 3600) / 60);
if (d > 0) return `${d}天${h}h`;
if (h > 0) return `${h}h${m}m`;
return `${m}m`;
}
function StatusBadge({ status }: { status: string }) {
if (status === "running") return