Commit Graph
24 Commits
Author SHA1 Message Date
SakurasanandClaude 1550291d6b fix: 题材热点缓存改为开盘前失效,避免开盘后显示上个交易日数据
非交易时段(凌晨/早盘前/周末)访问题材接口时,旧逻辑把上个交易日
数据缓存 18 小时,导致开盘后缓存未过期仍读到旧数据。

- 非交易时段缓存 TTL 由固定 18h 改为"截止到下一次开盘时刻":
  早盘前→9:30 失效、午休→13:00 失效、收盘后/周末→下一交易日 9:30 失效
- 题材列表交易时段强制不读缓存,双保险实时拉取
- 热点穿透图/题材股票缓存同样收敛到开盘前失效

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 13:26:00 +08:00
SakurasanandClaude 548ebee47f perf: 优化热点穿透加载速度 + Canvas 渲染 + 触控板/手机交互
后端加载优化(盘中原本每次访问都重新聚合,耗时 10-30 秒):
- 图聚合结果与题材股票子层盘中加 60 秒缓存
- 缓存过期时返回旧数据并后台幂等重建(stale-while-revalidate),打开即秒开
- 缓存基础支持秒级 TTL(set_cache 新增 ttl_seconds)
- 响应体瘦身:移除 edges(前端从 stocks[].themeCodes 重建)、
  themes 精简字段、stocks 按 limit 裁剪,JSON 从数 MB 降至数百 KB

前端 Canvas 渲染重构:
- d3-force 布局保留,SVG 渲染层替换为 Canvas 双缓冲(静止态离屏层 drawImage)
- tick 由每帧 setState 改为 rAF 合帧,拖拽/缩放期间零 React 重渲染,800 节点流畅

交互优化:
- 手机:新增 +/−/适应 缩放按钮、命中半径放大至 22px、tap/drag 6px 阈值区分、
  双指捏合缩放、触屏禁用 hover 避免与选中冲突
- Mac 触控板:双指滚动=平移、捏合(ctrlKey)=缩放、滚轮缩放保留、点空白取消选中

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 13:21:08 +08:00
SakurasanandClaude e28d1a2fd0 feat: 新增热点穿透网状关系图 + 移动端优化
- 新增 /hot-map 热点穿透页:d3-force 力导向网状图展示题材-股票 M:N 关系
  - 股票节点面积/颜色按覆盖题材数分级,穿透核心股高亮
  - 图/核心股列表双视图切换,列表覆盖题材>2 公司降序展示
  - 悬停信息卡、缩放平移、点击跳转股票/题材详情
- 数据采样改为涨幅+热度双榜合并(各 Top50 去重=82 题材),修复覆盖数低估
  (有研新材覆盖数 2→10,核心股 66→1124 家)
- 移动端适配:触屏 tap 选中底部浮层、标签缩放阈值防重叠、自动 fit、紧凑图例
- 主页/题材列表增加热点穿透入口

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 20:34:14 +08:00
SakurasanandClaude 45836f4a30 feat: 新增题材页面(列表 + 详情)
- 主页增加「题材热点」入口,跳转题材列表页
- 题材列表页:展示全部题材,支持按涨幅/强度/热度/成交额排序
- 题材详情页:简介、热点事件、相关新闻、板块涨跌统计、全部相关股票(含入选理由默认展开)
- 后端逆向封装东方财富题材接口 getThemeList/getDetail/getStockList,含交易时段感知缓存

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 17:22:04 +08:00
SakurasanandClaude b107a12798 fix: fund-flow 路由补充东方财富 kline 成交额
腾讯 fqkline 仅返回 6 个字段(date/open/close/high/low/volume),
不含成交额,导致 fund-flow 路由补充的 turnover 始终为 0。

