Commit Graph
71 Commits
Author SHA1 Message Date
Sakurasan e24b1a360b feat: 优化每日分析提示词模板并修复分段生成链路
提示词:
- SYSTEM_PROMPT 重写为可执行原则(事实优先/时间锚定/判断挂数字/禁用套话)+输出格式契约
- DAILY_ANALYSIS_PROMPT 重排注意力:取数指令置顶(要求同轮并行调用 4 个核心工具)、
  写作规约 8 条、环比快照居中、前日报告全文置底并改为「今日数据优先+核对昨日展望」
- 新增单位口径、符号规范(+/- 是前端红涨绿跌着色依据)、不荐股等硬规约
- 移除已废弃的「今日定调」摘要规则(与分段指令、前端渲染互相冲突)
- 八章重构:板块资金流独立为「四、资金与筹码」,重复的「关注方向+下个交易日建议」
  合并为「七、明日展望」

生成链路:
- 修复分段生成未回灌前文,后段看不到前段导致重复铺数据、数字口径打架
- 新增 REQUIRED_TOOLS 校验:核心工具不全时补一轮并在 user 消息点名缺失项
- 修复 _extract_summary 被 # 标题行占掉,改为剥离标题与 Markdown 标记后截断

AGENTS.md 同步八章结构与 prompt 工程约定
2026-09-12 15:57:14 +08:00
Sakurasan fefb1b4736 feat: 记录并展示每次生成消耗的LLM调用次数(llm_calls) 2026-09-02 14:10:49 +08:00
Sakurasan 854427092d remove: 去掉今日定调摘要(prompt不再生成、前端移除高亮框、空标题卡不渲染) 2026-09-02 13:49:52 +08:00
Sakurasan d8d36f32cf merge: 合并 origin 主题图标改动(backend/dist/admin.html)与本地K线/AI分析五提交 2026-09-02 13:26:18 +08:00
Sakurasan 1d46ad7a08 feat: AI分析第三档——海外期货章节、报告分卡片渲染、红绿着色、期号;LLM改流式+分段生成绕开网关120s超时 2026-09-02 13:17:49 +08:00
Sakurasan 311b9f0d7e feat: AI分析第二档——get_news消息面、板块主力资金流TOPS、两融余额、截断续写机制 2026-09-02 03:50:43 +08:00
Sakurasan 0fb2f8d3a5 feat: 每日AI分析改造——定调摘要、环比快照、完整连板梯队带涨停原因、生成次数记账 2026-09-02 02:59:14 +08:00
Sakurasan 73d259b3a1 style: 主题切换改为单图标点击展开 2026-09-01 19:28:08 +08:00
Sakurasan bdeda21386 style: 管理面板主题切换与主站一致(SVG图标+紧凑布局) 2026-09-01 19:18:27 +08:00
Sakurasan 317ea483d0 feat: 移除公开触发AI分析接口,仅管理面板可用 2026-09-01 19:16:09 +08:00
Sakurasan 21afb863b3 feat: 管理面板报告列表增加跳转链接 2026-09-01 18:51:24 +08:00
Sakurasan 08fa30cb78 style: 管理面板重构,与主站风格统一(oklch色彩+dark模式+响应式) 2026-09-01 18:50:12 +08:00
Sakurasan 7dba0238a5 feat: 管理面板(登录认证+触发AI分析+统计+CLI改密码) 2026-09-01 18:41:32 +08:00
Sakurasan bfcc932406 feat: AI分析报告增加下个交易日建议模块 2026-09-01 18:13:29 +08:00
Sakurasan d0eafe203c fix: AI_MAX_TOKENS/AI_TEMPERATURE 未配置时使用模型默认值,避免截断分析输出 2026-09-01 17:58:27 +08:00
Sakurasan 86429f43c2 feat: 暴露fuyao SDK全部A股接口 + AI分析轮次上限提至30 2026-09-01 17:04:38 +08:00
Sakurasan 8b43b57bb2 feat: 同一交易日内可随时重新生成报告 2026-09-01 16:16:45 +08:00
Sakurasan 35ea82863f fix: AI分析使用完整前日报告,不截断 2026-09-01 16:12:58 +08:00
Sakurasan a005118aa4 feat: AI分析加入前日报告上下文 + 隐藏模型名 + Docker上海时区 2026-09-01 16:11:08 +08:00
Sakurasan 6478e0d403 feat: AI分析单页展示 + 主题切换 + 移动端适配
- AI分析页改为直接展示最新报告,历史存数据库
- 新增浅色/深色/系统自动主题切换
- 市场看板、AI分析页适配主题变量
- 移动端表格可滑动、按钮自动换行
- Mermaid图表支持
- Markdown表格渲染支持(remark-gfm)
2026-09-01 12:33:27 +08:00
Sakurasan 912a224b6b feat: AI市场分析功能
- 后端:AI分析服务、工具调用、定时任务
- 前端:报告列表、详情页、Mermaid图表支持
- 支持OpenAI API兼容模型
- 收盘后自动分析生成报告
2026-09-01 04:21:29 +08:00
Sakurasan d7d019c2c4 feat: 市场看板 - 聚合同花顺SDK全量数据的A股实时看板
- 新增 /dashboard 页面:暗色主题,指数行情/市场温度/涨跌分布/行业强度/概念热度/事件情报
- 后端聚合接口 /api/market-dashboard,30秒缓存
- 利用SDK接口:指数行情、全市场快照、涨停/跌停/炸板池、连板天梯、热门股、飙升榜、龙虎榜、异动分析、集合竞价基准、行业/概念目录
- 市场温度评分:6因子加权(涨跌比/中位涨跌/强弱比/涨停活跃度/炸板惩罚/竞价信号)
- 首页添加市场看板导航入口
2026-08-31 10:29:37 +08:00
Sakurasan b1f216b2a4 feat: K线增加分钟/小时周期切换,拆分独立KLineCard组件
- 后端:腾讯 mkline 新增 /api/stock/history-minute(m1/m5/m15/m30/m60)
- 新组件 kline-card.tsx:自包含周期/折线蜡烛/指标开关与K线数据加载,
  切周期只重拉K线,不刷新页面其他模块
