Skip to content

feat: 整合 fuyao/tickflow 数据源 + 市场页面焕新(看板/自选/龙虎榜/连板/概念/行业/热股) - #16

Merged
henrylin99 merged 6 commits into
masterfrom
feature/fuyao-tickflow-datasource-frontend
Sep 5, 2026
Merged

henrylin99 merged 6 commits into
masterfrom
feature/fuyao-tickflow-datasource-frontend

Conversation

@henrylin99

Copy link
Copy Markdown
Owner

概述

按设计方案(f903d148)完成两期开发:扶摇/TickFlow 数据源整合(独立于 tushare,互不污染)与市场类前端页面焕新,共 5 个提交、548+ 新测试断言全部通过。

后端:数据源整合(0a9e19ee)

  • FuyaoClient(扶摇·同花顺官方 API):实时快照/历史K线/财务三表/估值/交易日历/龙虎榜/竞价风向标/dump 下载,统一节流 + 信封解包;北京时区零点 ms 解析、字段双命名兼容
  • TickflowClient:free 档日K/实时行情/标的维表,detect_tier 判档;定位为校验与名称兜底源,不做批量任务
  • 数据任务daily_history_fuyao(10d dump→10年 dump→单标的兜底三级策略,tushare 同 schema 落 parquet)、financial_fuyao(披露日历推报告期)、stock_basic_fuyao,注册进数据任务中心
  • 单元换算:股→手、元→千元、pre_close 推导等全部对拍验证过

后端:市场服务与 API(本分支后续提交)

  • MarketSnapshotService:看板/快照/龙虎榜/风向标聚合,TTL 缓存 + 扶摇异常降级本地 parquet(标 degraded)
  • StockNameRegistry:stock_basic + TickFlow 维表合并名称兜底(parquet 缓存 7 天),解决快照无名称问题
  • BoardMarketService:涨停/跌停/炸板三池(通用获取器,历史日永久缓存)、连板天梯、同花顺行业/概念板块排行与成分股、热股榜/飙升榜、标的检索;全部带 TTL 缓存 + 1 小时过期回供
  • /api/market 新增 13 个端点(dashboard/indices/dragon-tiger/limit-up·down·break/boards/hot-stocks/ticker-search 等)+ /api/datasources/status 三源健康探测