在路由层额外调用 eastmoney.fetch_kline_history 获取成交额映射,
优先使用东方财富的成交额数据补充,腾讯 kline_map 作为兜底。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-24 21:14:09 +08:00
SakurasanandClaude 28ecc4d138 fix: fetch_fund_flow_daykline 增加 rc 校验和 data 空值保护
东方财富 daykline/get 接口返回 rc=100(data=null) 时无保护处理:
- 增加 result 类型检查、rc 状态校验、data 空值判断
- 避免 None.get('klines') 抛 AttributeError

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-24 18:49:48 +08:00
SakurasanandClaude 2a0960c251 修复两个问题:
1. 移除 eastmoney K线接口的 parsed.reverse(),统一为升序返回(与其他数据源一致),
   修复 K线图时间方向相反、每日行情明细展示远期数据的 bug

2. fetch_fund_flow_daykline 改用 curl_cffi 替代 httpx,匹配东方财富 push2his
   的 TLS 指纹检测,修复主力资金流向数据获取不到的 bug

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-24 18:19:30 +08:00
Sakurasan 22692be45e Revert "重构板块资金流向:行业/概念改用独立 path,后端排序,前端不缓存直接请求"
This reverts commit eea2ce86d0.
2026-07-13 23:24:26 +08:00
Sakurasan eea2ce86d0 重构板块资金流向:行业/概念改用独立 path,后端排序,前端不缓存直接请求 2026-07-13 23:22:09 +08:00
Sakurasan 3bfeb81c90 修复板块切换数据合并:禁止 API 响应缓存(反代按 path 忽略 query 导致两个 tab 数据相同) 2026-07-13 21:15:16 +08:00
Sakurasan 2db6bb8519 更新后端板块数据路由和服务(预提交) 2026-07-13 20:28:49 +08:00
SakurasanandClaude 20b2afb0fc 修复总市值显示错误 & 板块切换数据合并问题
1. 后端: 修正腾讯API字段索引偏移 (total_market_cap [43]→[45],
   pb [45]→[46]),并处理市值单位转换(亿→元)
2. 前端: 板块切换时同步清空旧数据 + 显示加载态,避免新旧
   数据合并闪现

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 20:07:21 +08:00
SakurasanandClaude 60eff4a955 feat: 股票详情页增加最新交易日PE/PB/ROE/换手率/市值等行情指标
- 后端tencent.py增加换手率/市盈率/市净率/总市值/流通市值字段提取
- 前端StockQuote接口新增对应字段类型定义
- 股票详情页增加"行情指标"卡片,展示PE/PB/ROE/换手率/总手/成交额/市值
- ROE取自财务分析数据的加权净资产收益率

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-08 19:27:23 +08:00
SakurasanandClaude Opus 4.7 86535f5de2 K线数据首选mootdx通达信TCP源,板块数据增加mootdx降级
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:09:57 +08:00
Sakurasan 015aeb989a 更新BK缓存策略 2026-07-08 00:33:15 +08:00
Sakurasan 1a50f7680a 并行获取板块数据 2026-07-07 20:28:24 +08:00
Sakurasan e29e3d32fb 板块缓存 2026-07-07 17:54:50 +08:00
Sakurasan c6cef8bb4c update: 板块缓存 2026-07-07 17:51:28 +08:00
Sakurasan 62961017ea 优化静态路由 2026-07-07 16:07:10 +08:00
SakurasanandClaude Opus 4.7 5153fa28de fix: docker-compose 持久化 SQLite 数据库; 迁移 DB 路径到 data/ 子目录
- docker-compose.yml: bind mount → named volume (auv_data:/app/data)
- backend/database.py: DB_PATH 改为 data/stock_data.db,自动迁移旧数据库
- .gitignore: 忽略 *.db 文件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-06 23:59:25 +08:00
Sakurasan 6390545e61 使用push2 数据接口,优化代码 2026-07-06 22:27:45 +08:00
Sakurasan 83c88ee945 公司介绍 财务数据 2026-07-06 19:44:40 +08:00
Sakurasan 0719c63ef1 up 2026-07-06 01:01:38 +08:00
Sakurasan 013ebdaffe up 2026-07-05 21:29:17 +08:00