- 详情页瘦身为独立模块:K线图 / 今开最高最低昨收 / 每日行情明细互不耦合
- 时间统一按 UTC 解析传 Unix 秒,修复日线 invalid date/N/A 与分钟线时区问题
- 资金流向失败降级为非致命,不再导致整页报错
- vite 构建拆分 recharts/lightweight-charts/router 独立 chunk
2026-08-28 17:43:11 +08:00
Sakurasan d5516b72d7 feat: 接入同花顺官方SDK,新增v2数据接口,股票详情K线改用v2(前复权日K)
- vendor 同花顺官方 SDK 到 backend/sdk(含K线>10年自动切片、重试、拼音首字母检索兜底)
- 新增 /api/v2 路由:行情/估值/财务/日历/指数/K线/标的检索
- 股票详情页K线改用 v2 同花顺接口(前复权日K+总手+按昨收涨跌幅)
- 密钥仅后端持有,响应/日志无泄露
- 新增 run_local.sh 本地直接拉起(不再依赖 docker)
2026-08-28 02:09:49 +08:00
Sakurasan 82006f7cf9 feat: 每日题材采集改为涨幅/强度/热度/成交额4榜各前50合并去重
原逻辑只取题材涨幅前20入库。现改为从 4 个榜单
(sortField 1=涨幅/3=强度/4=热度排名/5=成交额) 各取前50,
按 themeCode 合并去重后写入 daily_top_themes,
覆盖更全面的当日活跃题材。
2026-08-28 00:42:09 +08:00
Sakurasan 86d0dded3a feat: 题材热点历史页展示最近10个交易日题材涨幅矩阵 2026-08-27 20:18:51 +08:00
Sakurasan bb2be17ae2 feat: 热点穿透题材数从50提升到100,支持缓存定向清理
- 热点穿透top由50提升到100(涨幅榜+热度榜各取前100合并),保证题材数≥100
- themes.py graph路由top上限le由60放宽到200
- daily_collector HOTMAP_TOP_N同步到100与页面一致
- auvops.sh新增cache-clear-graph子命令定向清理theme_graph缓存
2026-08-18 04:14:17 +08:00
SakurasanandClaude 48522cbfea chore: 每日采集时间从15:00调整到15:01
收盘后留1分钟等数据稳定,避免15:00整点采集到不完整数据。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-12 19:55:49 +08:00
SakurasanandClaude 90569918a3 refactor: 删除板块资金流向,题材板块功能更全
- 删除前端 /sectors 页面、首页入口按钮、stock-api 板块类型与 fetchSectors
- 删除后端 /api/sectors 路由,main.py 移除注册
- eastmoney.py 移除板块数据段(_fetch_push2/_fetch_akshare/UT令牌管理),
  清理重复 import 与无用 datetime 子导入
- mootdx.py 移除板块降级方案(fetch_sector_list)
- routeTree.gen.ts 由 build 自动重新生成,移除 sectors 路由

题材热点/热点穿透/核心股已覆盖板块能力,功能更全,板块资金流向不再需要

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-11 18:50:54 +08:00
SakurasanandClaude b0dbeef3fd feat: 容器内统一运维脚本auvops.sh,recollect-daily并入
- 新增 backend/auvops.sh:容器内直接执行的统一运维工具
  (cache-clear/clean-expired/cache-count/recollect/sh/help)
