跳到主要内容

产品总览与页面地图

概述​

鲸鱼选股(XuanGu)是一个面向 A 股个人投资者的智能分析工作台:本地/私有部署, 数据多源降级采集 + 每日全市场落库,分析与决策环节由「确定性规则在前、大模型在后」的 分层完成。前端是 React 19 SPA(src/),后端是 FastAPI(backend/app/), 两侧只经 http://localhost:6789/api/v1 一条 HTTP 边界通信。

本文给出功能全景与页面地图:所有路由、每个页面做什么、依赖哪个后端模块。 适合新接手的开发者建立整体心智,也适合作为产品评审的对照清单。

功能分组​

侧边栏(src/components/layout/Sidebar.tsx)分「首页」固定组 + 选股 / 行情 / 资讯 三个核心组 + 一个「发现」面板。管理员项(任务中心、数据管理)经 admin 与 菜单可见性配置双重过滤。

分组项目
首页首页(AI 搜索 · 市场速览)
选股一句话选股、智能选股、量化选股、今日信号
行情市场概览、板块中心、行情中心、涨停板
资讯今日头条
发现社区·大V复盘、游资心法、持仓AI巡检、热搜聚合、可转债、财报窗口、备用数据源、投资检查清单、监控中心、任务中心(admin)、我的收藏、横向对比、条件选股、形态选股、回测系统、交易日志、我的持仓、数据可信度、AI用量(admin)、数据管理(admin)、数据库管理(admin)

页面地图​

