"use client";

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

const stamp = (value: string | null | undefined) => value ? new Date(value).toLocaleString("zh-CN", { timeZone: "Asia/Shanghai", hour12: false }) : "—";

export function InfrastructureControlCenter() {
  const execution = useExecutionStatus();
  const live = useLiveSimulation();
  const warehouse = useMinuteWarehouse();
  const status = execution.data;
  const session = status.automatedExecution.session;
  const mirror = live.data.cnLiveMirror;
  const forward = live.data.cnForwardShadow;
  const schedulerHealthy = Boolean(live.data.alarmHeartbeat) && !live.data.alarmError;
  const dataHealthy = mirror?.marketDataStatus !== "error" && warehouse.data.status !== "blocked";
  const systemHealthy = schedulerHealthy && dataHealthy && !execution.error && !live.error;
  const blocks = [
    {
      id: "scheduler", title: "Scheduler", status: schedulerHealthy ? "HEALTHY" : "WAITING",
      summary: `${status.automatedExecution.scheduler} · ${session.phase}`,
      lines: [`调度心跳：${stamp(live.data.alarmHeartbeat)}`, `下一状态：${stamp(session.nextTransitionAt)}`, "开盘、午休、收盘均由交易日历显式控制"],
    },
    {
      id: "risk-engine", title: "Risk Engine", status: "FAIL_CLOSED",
      summary: "三账户风控独立 · Champion 盘中冻结",
      lines: ["不传播策略级熔断", "缺数、陈旧行情与异常状态阻断新单", `规则：${forward?.rules.version ?? "加载中"}`],
    },
    {
      id: "data-engine", title: "Data Engine", status: dataHealthy ? "HEALTHY" : "ATTENTION",
      summary: `${warehouse.data.archiveBackend} · ${warehouse.data.status}`,
      lines: [`D1 ${warehouse.data.bindings.d1 ? "已绑定" : "未绑定"} · R2 ${warehouse.data.bindings.r2 ? "已绑定" : "未绑定"}`, `研究级完整OHLCV分区 ${warehouse.data.continuity.fullOhlcvPartitions}`, `转债 C级代理不可用于策略：${warehouse.data.continuity.closeProxyPartitions}`],
    },
    {
      id: "broker-adapter", title: "Broker Adapter", status: "LOCKED",
      summary: "没有券商连接 · 没有公网下单入口",
      lines: [`真实凭证：${status.liveEngine.liveCredentialsConfigured ? "存在" : "未配置"}`, `真实订单：${status.liveEngine.ordersSubmitted}`, "本阶段不申请券商权限"],
    },
    {
      id: "execution-engine", title: "Execution Engine", status: "SHADOW_ONLY",
      summary: "限价、排队、部分成交、撤单竞态与费用模型",
      lines: [`盘中周期 ${status.liveEngine.cycleSeconds} 秒`, `今日影子订单 ${mirror?.executionStats.submitted ?? 0}`, "重复执行以交易日+账户+Champion幂等键去重"],
    },
    {
      id: "system-health", title: "System Health", status: systemHealthy ? "HEALTHY" : "ATTENTION",
      summary: systemHealthy ? "云端组件正常" : "存在需处理的连接或数据问题",
      lines: [`页面流 ${live.connected ? "已连接" : "重连中"}`, `执行状态 ${execution.connected ? "已连接" : "重连中"}`, `分钟仓库 ${warehouse.connected ? "已连接" : "重连中"}`],
    },
  ];
  return <main className="infra-center">
    <section className="infra-hero">
      <div><span>QUANT ATLAS / INFRASTRUCTURE</span><h1>执行与基础设施控制中心</h1><p>这里只显示 Scheduler、Risk、Data、Broker、Execution 与 System Health。策略详情进入三个独立账户页面。</p></div>
      <aside><b className={systemHealthy ? "positive" : "negative"}>{systemHealthy ? "SYSTEM HEALTHY" : "ATTENTION"}</b><small>公网只读 · 真实订单 0</small></aside>
    </section>

    <nav className="infra-strategy-links">
      <Link href="/trading/a-share"><span>A股</span><b>ASHARE_CHAMPION_V1</b><small>打开 T+1 Forward →</small></Link>
      <Link href="/trading/etf"><span>ETF</span><b>ETF_CHAMPION_V1</b><small>打开 CASH_CONTROL →</small></Link>
      <Link href="/trading/convertible-bond"><span>可转债</span><b>CB_CHAMPION_V1</b><small>打开 DATA_GATED →</small></Link>
    </nav>

    <section className="infra-grid">{blocks.map((block) => <article id={block.id} key={block.id}>
      <header><div><span>{block.title.toUpperCase()}</span><h2>{block.title}</h2></div><em>{block.status}</em></header>
      <b>{block.summary}</b>
      <ul>{block.lines.map((line) => <li key={line}>{line}</li>)}</ul>
    </article>)}</section>

    <section className="infra-audit">
      <div><span>当前交易日</span><b>{session.dayKey} · {session.phase}</b></div>
      <div><span>参数是否可盘中修改</span><b>否</b></div>
      <div><span>Champion 自动晋级</span><b>禁止</b></div>
      <div><span>Daily Record</span><b>{forward?.nextAction ?? "等待初始化"}</b></div>
      <div><span>公共写接口</span><b>0</b></div>
      <div><span>真实资金</span><b>LOCKED</b></div>
    </section>
  </main>;
}