- heredoc传python代码,日期等参数走环境变量防注入
- 后续运维操作收敛到该文件,加 cmd_xxx + case 注册一行即可
- 删除 recollect-daily.sh,其能力并入 auvops.sh recollect

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-11 16:57:27 +08:00
SakurasanandClaude eb66ab02d0 feat: 交易日9:31清空全部缓存,保证开盘后数据全新
- services/cache.py 新增 clear_all() 清空整个 cache 表
- daily_collector.py 新增 cache_cleanup_loop() 后台循环:精确 sleep 到最近一个
  工作日 9:31 清空缓存,跳过周末,出错1分钟重试
- main.py lifespan 启动清理任务,与采集任务一同优雅退出

与既有"非交易时段 TTL 截止到下次开盘前"的惰性过期形成双保险

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-11 16:56:56 +08:00
SakurasanandClaude 7fe8074e22 feat: 题材列表盘中120s缓存共用,题材详情新增全量新闻分页+强度热度行情
- 题材热点与热点穿透共用题材列表缓存:盘中由"不缓存实时拉取"改为120s短缓存,
  东财全量列表拉取降到每120s一次,图重建时涨幅/热度两榜直接命中缓存
- 详情页相关新闻升级为全量分页(getThemeRelatedNews):支持翻页+评论数,
  替换原 getDetail 固定3条
- 详情页统计条新增强度+热度(getSingleThemeQuote)实时指标

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-11 16:56:44 +08:00
SakurasanandClaude 254deb6a80 feat: 热点穿透题材节点按涨幅正蓝负绿、球大小随涨幅绝对值
- 后端题材列表下发 bf3(题材涨幅)
- 题材节点: 正涨幅蓝色/负涨幅绿色, 半径按 |bf3| 在 6~20 映射
- 题材标签文字颜色跟随正负
- 信息卡/底部浮层题材分支显示涨幅
- 图例拆分涨/跌两项并说明球大小含义

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 23:34:38 +08:00
SakurasanandClaude f93ffd381b feat: 核心股追踪选股并入热点穿透核心股(覆盖题材数降序前100,去重)
选股口径由仅'题材领涨股涨幅前100'改为:
- 热点穿透核心股(覆盖题材数≥2,按覆盖数降序前100)
- 合并题材领涨股涨幅前100,按股票代码去重

复用 _build_theme_graph 计算每股覆盖题材数;热点穿透构建失败
时降级为仅领涨股前100,不影响当日采集。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 22:31:38 +08:00
SakurasanandClaude 6d3c470b7b feat: 核心股追踪行点击展开显示所属题材列表
- active 接口返回每只核心股 themes(窗口内按题材去重)
- 页面行点击展开题材标签,chevron 指示展开状态

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 21:50:16 +08:00
SakurasanandClaude 23644a9c77 feat: 题材涨幅前20存历史(原前10)
- daily_collector TOP_THEME_LIMIT 10 → 20
- 同步 routes/collector 注释与 spec/plan 文档
- 实测 2026-08-10 题材前20入库 20 条,themes/history 返回 20 条

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 21:27:54 +08:00
SakurasanandClaude 258fc9184d feat: 补齐 spec 遗漏 — themes/history 接口 + cover_count/coverCount/daysSinceLastAppear
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 21:08:39 +08:00
SakurasanandClaude c58bd990fd fix: lifespan 关闭时 await 取消的采集任务,避免 pending 警告
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 20:23:17 +08:00
SakurasanandClaude 6b12b04cab feat: 挂载核心股路由并启动每日采集任务
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 20:20:55 +08:00
SakurasanandClaude ffabf3d396 perf: /history 消除题材查询 N+1 并修正排序注释
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 20:17:39 +08:00
SakurasanandClaude f5ba61e3db feat: 核心股历史/活跃接口
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 20:00:29 +08:00
SakurasanandClaude 526b182051 fix: 修复 collector_loop 常量名(NameError)并填充核心股所属题材
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 19:49:36 +08:00
SakurasanandClaude 14c31e3f06 fix: 修正 collector_loop 常量名拼写 _COLLECT_AFTER_TIME → COLLECT_AFTER_TIME
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 19:38:24 +08:00
SakurasanandClaude aed3eea739 feat: 每日核心股/题材采集服务(幂等)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 19:30:35 +08:00
Sakurasan 5ffa5c07b2 feat: 新增每日核心股/题材历史 3 张表 2026-08-10 19:27:51 +08:00
SakurasanandClaude 84a01fb7b1 fix: 补齐完整浏览器请求头并改用 web client,修复生产 403 拿不到题材数据
生产服务器请求东财题材列表/相关股票返回 403(缺 sec-* 头 + iOS client
被风控识别为爬虫),导致热点穿透重建失败、数据冻结在上个交易日。

- 请求头补齐 sec-ch-ua/sec-fetch-*/priority/dnt 等完整 Chrome 头
- payload client 由 iOS 改为 web(生产实测该组合正常返回)
- content-type 补 charset=UTF-8

生产实测:完整头 + web client 正常返回数据。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 18:36:27 +08:00
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 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