Commit Graph
48 Commits
Author SHA1 Message Date
SakurasanandClaude ce131b2867 fix: 热点穿透盘中缓存过期改为同步重建,避免显示上个交易日旧图
fetch_theme_graph 原用 stale-while-revalidate:缓存过期先返回旧数据、
后台异步重建。缓存里若是上个交易日数据,过期后用户一直看到旧图,
重建完成前不会更新。

- 交易时段缓存过期/无缓存 → 同步重建(加锁去重),绝不返回旧数据
- 非交易时段过期 → 保留 stale-while-revalidate(行情无实时变化,秒开无害)

实测盘中同步重建约 7s,可接受。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 13:47:21 +08:00
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 a1736c8a17 fix: 热点穿透顶栏手机端换行自适应
- 顶栏去掉固定 h-12,改为 flex-wrap + py-2,按钮组窄屏自动换行不再溢出
- 统计条 flex-wrap + whitespace-nowrap,题材/股票/穿透核心股窄屏自动换行
- 返回箭头/标题/刷新按钮 shrink-0 防压缩

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 14:03:40 +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
SakurasanandClaude b67d07e977 主页集合展示从 10 条改为 20 条
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 00:00:31 +08:00
SakurasanandClaude ea3da4e138 默认排序改为升序
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 23:49:02 +08:00
SakurasanandClaude bd1df35456 重构板块资金流向页面:三层数据分离(缓存→排序→展示),切换 Tab 清空缓存,排序改为资金/涨幅,新增 error/empty 状态处理
- 缓存数据、排序数据、展示数据三层分离架构
- 切换板块时 queryClient.removeQueries 清空全部缓存
- 排序维度改为 mainNetInflow(资金)和 mainNetInflowPercent(涨幅)
- 卡片展示主力净流入金额 + 占比
- 新增加载骨架屏、请求失败重试、空数据提示等状态
- 资金流向明细条(超大单/大单/中单/小单)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 23:46:00 +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 94d84a368f 切换板块 tab 时强制 refetch,绕过前端/反代缓存确保数据正确 2026-07-13 22:44:34 +08:00
Sakurasan 3bfeb81c90 修复板块切换数据合并:禁止 API 响应缓存(反代按 path 忽略 query 导致两个 tab 数据相同) 2026-07-13 21:15:16 +08:00
Sakurasan ef795c46b2 修复板块切换数据合并:行业/概念使用独立 useQuery 隔离数据 2026-07-13 21:07:44 +08:00
Sakurasan 677482639d 板块资金流向默认按升序排序 2026-07-13 21:03:31 +08:00
Sakurasan 65013dad3e 重写板块资金流向前端:行业/概念 Tab 切换与资金流入/涨幅排序 2026-07-13 20:57:00 +08:00
Sakurasan 2db6bb8519 更新后端板块数据路由和服务(预提交) 2026-07-13 20:28:49 +08:00
Sakurasan fd00ce11d6 修复 React Query 未提供 QueryClientProvider 导致的运行时错误
- main.tsx 中增加 QueryClientProvider 包裹 RouterProvider
- router.tsx 的 getRouter() 改为返回 { router, queryClient } 对象
- 确保 useQuery 在组件树中能正常获取 QueryClient 上下文
2026-07-13 20:28:25 +08:00
Sakurasan 1da4f8f479 重写板块资金流向前端页面,使用 React Query 替代手动状态管理修复数据合并问题
- 使用 @tanstack/react-query 的 useQuery 替代 useState + useEffect + AbortController
- queryKey 按 tab 类型 (industry/concept) 隔离数据,根除快速切换导致的数据混用
- 增加空数据提示状态
- 保持原有 UI 结构和交互一致性
2026-07-13 20:24:25 +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 aaa618b15d K线图修复时间轴排序问题 & 行情指标合并到顶部卡片
- 修复K线图tickDates排序忽略年份导致跨年时期轴从右往左的问题
- 将行情指标(PE/PB/ROE/换手率/成交额/市值)合并到顶部股票信息卡片

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 15:10:43 +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
Sakurasan 0ba7952082 支持删除集合条目 2026-07-07 15:05:19 +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 cffdea5407 up 2026-07-06 02:30:38 +08:00
Sakurasan 9682c91224 BUILDPLATFORM 2026-07-06 01:29:18 +08:00
Sakurasan 0719c63ef1 up 2026-07-06 01:01:38 +08:00
Sakurasan 084eb146f9 up 2026-07-06 00:23:48 +08:00
Sakurasan 95594d1b1a u'p 2026-07-06 00:20:56 +08:00
Sakurasan 5cbb87a2ef up 2026-07-06 00:16:33 +08:00
Sakurasan 28306124f6 up 2026-07-06 00:12:46 +08:00
Sakurasan f6a445fe0e up 2026-07-06 00:08:05 +08:00
Sakurasan 3cfb1a820f up 2026-07-06 00:04:10 +08:00
Sakurasan 5ebbb8c1ca up 2026-07-06 00:01:19 +08:00
Sakurasan 8082b0900a up 2026-07-05 23:48:21 +08:00
Sakurasan 60b9b545ae fix bug 2026-07-05 23:45:36 +08:00
Sakurasan 013ebdaffe up 2026-07-05 21:29:17 +08:00