Files
qlib/frontend/web/app/page.tsx
T
Simon 92627f5b6b feat: Phase 3 Web — 业务 API(stocks/factors/backtests)+ Next.js 前端
- 后端业务 API:GET /api/stocks(搜索/分页)、GET /api/factors(因子目录)、POST /api/factor-tests 与 /api/backtests(Research Spec 驱动同步执行)、GET /api/backtests/last;Annotated 依赖注入 + CORS(dev)
- Repository 批量查询 get_range_many(研究装配一次查询,避免逐只拉取)
- 前端 frontend/web:Next.js 15(TS) + ECharts —— 总览 / 股票池 / 因子研究(IC·RankIC·分层展示) / 回测(净值·回撤·月度·持仓·未建模标注)
- 前端只消费业务 API 与标准化 BacktestResult,无 Qlib/SQL 概念泄漏
- 真实数据:同步 20 只权重股 2023-2024 日线(9680 根)支撑截面研究
- 验证:API 集成测试 8 项(DTO 校验/装配/引擎/标准结果,内存 repo 全链路)+ 全量 pytest 68 passed;前端 tsc + next build 通过;无头浏览器端到端(factors/backtest 页面渲染后端数据)
- ruff clean
2026-09-06 17:14:33 +08:00

50 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client";
import { useEffect, useState } from "react";
import { apiGet } from "@/lib/api";
import type { Stock, FactorMeta } from "@/lib/types";
export default function DashboardPage() {
const [stockCount, setStockCount] = useState<number | null>(null);
const [factorCount, setFactorCount] = useState<number | null>(null);
const [error, setError] = useState("");
useEffect(() => {
Promise.all([
apiGet<Stock[]>("/stocks?limit=500"),
apiGet<FactorMeta[]>("/factors"),
])
.then(([stocks, factors]) => {
setStockCount(stocks.length);
setFactorCount(factors.length);
})
.catch((e: Error) => setError(e.message));
}, []);
return (
<>
<h1>总览</h1>
{error && <div className="error">后端不可达:{error}</div>}
<div className="stat-grid">
<div className="stat">
<div className="label">股票池</div>
<div className="value">{stockCount ?? "—"}</div>
</div>
<div className="stat">
<div className="label">内置因子</div>
<div className="value">{factorCount ?? "—"}</div>
</div>
</div>
<div className="card" style={{ marginTop: 16 }}>
<h2>说明</h2>
<div className="muted">
个人 A 股量化研究平台(Phase 3 Web)。
顶部导航进入「股票池 / 因子研究 / 回测」;研究基于本地 SQLite 行情
(Tushare 同步,20 只权重股 2023–2024 日线),因子测试与回测均由后端
Research Specification 驱动并返回标准化结果。
</div>
</div>
</>
);
}