路由定义在 src/App.tsx:主应用 74 条(:173-252,含 5 条重定向壳 + 1 条兜底)

  • 鉴权页全屏 3 条(:332-334,不套侧边栏外壳),合计 77 条路由 / 71 个真实页面。 重定向壳:/skills → /nl-pick、/strategy-center → /backtest, 以及 /login、/register、/verify-email → /(登录态已由鉴权块接管)。 除首页与鉴权页外全部 React.lazy() 懒加载; /ai-usage、/datamgr、/dbadmin 与 /tasks 外层包 AdminRoute(非管理员 Navigate to="/")。 "后端模块"列为该页取数所依赖的 backend/app/api/*.py。

首页与对话​

路由页面职责后端模块
/pages/Home.tsxAI 搜索 + 市场速览(热门股、板块热力图)market
/ai-chatpages/AIChat.tsx多轮 AI 对话 / SOP 分析(SSE 流式)chat
/morning-notepages/MorningNote.tsx次日晨报(AI 生成 / 降级稿)morning
/daily-reviewpages/DailyReview.tsx当日收盘复盘review
/news/:source/:newsKeypages/NewsDetail.tsx新闻详情(财联社电报 / 同花顺快讯 / 全球资讯)catalyst
/hot-trendingpages/HotTrending.tsx多平台热搜聚合(股票/财经/科技/社交四榜 + 全部)hot_trending
/catalystpages/CatalystCalendar.tsx今日头条 / 财联社电报与催化剂事件catalyst

个股与指数​

路由页面职责后端模块
/analysis/:codepages/Analysis.tsx个股详情(行情/K 线/财务/行业对比)stocks
/analysis/:code/financepages/FinancialDetail.tsx财务明细stocks
/analysis/:code/module/:modulepages/StockModuleDetail.tsx个股专题模块(风险/高管持股/机构调研/同花顺 F10)risk / signal / ths_f10
/analysis/:code/announcement/:annKeypages/AnnouncementDetail.tsx公告详情signal
/index-detail/:codepages/IndexDetail.tsx指数详情(fox 指数日线 + 指标)index_data / market
/index-constituents/:codepages/IndexConstituents.tsx指数成分股index_data
/etf-centerpages/EtfCenter.tsxETF 中心etf
/etf/:codepages/EtfDetail.tsxETF 行情与持仓etf
/dimension/:dimKeypages/DimensionAnalysis.tsx五维分析(国家意志/时代潮流/行业拐点/竞争格局/认清阶段),走 /chat/ask/stream 实时研判chat

选股与工作流​

路由页面职责后端模块
/nl-pickpages/NlPick.tsx自然语言一句话选股screener(/screener/nl-find)
/screenerpages/Screener.tsx条件 DSL 选股 + 方案管理screener
/factor-pickpages/FactorPick.tsx多因子打分选股 + 预设策略 + 战绩factor / scorecard
/patternspages/PatternSelect.tsx形态选股(左形态目录 / 右结果)quant(patterns / pattern-performance)+ screener
/rule-pick、/rule-pick/:strategyIdpages/SmartPick.tsx / SmartPickDetail.tsx规则选股(策略池批量跑,流式)strategies / builtin_strategies
/rule-pick/debatepages/Debate.tsx规则选股辩论(多空对抗式研判)strategies
/tacticspages/TacticSignals.tsx今日信号(6 战法全市场扫描)tactics
/trend-discoverypages/TrendDiscovery.tsx趋势选股(板块连续强势榜 /sectors/streak)sectors
/chokepointpages/ChokepointSelect.tsx卡脖子选股(供应链瓶颈框架)chokepoint
/limit-up-reasonpages/LimitUpReason.tsx涨停归因market
/backtestpages/Backtest.tsx回测实验室(Tab 外壳,面板在 components/backtest/)backtest_lab
/comparepages/compare/ComparePage.tsx多股横向对比compare
/favoritespages/Favorites.tsx我的收藏与研究候选池(四状态工作流:研究/关注/已选/已弃,/candidates 重定向至此)favorites
/thesispages/ThesisTracker.tsx我的持仓与投资论点portfolio
/position-centerpages/PositionCenter.tsx持仓中心portfolio
/trade-journalpages/TradeJournal.tsx交易日志portfolio
/portfolio-inspectionpages/PortfolioInspection.tsx持仓 AI 巡检portfolio_inspection
/masterypages/Mastery.tsx游资心法mastery
/pattern-similaritypages/PatternSimilarity.tsx形态相似度pattern_similarity / quant
/checklist/*pages/Checklist/投资检查清单(模板 + 作答记录)checklist

行情与板块​

路由页面职责后端模块
/realtimepages/RealtimeMarket.tsx实时大盘看板(情绪/分布/资金流)market / realtime
/dashboardpages/Dashboard.tsx大盘总览market
/market-centerpages/MarketCenter.tsx全 A 行情中心(宽表榜单)datamgr(fox 宽表)/ stocks
/market-treemappages/MarketTreemap.tsx市场矩阵(Treemap)market
/auctionpages/Auction.tsx集合竞价market
/crowding-detailpages/CrowdingDetail.tsx拥挤度详情market
/annual-heatmap-detailpages/AnnualHeatmapDetail.tsx年度热力图market
/zhangtingbanpages/Zhangtingban.tsx涨停板(板块 + 打板情绪)market
/limit-ladderpages/LimitLadder.tsx涨停连板天梯market
/sector-centerpages/sector/SectorCenter.tsx板块中心(热点/列表/分类体系)sectors / industry
/sector-center/sw/:system/:codepages/sector/IndustryDetail.tsx申万体系行业详情industry
/sector-center/concept/:codepages/sector/ConceptDetail.tsx概念板块详情sectors
/sector-center/:codepages/sector/SectorDetail.tsx通用板块详情sectors
/bondspages/ConvertibleBond.tsx可转债(债底安全边际/双低/条款/详情)convertible_bond
/earnings-windowpages/EarningsWindow.tsx财报窗口(业绩预告/快报聚合、行业与个股盈利榜)earnings_window
/alt-sourcespages/AltSources.tsx备用数据源(乐咕乐股估值对账/港股新股IPO/私募排行)alt_sources
/data-trustpages/DataTrustCenter.tsx数据可信度中心(可信度评分 / 数据源目录 / 源状态 / 新鲜度 / 降级时间线 / 主动探测)。评分权重公开(源状态 60% + 新鲜度 40%),覆盖不足时不出分health / system
/global-macropages/GlobalMacro.tsx全球宏观指标与发布日历macro
/global-marketpages/GlobalMarket.tsx海外市场(指数/期货/外汇/美股)futures / 外部行情
/monitor-centerpages/MonitorCenter.tsx监控规则与事件(含持仓异动通知)monitor
/policy-ratespages/PolicyRates.tsx政策利率(LPR / Shibor / 国债收益率长序列)macro
/news-radarpages/NewsRadar.tsx消息面雷达(规则判读 + 规则级战绩自学习)news_signal
/communitypages/Community.tsx社区·大V复盘bigv
/commoditypages/CommodityCenter.tsx商品中心(现货-期货基差)commodity

管理与设置​

路由页面职责后端模块
/ai-usagepages/AiUsage.tsxAI 用量统计(模型调用量 / Token 消耗 / 配额)管理员ai_usage
/datamgrpages/DataManager/数据管理(统计/同步日志/下载/新鲜度/数据源探测)管理员datamgr
/dbadminpages/DbAdmin/数据库管理(表浏览 / 建表删表 / 批量与对象编辑 / SQL 工作台与导入导出,独立窗口打开)管理员db_admin
/taskspages/TaskCenter/任务中心(总览/任务列表/运行历史/日志流/运维动作)管理员tasks
/settings/*pages/Settings/设置(账户/AI 模型/MCP/SMTP/菜单可见性/关于/数据配置)auth / settings / mcp / health
/notificationspages/Notifications.tsx通知中心notifications(当前前端用本地态,见用户体系)
/login /register /verify-emailpages/auth/鉴权页(已登录访问则跳回 /)auth
*pages/NotFound.tsx未知地址兜底—
两条历史重定向

/skills → /nl-pick、/strategy-center → /backtest(策略中心能力已并入回测系统, 保留路由只为兼容书签与外链)。

三条典型投研工作流​

工作流时点关键页面数据依赖
盘前定调06:30 晨报 → 09:15/morning-note → / → /nl-pickfox_market_snapshot(休市 TTL 3600s)+ 昨日收盘数据
盘中跟踪09:30-15:00/realtime /zhangtingban /dimension/* /monitor-centerTDX TCP 实时 + SSE 推送,缓存 TTL 10~30s
收盘复盘15:30-19:30/daily-review /factor-pick /backtest /tasksfox 三域融合 → quant_calc → 留痕任务,全链路在任务中心可观测

产品设计原则​

这五条是全站一致的硬约定,新增功能时必须延续:

原则落地方式
规则在前 · LLM 在后确定性门控(scoring/gates.py)先否决,再谈打分与研判;LLM 不参与"能不能买"的第一道判断
DB 优先读取页面秒开靠本地落库:三级读路径(SQLite 快路径 → Parquet 镜像 → MySQL),外部 API 只在缺失时回源
诚实标注降级非本次模型实时调用的产出必须标来源:local_rule(琥珀「本地规则口径」)/ agent_batch·deep_ai(中性蓝「助手离线」)/ 缺省(「AI 生成」)
口径单一 · 数字可回溯同一份事实只留一个来源(战绩口径统一在 services/forward_return.py);汇总与表格取自同一批行,前端一个收益数字都不自己算
来源标签到段载荷级 _source 只记主源,多源拼装必须打段级标签(_bins_source 等),详见常见问题
图表叠加层的展示纪律

K 线叠加标注(压力支撑、缠论中枢、形态关键位、笔·线段)一律仅悬浮提示显示, 不在主图常驻文字——常驻标注会把图面压成文字墙并遮挡 K 线。

前端基础设施​

关注点实现
应用外壳src/main.tsx(React Query Provider + 全局 ErrorBoundary + 主题初始化)→ src/App.tsx(AuthGate → 侧边栏/内容区 → 路由)
服务端状态TanStack Query;lib/queryClient.ts 按 DATA_TIERS(realtime/hotChanges/daily/slow/static)分档 staleTime/gcTime,默认 5min/30min、retry≤2(NOT_FOUND/ABORTED/CIRCUIT_OPEN 不重试)、窗口聚焦不重刷
交易时段轮询hooks/useTradingQuery.ts——盘中用 tradingInterval(SSE 已连且命中失效白名单则降为 max(60s, tradingInterval) 兜底),休时用 idleInterval,页面隐藏即停。任务中心不可用它(任务在盘后/夜间跑)
客户端状态jotai(src/store/:atoms / authAtoms / notificationAtoms / quotaAtoms),组件级 UI 状态仍用 useState。状态分层规范见 reference/frontend-state-layering.md
请求层lib/api.ts axios 实例(baseURL=/api/v1,超时 20s);请求拦截器加 Authorization: Bearer;响应拦截器做信封解包并回补被抬到顶层的 items/total;401 → 清 token + 弹「登录已过期」跳 /login
主题.dark 类唯一写入者 lib/themeMode.ts(FOUC 由 index.html 内联脚本抢跑),主色 CSS 变量由 lib/theme.tsx 的 ThemeProvider 提供
样式Tailwind CSS 4 utility-first,禁止内联 style;components/ui/ 沿用 shadcn 风格 kebab-case 文件名
路径别名@/ → src/(tsconfig.json + vite.config.ts)
目录规模src/pages/ 顶层 58 个 .tsx(含 4 个测试文件)+ 10 个子目录,递归共 141 个非测试 .tsx;src/components/ 36 个子目录(layout/ui/charts/market/sector/earnings/backtest/scorecard/tasks…)

移动端​

mobile/ 是独立的 Flutter(Dart 3.12+)应用,与 Web 前端同一直连 /api/v1, 不共用任何代码:lib/features/ 承载智选/行情/个股/持仓等业务模块(原生 + WebView 混合), lib/core/ 提供 dio+SSE 网络、go_router、主题与 JS Bridge。 改动后必须跑 flutter analyze + flutter test(含五 tab 启动冒烟测试), 混合架构与 Bridge 协议见 mobile/README.md。

相关文档​