feat(web): M6.5 股票筛选页(/selection)—— 评分/条件双模式 + 当前/历史选股

- app/selection/page.tsx:因子评分(多因子+权重+TopN)与条件模式(结构化条件行
  编辑:static.*/因子/close>ma60/ROE 等,AND 语义);as_of 留空=最近交易日;
  结果表(rank/symbol/score/因子值/入选理由)+ 最近选股记录点击回看
- lib/types.ts:SelectionQuery/Condition/Candidate/Result/Meta/Run DTO
- app-shell 导航加入「股票筛选」;rail 脚注与 Dashboard 文案 SQLite→MySQL(M-DB 收尾)
- 端到端验证:真实 MySQL 上 POST /api/selections 返回候选并落库可读回;
  /selection 页面 200;后端全量 pytest + 前端 tsc --noEmit 通过
This commit is contained in:
Simon
2026-09-09 00:25:27 +08:00
parent 0d3e123de3
commit 0ab9038570
4 changed files with 443 additions and 2 deletions
+2 -1
View File
@@ -18,6 +18,7 @@ const GROUPS: { title: string; items: NavItem[] }[] = [
items: [
{ href: "/", label: "总览", icon: "grid" },
{ href: "/stocks", label: "股票池", icon: "candles" },
{ href: "/selection", label: "股票筛选", icon: "target" },
{ href: "/factors", label: "因子研究", icon: "flask" },
{ href: "/factors/compose", label: "因子组合", icon: "layers" },
{ href: "/backtest", label: "选股回测", icon: "gauge" },
@@ -109,7 +110,7 @@ export function AppShell({ children }: { children: React.ReactNode }) {
<div className="rail-foot">
数据源 Tushare 首选 · 新浪校验兜底
<br />
研究引擎 Qlib(本地 SQLite / Parquet)
数据库 MySQL · 研究引擎 Qlib
</div>
</aside>