"use client";

import Link from "next/link";
import { EquityCanvas } from "@/components/EquityCanvas";
import { useLiveSimulation } from "@/components/useLiveSimulation";

const money = (value: number) => `$${value.toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
const percent = (value: number) => `${value >= 0 ? "+" : ""}${(value * 100).toFixed(2)}%`;

const candidates = [
  { market: "A 股 T+0 基金", t0: "仅部分", diversification: "中—高", interface: "尚未接入", decision: "备选", note: "债券、黄金、跨境、货币等部分 ETF 可日内回转；普通股票 ETF 多为 T+1。" },
  { market: "美国单只股票", t0: "支持", diversification: "低", interface: "Alpaca 可接", decision: "不作为首选", note: "流动性可以很好，但财报、诉讼、停牌与公司事件带来的跳空风险更集中。" },
  { market: "美国上市分散标的", t0: "支持", diversification: "高", interface: "已接 IEX", decision: "第一阶段", note: "先运行 SPY、QQQ、GLD；避免单一公司风险，且与现有实盘价模拟链路兼容。" },
] as const;

const completed = [
  "只使用美国常规交易时段分钟线，历史预热也排除盘前盘后",
  "新旧账户完全分离；8765 v1 的权益、持仓和成交不被覆盖",
  "信号从 12/36 放慢到 60/180，并增加 15 bps 成本门槛",
  "按分钟波动率缩小仓位，单标的最高 12%、总敞口最高 36%",
  "加入日亏 1%、组合回撤 3%、1.25% 跟踪止损与 30 分钟冷却",
  "15:45 前清仓，不留隔夜跳空；每标的每天最多一次完整往返",
];

const pending = [
  "至少 6—12 个月逐分钟样本外与走步回测，证明参数不是偶然拟合",
  "升级全美 SIP 报价并用 bid/ask 撮合，验证 IEX 与可成交价的偏差",
  "接入券商原生 Paper 订单，验证拒单、部分成交、重试与幂等恢复",
  "连续观察不少于 20 个交易日后，再决定是否申请极小资金实盘验收",
];

export function StrategyLab() {
  const { data, connected } = useLiveSimulation();
  const v2 = data.shadowV2;
  const v1Return = data.account.equity / data.account.starting_cash - 1;
  const v2Return = v2 ? v2.account.equity / v2.account.starting_cash - 1 : 0;

  return <div className="strategy-lab">
    <section className="lab-hero">
      <div>
        <span className="kicker">SHADOW STRATEGY / V2 · 风险管理型日内策略实验室</span>
        <h1>模拟策略</h1>
        <p>以实盘 IEX 分钟行情运行第二个影子账户，和 8765 原版并排观察。目标是降低换手、仓位和尾部风险；没有任何策略可以同时保证“低风险、高收益、稳定”。</p>
      </div>
      <div className="lab-score"><b>6 / 10</b><span>本轮已完成的优化项</span><small>{connected ? "云端影子账户已连接" : "正在连接云端账户"}</small></div>
    </section>

    <section className="selection-panel">
      <div className="section-head"><div><span className="kicker">T+0 UNIVERSE</span><h2>同日买卖标的选择</h2></div><span>最终选择：美国上市分散标的</span></div>
      <div className="candidate-grid">{candidates.map((row) => <article className={row.decision === "第一阶段" ? "selected" : ""} key={row.market}>
        <div><span>{row.decision}</span><h3>{row.market}</h3></div>
        <dl><div><dt>同日买卖</dt><dd>{row.t0}</dd></div><div><dt>分散程度</dt><dd>{row.diversification}</dd></div><div><dt>自动接口</dt><dd>{row.interface}</dd></div></dl>
        <p>{row.note}</p>
      </article>)}</div>
      <p className="selection-note">这次选择是工程与风险上的优先级，不代表美国资产必然收益更高，也不排除以后接入 A 股可 T+0 的黄金、债券或跨境 ETF。</p>
    </section>

    <section className="comparison-grid">
      <article className="compare-card legacy">
        <div className="compare-head"><div><span>BASELINE / V1</span><h2>8765 原版</h2></div><b>保留运行</b></div>
        <div className="compare-metrics"><div><span>权益</span><b>{money(data.account.equity)}</b></div><div><span>收益</span><b>{percent(v1Return)}</b></div><div><span>回撤</span><b>{percent(data.account.drawdown)}</b></div><div><span>成交</span><b>{data.tradeCount}</b></div></div>
        <dl className="parameter-list"><div><dt>均线</dt><dd>12 / 36 分钟</dd></div><div><dt>单标的目标</dt><dd>18%</dd></div><div><dt>熔断</dt><dd>组合回撤 5%</dd></div><div><dt>隔夜</dt><dd>允许</dd></div></dl>
      </article>

      <article className="compare-card v2">
        <div className="compare-head"><div><span>RISK MANAGED / V2</span><h2>模拟策略 · 日内影子账户</h2></div><b>{v2 ? "运行中" : "初始化"}</b></div>
        <div className="compare-metrics"><div><span>权益</span><b>{money(v2?.account.equity ?? 100_000)}</b></div><div><span>收益</span><b>{percent(v2Return)}</b></div><div><span>回撤</span><b>{percent(v2?.account.drawdown ?? 0)}</b></div><div><span>成交</span><b>{v2?.tradeCount ?? 0}</b></div></div>
        <dl className="parameter-list"><div><dt>均线</dt><dd>60 / 180 分钟</dd></div><div><dt>单标的上限</dt><dd>12% · 波动率缩放</dd></div><div><dt>风险闸门</dt><dd>日亏 1% · 回撤 3%</dd></div><div><dt>隔夜</dt><dd>15:45 清仓</dd></div></dl>
      </article>
    </section>

    <section className="lab-chart console-card">
      <div className="console-card-head"><div><span>V2 SHADOW EQUITY</span><h2>新策略权益曲线</h2></div><small>点击曲线可查看时间与权益</small></div>
      <EquityCanvas points={v2?.equityPoints ?? [100_000]} curve={v2?.equityCurve ?? [{ ts: data.generatedAt, equity: 100_000, drawdown: 0 }]} />
    </section>

    <section className="audit-panel">
      <div className="audit-column done"><span className="kicker">COMPLETED NOW</span><h2>本轮完成 6 项</h2><ol>{completed.map((item) => <li key={item}>{item}</li>)}</ol></div>
      <div className="audit-column pending"><span className="kicker">BEFORE LIVE CAPITAL</span><h2>仍需完成 4 项</h2><ol>{pending.map((item) => <li key={item}>{item}</li>)}</ol></div>
    </section>

    <section className="live-gateway-panel">
      <div><span className="kicker">LIVE EXECUTION GATEWAY</span><h2>实盘策略执行接口</h2><p>下单程序、限价单、幂等编号、行情新鲜度、单笔 5%、总敞口 25%、日亏和回撤闸门已设计。当前保持硬锁定：没有真实账户密钥、没有公开下单接口，也没有替您授权真实资金交易。</p></div>
      <div className="gateway-status"><span>当前状态</span><b>{data.liveExecution?.status ?? "LOCKED"}</b><small>需要真实账户 + 独立实盘密钥 + 小资金验收 + 当次明确启用</small><button type="button" disabled>实盘未武装</button><Link className="gateway-link" href="/execution">打开实盘策略 →</Link></div>
    </section>

    <p className="risk-note">影子账户从 100,000 USD 单独开始，使用和旧账户相同的 Alpaca IEX 实盘行情，但内部撮合仍不能模拟全部排队、冲击、延迟和部分成交。<Link href="/friction">查看实盘摩擦估算</Link> · <Link href="/vault">查看完整规格与源代码</Link></p>
  </div>;
}