前端:新设计体系 + 7 个市场页面(b10da6c7 → 38eae0a

  • Tailwind token 体系(暗色优先、A 股红涨绿跌、等宽数字)与旧 Bootstrap 共存,不污染旧页面
  • 新页面:市场看板(指数 ticker/宽度/分布/三榜单)、自选行情(5s 刷新、名称搜索添加)、龙虎榜(三榜 tab + 竞价风向标)、连板天梯(六格 KPI 含炸板率 + 15 日天梯热力矩阵 + 三池 tab)、热股榜单(热股/飙升双榜)、概念分析 / 行业分析(390/320 板块排行 + 成分股联动)、数据源中心
  • 全部个股可点击跳转既有 /stock/:tsCode 详情页

测试与验证

  • 新增 100+ 契约测试(client/service/API 三层);全量回归 551 通过,仅剩 master 既有 5 个失败(factor_ic_ir/portfolio/deployment 基线内),零新增回归
  • npm run build 通过;浏览器逐页实测:真实数据渲染、tab 切换、搜索联想添加自选、个股跳详情、降级提示均验证通过

风险与说明

  • .env 已含 FUYAO/TICKFLOW key(不入库,仅本地);dump 缓存与名称缓存写入 data/cache/(gitignore 内)
  • TickFlow 为免费档(约 5rpm),仅用于名称维表(7 天缓存)与档位探测,无批量调用

- app/utils/data_sources/:扶摇/TickFlow REST 客户端 + dump 三档取数 + tushare 口径归一化层
- daily_history_fuyao / financial_fuyao / stock_basic_fuyao 三个下载作业(与 tushare 版同表可选生产者)
- /api/market/* 行情 API(快照/看板/指数/龙虎榜/竞价风向标,30s 缓存 + 本地 Parquet 降级)
- /api/datasources/status 数据源健康探测(tickflow 档位判定)
- AI 工具的 source→凭证检查泛化;registry 新增 3 个 fuyao 作业
- 引入 Tailwind 3.4(关 preflight 与 Bootstrap 共存),语义 token 体系
  (锌灰中性底 + 项目靛蓝 accent + 红涨绿跌 + mono 数字),随 data-theme 双主题
- 薄组件层:Card/PageHeader/SectionTitle/Badge/Delta/KpiCell/Modal/EmptyState
- @tanstack/react-query 接入(新页面独享);主题持久化 + index.html 防闪白
- 新页面 lazy 分割:市场看板(实时宽度/分布/榜单,30s 轮询)、自选行情
  (5s 快照轮询、localStorage 分组)、龙虎榜+竞价风向标(真实字段适配)、
  数据源中心(三源健康探测 + 数据集→生产者映射)
- 浏览器实测通过;修复 token 命名冲突(base→canvas)、指数占位符崩溃、
  龙虎榜字段对齐、Delta 双重符号
- 扶摇新增涨停池/连板天梯/同花顺指数目录·成分股端点;TickFlow 新增标的维表(free 档,补全站股票名称)
- StockNameRegistry:stock_basic + TickFlow 维表合并名称兜底,parquet 缓存 7 天
- BoardMarketService:涨停池/天梯/板块排行/成分股聚合,TTL 缓存 + 过期回供
- market_api 新增 /limit-up/pool、/limit-up/ladder、/boards、/boards/constituents
- 前端新增连板天梯(KPI+天梯矩阵+涨停池)、概念分析、行业分析(板块排行+成分股联动)三页
- 自选行情/龙虎榜/市场看板榜单个股可点击跳转 /stock/:tsCode 详情
- 测试:客户端/服务/API 契约 26 个新用例,全量回归仅剩 master 既有 5 失败
- fuyao 新增跌停池/炸板池/热股榜/飙升榜/标的检索端点
- board_market_service:三池通用获取器(泛化缓存+过期回供)、热榜聚合、检索透传
- market_api 新增 /limit-down/pool、/limit-break/pool、/hot-stocks、/ticker-search
- 连板天梯页:六格 KPI(跌停/炸板/炸板率)+ 涨停/跌停/炸板三池 tab 切换
- 新增热股榜单页(热股榜+飙升榜 Top30,当日/小时榜切换,排名变化着色)
- 自选页支持名称搜索添加(防抖联想 + 点击加入,已持有标的自动过滤)
- 测试:12 个新用例,全量回归仅剩 master 既有 5 失败
🔴 #1 financial_fuyao._read_existing_partition 回退口径与 save_to_parquet
   不一致('.' vs _default_data_root),DATA_DIR 未设置时读不到已有分区,
   分块 flush 互相覆盖静默丢数据。统一回退 + 回归测试锁定行为。

🟡 #2 龙虎榜/竞价缓存加 TTL:date=None(最近发布日)5 分钟,指定历史日
   24h;两种键都设 64 条容量上限。get_indices 补 10s 缓存 + 失败回供。
🟡 #3 BoardMarketService 无界缓存加容量上限(池 64/成分股 128/检索 128);
   缓存读取与写入双侧深拷贝,杜绝调用方改动污染缓存(review 指出浅拷贝
   脆弱,测试证实写入侧同样存在别名泄漏,已一并修复并加行为测试)。
🟡 #4 DumpStore memo 注明仅限单进程生命周期(当前 job 走 subprocess 无影响)。

🟢 expected_latest_period 改用北京时间(非东八区部署披露截止判断会偏一天);
   fuyao_normalize 移除死变量 keep_cols;snapshot_rows_to_stock_basic 对
   缺 name 列的旧表加防御。

新增 5 个行为测试;全量回归 556 通过,仅剩 master 既有 5 失败。
@henrylin99
henrylin99 merged commit 243adb9 into master Sep 5, 2026
0 of 16 checks passed
@henrylin99
henrylin99 deleted the feature/fuyao-tickflow-datasource-frontend branch September 9, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant