Skip to content

Repository files navigation

rust-stock

rust-stock logo

把一支对冲基金的决策委员会,塞进你屏幕角落一个手机大小的悬浮窗。
A 股实时行情 · 五大门派 AI 共识引擎 · 产业链瓶颈定位 · 纯本地运行 · 桌面 + 安卓

License: Apache-2.0 Tauri 2 Rust Platform AI

简体中文 · English · 日本語 · 한국어


⚡ 它是什么

别的工具给你一个 AI 的意见;rust-stock 让 价值 · 成长 · 游资 · 技术 · 宏观 五个流派的 AI 分析师同台论道,再像对冲基金投委会一样综合裁决——而它只是你桌面/手机角落一个 360×640、可拖到边缘自动吸附收起的磨砂悬浮窗。红涨绿跌(A 股习惯),纯本地运行、零服务器,数据只在你自己的设备上。

桌面(Windows / macOS)与安卓双端同源同体验,一套代码两处跑。

⚠️ 所有 AI 输出均为研究排序与思路参考,不构成任何投资建议。股市有风险,决策请自负。

🧠 决策引擎:不是"问 AI 一句涨不涨",而是一套方法论

「今日 AI 推荐」的内核,是一条 真实数据 → 多智能体裁决 → 行情复核 的流水线,融合两套公开的优秀方法论:

① 本地全市场扫描(真实数据,AI 不经手编造) 每天先在你本机用真实行情筛候选池:涨幅榜 + 主力净流入榜 + 龙虎榜上榜 三路合并去重,带现价/涨跌幅/换手率/主力净额/是否上榜。喂给 AI 的是铁打的真实数字,从源头掐断"幻觉行情"。

② 产业链瓶颈研究法(打底)— 借鉴 muxuuu/serenity-skill 把市场叙事翻译成系统性的物理约束:拆解产业链八层(下游需求 → 系统集成 → 模块 → 芯片 → 制程封装 → 设备检测 → 材料耗材 → 基础设施),先揪出最卡脖子的稀缺层(供应商集中度 / 认证周期 / 扩产难度 / 工艺壁垒),再定位谁控制这一层。

为什么用它:题材会炒、故事会变,但产能、良率、认证这些物理瓶颈不会撒谎。锚定供应链的真实约束,才能找到价值真正沉淀的环节,而不是追着情绪跑。

③ 多门派共识打分(裁决)— 借鉴 virattt/ai-hedge-fund 对每个候选,让五个投资流派的 AI 视角各自独立打分、再综合仲裁:

流派 它盯着什么
💎 价值派 护城河、估值安全边际
🚀 成长派 行业 S 曲线、TAM 天花板
🔥 游资打板派 题材热度、龙虎榜、换手量能
📈 技术派 趋势、突破、均线结构
🌐 宏观派 政策、资金面、流动性

为什么用它:ai-hedge-fund 的精髓是"多投资人智能体 + 仲裁"——单一视角必有盲区,让多个专业流派先博弈再裁决,逼出分歧、暴露风险,远比"问一句涨不涨"靠谱。

④ 逐股深度调研 + 真实行情复核 两阶段出票:先初选 6–8 支,再对每一支入选股单独跑一遍产业链八层深度调研(与「研」按钮同源:产业链位置 / 卡点与稀缺性 / 五流派多空 / 催化与验证 / 风险 / 证伪 / 研究优先级),结论并入推荐理由(并发执行控制耗时)。随后所有价格/涨跌幅用真实行情回填(禁止 AI 编造数字),幻觉代码、以及**连续 6 个交易日逐日下行(6 连阴)**的标的直接剔除。每支都附:产业链位置 / 五派分歧 / 龙虎榜资金信号 / 今日看点 / 主要风险 / 证伪条件。

一句话:真实数据打底,供应链瓶颈定方向,五大门派定取舍,真实行情兜底。 不吹涨停、不喊单,只做有据可查的研究排序。

📊 还有什么

  • 市场情绪表盘:四大指数(上证/深成/创业板/沪深300)涨跌幅加权 + tanh 压缩,实时映射到 -100–100 指针;点击 3D 翻面看计算明细 + AI 盘面解读。
  • 自选股 AI 体检:每支自选股旁一个迷你仪表盘,AI 给 -100–+100 多空打分,点开看产业链式详尽理由。
  • 推荐缩略图:每只推荐股后跟一条真实「近30日收盘价折线」,一点直达完整日K。
  • K线 / 资金流 / 筹码分布 / 技术指标:日/周/月 K 蜡烛 + MA5/MA10 + 成交量;通达信口径 MACD/KDJ/RSI/BOLL 现值与金叉死叉;个股资金流五档(主力/超大/大/中/小单,红进绿出);筹码分布图——换手率衰减 + 成本中枢高斯核近似还原各价位筹码堆积(红获利盘 / 绿套牢盘),直读获利比例 / 平均成本 / 现价。
  • AI 流式聊天 + 深度调研 + 收藏:底栏直连 DeepSeek 逐字流式;「研」一键进产业链八层深度调研工作流;调研结论可分组收藏、整段或逐条一键复制,永久存本机。
  • 非交易时段提示:A 股未开盘 / 午休 / 收盘 / 周末,行情条下方红条醒目提示「沿用上一交易日数据」,避免把旧数据误当实时盘口。
  • 战绩回算:用 K 线回算历史推荐的胜率与每笔收益,让引擎自己监督自己。

🖼️ 界面预览

桌面 + 安卓同源;磨砂双主题(白天奶白 / 夜晚纯黑)。截图持续更新中。

行情主页 自选股 + AI 表盘 今日 AI 推荐
行情主页 自选股 今日AI推荐
K线 + 资金流向 深度调研收藏 设置
K线资金流 调研收藏 设置

✨ 功能清单

  • 悬浮窗体验(桌面):无边框圆角置顶小窗,标题栏拖拽,拖到屏幕边缘自动吸附;点 ✕ 收起成右侧竖排仪表盘挂件,再点展开;窗口可自由缩放。
  • 安卓原生:同一套 UI 跑成 Android App——K线双指缩放/单指平移、系统返回手势回上一页、全面屏适配、品牌启动图标。
  • 双行情源:新浪财经 / 东方财富可切换互备;指数无缝滚动条;自选股增删支持代码或名称/拼音搜索。
  • 纯本地持久化:SQLite(bundled),自选/设置/AI 缓存全部落库、单文件可迁移;无任何中转服务器,数据只在你设备上。
  • AI 任意接:默认 DeepSeek,Base URL / 模型可改成任意 OpenAI 兼容服务(Kimi、通义、本地 Ollama…),key 只存本机。
  • 液态玻璃外观(实验 · 设置可选):仿 iOS「Liquid Glass」的磨砂玻璃皮肤——半透明 + 模糊 + 高光描边 + 极光背景 + 浮动药丸 Tab,夜/日双主题适配;默认关闭,老旧安卓机型自动降级为不透明底色。

参考 ArvinLovegood/go-stock(Wails + Go)的纯本地形态,用 Tauri 2(Rust + 系统 WebView)重做,打包体积与内存远小于 Electron 系。

快速上手

环境(一次性)

  • Rust 工具链(Windows 需 VS Build Tools 的"使用 C++ 的桌面开发";macOS 需 Xcode CLT)
  • Windows 10 可能需装 WebView2 Runtime(Win11 自带)
  • Tauri CLI:cargo install tauri-cli --version "^2"

运行

cd rust-stock
cargo tauri dev      # 开发调试(前端热重载)
cargo tauri build    # 打包安装包(Windows NSIS / macOS dmg)

纯前端预览(不装 Rust)

cd rust-stock/src && python3 -m http.server 8080
# 浏览器开 http://localhost:8080 ,数据走 mock

跑测试

cd rust-stock/src-tauri && cargo test
# 覆盖:行情解析(新浪/东财)、快讯解析、情绪算法、SQLite KV

配置 AI(可选)

设置页填入 API Key(默认 DeepSeek;Base URL / 模型可改成任意 OpenAI 兼容服务,如 Kimi、通义、本地 Ollama)。key 只存你本机 SQLite,本地直连。填入后自动启用:自选股 AI 打分、情绪 AI 解读、AI 聊天;不填则优雅降级并提示。

工程结构

rust-stock/
├── src/                       # 前端(原生 HTML/CSS/JS + ES modules,无框架无构建)
│   ├── index.html             # 全部 UI(样式内联)
│   ├── main.js                # 入口 bootstrap(接线/定时器)
│   └── js/
│       ├── bridge.js          # Tauri 桥接(浏览器预览降级)
│       ├── store.js           # 全局状态 + SQLite/localStorage 持久化
│       ├── api.js             # Tauri 命令封装
│       ├── ui.js / router.js  # 通用件 / 页面切换
│       └── pages/             # 行情 / 快讯 / 自选 / 聊天 / 设置
├── src-tauri/                 # Rust 本地逻辑层
│   ├── src/lib.rs             # Tauri 命令层(业务 prompt / 窗口控制)
│   ├── src/sources/           # 行情数据源抽象(QuoteSource trait + 注册表)★新增源在此加一行
│   ├── src/ai.rs              # AI Provider 抽象(OpenAI 兼容协议,base_url/model 可配)
│   ├── src/quote.rs           # 行情模型与解析器(含单测)
│   ├── src/feed.rs            # 快讯 + 情绪算法(含单测)
│   ├── src/storage.rs         # SQLite KV 持久化(含单测)
│   └── tauri.conf.json        # 窗口/打包配置
└── docs/                      # 开发文档 / 项目记忆 / 避坑记录

完整更新记录见本页底部 更新日志(倒序,最新在最上)。

更多细节:开发文档

Roadmap

  • 板块热力接真实数据(东财行业板块涨跌幅)
  • 数据源抽象为 trait,新增数据源即插即用(sources/ 注册表)
  • 前端模块化拆分(原生 ES modules,无构建依赖)
  • GitHub Actions CI(cargo test + 前端语法检查)
  • 记住窗口位置和大小 / 开机自启动开关
  • 系统托盘(常驻图标 + 关闭二次确认)
  • K线图(日/周/月K + MA + 成交量)
  • 个股详情(K线页内:行情快照 + 资金流向;盘口五档待定)

更新日志

倒序排列,最新更新在最上方。每次代码更新都会同步追加到这里。

2026-06-13(K 线「AI 预测」推演下一交易日)

  • 「AI 解读」升级为「AI 预测」:把本股全部已知真实数据(行情/筹码/通达信指标/财务/估值/概念板块/近 5 日主力净流入/两融/龙虎榜 + 上一收盘价)喂给 AI,推演下一交易日的 K 线四值(开/高/低/收)。
  • 新增 K 线蜡烛(紫色叠加):在最新真实蜡烛右侧追加一根紫色虚线空心预测蜡烛,配虚线连接线(上一收盘→预测收盘)与「AI预测」标签;纯叠加,不改真实蜡烛绘制;切股/切周期/重载即清除。
  • 合规护栏(硬性):专用保守推演 prompt("推演/假设",绝不"必涨必跌/荐股");后端严格遵守 A 股涨跌停(主板 ±10% / 创业板·科创板 ±20% / 北交所 ±30%,按代码前缀判定)并校验蜡烛约束(高≥max(开,收)、低≤min(开,收));预测附置信度(高/中/低)+ 一句依据;图下方常驻醒目免责声明:"⚠️ AI 预测为模型基于历史数据的推演,极可能出错,仅供参考,绝不构成投资建议。" 单根蜡烛的 LLM 预测准确度本就很低,仅作推演演示。
  • 桌面 + 安卓双端生效。

2026-06-12(v1.5 发布 🎉 自 v1.0 以来的大版本)

一句话:从"能看行情"进化到"数据驱动的 A 股 AI 投研浮窗"——12 个真实数据维度喂进 AI,手机端取数全面加固。

今日 AI 推荐(引擎质变)

  • 两阶段·逐股深度调研:先初选 6–8 支,再对每支单独跑产业链八层深调(与「研」同源),结论并入推荐理由。
  • 真实数据注入推荐引擎:每支入选股深调前并发拉取真实财报(营收/净利+同比/EPS/ROE/毛利率/负债率)、估值(总市值/PE/PB)、概念板块归属、近 5 日主力净流入、近 30 日龙虎榜,作为"已查到的事实"注入——五大门派不再靠记忆瞎猜。方法论模板一字未动。
  • **剔除连续 6 日逐日下行(6 连阴)**的标的。

新数据维度(K 线个股详情 / 行情页,均注入 AI 解读)

  • 筹码分布图(换手率衰减 + 成本中枢,获利比例/平均成本)、通达信口径技术指标(MACD/KDJ/RSI/BOLL 金叉死叉)。
  • 概念/板块归属、历史资金流、核心财务、融资融券余额、个股龙虎榜、分红、股本市值、🔥 人气榜(点击进 K 线)、北向资金成交额。

体验 / 可靠性

  • 手机端取数大修:K 线三源兜底(东财→腾讯→新浪)、资金流/换手率腾讯兜底、共享缓存 + last-good 不白屏、后台并发预热 + 切页秒开、安卓回前台秒级保温;真机失败绝不再用假数据冒充。
  • 涨跌报警 + 真实节假日交易日历、非交易时段红字提示、财联社电报快讯 + 本地情绪词典(零成本利好/利空标)、调研收藏一键复制、液态玻璃外观(设置可选)。

桌面(Windows/macOS)+ 安卓同源同体验。所有 AI 输出仅为研究参考,不构成投资建议。

2026-06-12(推荐引擎二阶段数据注入:单股深度调研接入真实基本面/资金数据)

新增

  • 「今日 AI 推荐」二阶段单股深调接入数据注入层:deep_research_stock 在组装提示词前,对该股并发(tokio::join!,单股内 5 路并行)拉取真实数据——核心财务指标(最新报告期:营收/净利+同比 · EPS · ROE · 毛利率 · 负债率)、估值快照(总市值 · PE(动) · PB)、所属概念/板块(行业排最前)、近 5 日主力净流入(逐日+合计)、近 30 日龙虎榜明细(上榜日 · 原因 · 净买额,仅近期上过榜才注入)——拼成紧凑的「【实时真实数据】」块注入 user 消息。价值派/成长派的深调从此基于真实财报与资金数据,而非模型的陈旧记忆。
  • 全部复用 extra.rs 既有 fetcher(K线页「AI 解读」同源,均走 em_get_text 免 gzip + 3 次退避重试);任一接口失败只缺对应行、绝不拖垮该股深调,全部失败时提示词与旧版完全一致(优雅降级)。防幻觉指令同步收紧:「涉及具体数字以上文【实时真实数据】与给定行情为准;未提供的数据不得编造,确需提及时注明未获取到」。
  • extra.rs 新增免 chrono 的 days_from_civil / days_since 日期工具(Hinnant civil 算法,带单测),供后端按"近 30 日"口径过滤龙虎榜(与 K线页前端同口径)。

说明

  • RESEARCH_SYSTEM 方法论 / 分节模板 / 五大门派提示词均未改动——纯数据注入层。一阶段 60 只候选池逻辑不变;仅二阶段 ≤8 只深调每股增加 5 个并发取数(每次推荐约 +40 个东财请求,推荐本身低频且分钟级耗时,可接受)。两融、分红两项为控制请求量暂未注入(fetcher 已就绪,需要时一行接入)。

2026-06-12(第六批:三个 A 股数据维度——核心财务指标 + 融资融券 + 个股龙虎榜)

接口设计继续参考 1nchaos/adata(Apache-2.0,仅作接口字典,未复制代码);全部接口均经真实请求复核返回形状后才接入。这三项把 AI 解读从"纯盘面"升级为"盘面 + 真实基本面 + 杠杆/游资资金"。

新增

  • 核心财务指标(K线页个股详情 + AI 上下文):东财 F10 RPT_F10_FINANCE_MAINFINADATA(主要财务指标,按报告期倒序取最新一期)。快照格下方一行小字:「财报 2026一季报 · 营收 547.0亿(+6.3%) · 净利 272.4亿(+1.5%) · EPS 21.76 · ROE 10.6% · 毛利 89.8% · 负债 12.1%」。字段:TOTALOPERATEREVE/TZ 营收+同比、PARENTNETPROFIT/TZ 归母净利+同比、EPSJB 基本每股收益、ROEJQ 加权ROE、XSMLL 毛利率、ZCFZL 资产负债率。未披露字段(如银行无毛利率)后端给 null、前端整段省略——绝不把"未披露"伪装成 0。按日缓存(fin_<code>),失败沿用旧缓存,没有就整行隐藏。AI 解读上下文同步注入一行,价值派/成长派从此有真实财报可依。
  • 融资融券个股余额(K线页个股详情 + AI 上下文):东财 datacenter RPTA_WEB_RZRQ_GGMX(个股两融明细,取最近 2 个交易日)。一行小字:「两融(06-11) 融资余额 191.9亿 -0.69亿 · 融券 1.7亿 · 合计 193.6亿」,融资余额较上日增减红绿着色。字段:RZYE 融资余额 / RQYE 融券余额 / RZRQYE 两融合计 / RZJME 当日融资净买额(单位元)。注意:adata 字典里的 RPT_RZRQ_LSHDETAIL 在 web datacenter 已不存在(实测回"报表配置不存在"),现行报表为 RPTA_WEB_RZRQ_GGMX。非两融标的(datacenter 回 code:9201 返回数据为空)后端如实返回空数组 → 前端隐藏该行且按日缓存(margin_<code>),与取数失败严格区分。
  • 个股龙虎榜(K线页个股详情 + AI 上下文,仅近期上榜才显示):东财 RPT_DAILYBILLBOARD_DETAILSNEW 按 SECURITY_CODE 过滤(此前候选池只用它拉全市场当日上榜 codes,这次取个股明细:上榜日 TRADE_DATE、上榜原因 EXPLANATION、席位净买额 BILLBOARD_NET_AMT、买入/卖出额)。近 30 日上过榜才显示一行:「龙虎榜 06-04 净买 +10.67亿 · 连续三个交易日内收盘价格涨幅偏离值… · 近30日2次」(净买额红绿着色、原因去模板前缀+截断);从未上榜(9201)/久未上榜 → 整行不出现,绝不硬凑。按日缓存(lhbd_<code>)。AI 上下文注入完整上榜原因 + 净买/买入/卖出 + 近30日次数,游资打板视角从此有真实席位数据。
  • 三个维度的 Rust 解析器(parse_financials / parse_margin_days / parse_lhb_detail)均带 2026-06-12 实测真实形状单元测试,并覆盖"非两融标的/从未上榜(9201)"与"响应无效"的诚实区分、财务字段 null 不造 0。

说明

  • AI prompt 模板与五大门派 system 提示词均未改动——只是把更多真实数据注入 context。
  • 三项均为按日数据(财报/两融/龙虎榜每日至多更新一次),按日 SQLite 缓存 + 过期缓存离线兜底,不增加盘中请求压力。

2026-06-12(第五批:三个 A 股数据维度——人气榜 + 分红历史 + 股本/市值)

接口设计继续参考 1nchaos/adata(Apache-2.0,仅作接口字典,未复制代码);全部接口均经真实请求复核返回形状后才接入。

新增

  • 🔥 人气榜 Top 10(行情页):同花顺个股热度小时榜(dq.10jqka.com.cn/fuyao/hot_list_data/...,普通 GET、免 Cookie/签名,code+name+涨跌幅+人气值+人气标签一次到位——对比东财人气榜 POST 只回 secid 还需二次行情解析,故弃用后者)。板块热力卡下方新卡:名次(前三高亮)+ 名称/代码 + 人气标签(如「3天2板」/首个概念)+ 涨跌幅,点击任意行直接进该股K线。北交所股票按全 app 口径过滤。5 分钟 TTL + last-good:失败沿用最近真实榜单并诚实标注时间;SQLite hot_cache 落盘,冷启动秒出上次真实榜单(标「缓存」);从未成功且无缓存 → 整卡隐藏,绝不演示数据。已接入启动并发预热 / 定时保温 / 回前台保温。
  • 最近分红(K线页个股详情):东财 RPT_SHAREBONUS_DET 分红明细(按预案公告日倒序,最新方案在前)。快照格下方一行「最近分红 10派X元 · 除权 YYYY-MM-DD · 股息率 x.xx%」(未实施显示进度;纯转股如「10转6.00」同样支持;"不分配不转增"行剔除)。按日缓存(divi_<code>),从未分红(接口 success 但无记录)也按日缓存且不显示该行。同时向 K线「AI 解读」上下文注入一行分红摘要(prompt 模板未动)。
  • 股本/市值(K线页个股详情):东财 push2 stock/get 的 f84总股本/f85流通股/f116总市值/f117流通市值 + f162动态市盈率/f167市净率(fltt=2,实测核对 f116=f43×f84)。快照格由 9 格扩到 15 格:总市值/流通市值/总股本/流通股/市盈(动)/市净率,市值按「万亿/亿」、股本按「亿股/万股」四舍五入展示。股本按日缓存(share_<code>),市值用最新现价 × 股本现算保持实时。注意:该字段编号是 stock/get 口径,与 ulist/clist 不通用(ulist 的 f84 是小单净额),故单独请求而非并入资金流接口。AI 上下文同步注入总市值/股本/动态PE 一行。
  • 三个维度的 Rust 解析器(parse_hot_stocks / parse_dividends / parse_share_info)均带真实形状单元测试。

接口与代码位置

  • Rust:extra.rs 新增三组 解析器+fetcher(全走 em_get_text 免 gzip + 3 次重试客户端);lib.rs 注册 fetch_hot_stocks / fetch_dividends / fetch_share_info 三命令。
  • 前端:api.js 三个封装;market.js renderHot(含 hot_cache 冷启动回填);kline.js loadDividends/loadShareInfo 按日缓存 + 详情渲染 + AI 上下文注入;index.html 人气榜卡 + .hot-*/.sd-divi 样式。

2026-06-12(第四批:三个 A 股数据维度——所属概念/板块 + 北向资金 + 历史主力资金流)

接口设计参考 1nchaos/adata(Apache-2.0,仅作接口字典,未复制代码);全部接口均经真实请求复核返回形状后才接入。

新增

  • 个股所属概念/板块(K线页):东财 F10 RPT_F10_CORETHEME_BOARDTYPE,行业/地域/概念分类,行业 chip 高亮描边;指数成分类噪音(标普/富时/MSCI/两融/茅指数/百元股等)黑名单过滤、细分行业Ⅱ/Ⅲ去重,最多展示 10 个。按日缓存(SQLite boards_<code>),板块隶属变化极慢,过期缓存还能作离线兜底。同时注入 K线「AI 解读」数据上下文(所属概念/板块: … 一行,prompt 模板未动)。
  • 近5日主力净流入(K线页):东财 fflow/daykline 历史资金流(日级),列序经实测校验(主力净额=大单+超大单)。个股详情新增 5 格红绿日历式区块(日期 + 主力净额);并向「AI 解读」上下文注入一行逐日明细 + 合计。
  • 北向资金一行(行情页,市场情绪卡下方):⚠️ 经复核,北向"净买额"自 2024-08 交易所新规起已停止披露(push2 kamt 实时接口恒 0 / "-",RPT_MUTUAL_DEAL_HISTORY 净买额字段为 null)——仍按日披露的只有成交金额(次日更新)。故如实展示「北向资金 MM-DD 成交 X亿(沪 a + 深 b)· 净买额自2024-08起不再披露」,绝不伪造净流入;取不到数据整行隐藏。2 小时 SQLite 缓存(north_cache)+ 失败沿用旧缓存。
  • 三个维度的 Rust 解析器(parse_flow_days / parse_stock_boards / parse_north_history)均带真实形状单元测试。

改动:extra.rs / lib.rs(3 个新命令)+ api.js / kline.js / market.js / index.html;桌面与安卓同源生效。

2026-06-12(第三批:板块/情绪快照落盘 + 安卓回前台秒级保温)

新增

  • 板块热力 / 市场情绪快照持久化(SQLite heat_cache / sent_cache):每次拉到真实板块、真实情绪即落盘(60 秒节流,体量极小)。冷启动(哪怕离线)与 K线缓存并发回填,首屏直接显示上次真实板块热力与情绪表盘,meta 诚实标注「缓存 HH:MM」(隔天显示「缓存 MM-DD HH:MM」),新数据拉到后无感替换。演示数据从此只剩「从未成功且无任何缓存」一种触发路径,真机绝不把演示当真。
  • 情绪表盘 last-good:本次拉取失败但本会话/缓存里有真实情绪 → 沿用并标「沿用/缓存 HH:MM」,与板块热力、K线的 last-good 行为对齐(此前失败会直接画演示分数)。
  • 安卓回前台秒级保温(visibilitychange + focus):安卓把 App 切后台时会节流甚至冻结 WebView 定时器,回前台界面可能停在几分钟前。现在一回前台立即并行补一拍:指数条 + 情绪 + 板块 + 自选行情 + 两路快讯(错峰 3 秒)+ 报警补查。全部复用现有 last-good / 请求去重 / 25s 节流,请求量与正常一拍相当;5 秒防抖避免 visibilitychange 与 focus 双触发或与定时器叠加。

纯前端改动(main.js / market.js),无需重新编译 Rust;桌面与安卓同源生效。

2026-06-12(第二批:启动并发预热 + 全页面后台保温 + K线缓存落盘,切页秒开)

新增

  • 启动并发预热:App 打开即并行拉取四路主数据(指数条 / 情绪+板块 / 自选行情+AI / 两路快讯 / 推荐缩略图),不再串行 await 一路卡全队;自选页、快讯页不等你点进去才开始加载,切过去就是现成数据。自选相关快讯错峰 3 秒启动,避免启动瞬间请求扎堆。
  • 后台保温(非当前页也保持新鲜):当前页仍按设置的刷新间隔实时刷;非当前页改为每 3 个间隔低频保温一次(情绪/板块与自选行情错开 1 拍);两路快讯每 60 秒后台刷新(自选相关错峰 20 秒)。保温复用 last-good 缓存与请求去重,实际新增请求量很小,也不会加剧东财 rustls 偶发掐线。
  • K线缓存持久化(SQLite):共享K线缓存层的日K数据落盘(最多 40 支、每支近 120 根、写入 3 秒防抖合并),冷启动(哪怕离线)也能立刻画出上次成功的真实K线/推荐缩略图——配合 last-good 机制,离线时显示的是真实历史数据并标注缓存时间,绝不造假。
  • K线失败可一键重试:K线加载失败的提示里加了「↻ 重试」按钮,点一下重拉K线 + 行情快照/资金流,不用再切周期或退出重进。
  • 候选池腾讯兜底:今日 AI 推荐的本地候选池(涨幅榜/主力净流入榜)此前只依赖东财 clist 且无重试,被掐就变薄甚至变空。现在 ① 榜单请求走「免 gzip + 3 次退避重试」客户端;② 东财两榜全空时自动切腾讯全市场成交额榜(取最活跃 80 支,本地按涨幅/主力净流入各排 35 支),候选池不再因东财单点故障开天窗。
  • 快讯接口统一可靠性等级:自选股逐支资讯与东财 7×24 快讯改用与板块/资金流/K线一致的重试客户端;两路快讯结果落盘(SQLite),重启秒出上次内容。

修复

  • 真机快讯页不再闪现示例数据:未加载到真实快讯前显示「加载中」占位(浏览器预览仍走演示数据)。

桌面版与手机版同源改动;后端 Rust 改动需重新编译(桌面 cargo tauri build / 安卓 cargo tauri android build --apk)。

2026-06-12(手机端取数可靠性大修:K线竞速三源 + 共享缓存 + last-good)

修复

  • 「今日 AI 推荐」缩略图在手机上经常空白:根因是 8 支推荐的近 30 日日K此前逐支串行拉取(一支在安卓上撞到东财掐线就要等满"3 次重试 × 3 个源"的整条链,整队排队可达几分钟),且一次失败就永远空白。现改为:有界并发 3 支 + 每支到货立即渐进绘制(不等全队列)+ 失败 30 秒冷却后自动重试(最多 4 轮)。
  • 筹码分布 / K线在手机上时常刷不出:后端 fetch_kline 由"东财跑完整条重试链失败后才轮到腾讯/新浪"的串行链,改为竞速取数——东财(数据最全,带换手率/成交额→筹码精度最高)与"腾讯→新浪"备援链并发赛跑,东财有 2 秒先发权:东财健康时它先回、筹码最准;东财被掐(安卓 rustls close_notify/重置/超时)时备援秒级顶上,不再白等 30 秒+。资金流/换手率接口(东财 vs 腾讯兜底)同样改为竞速。
  • 瞬时网络波动把已显示的图打成白板:新增共享K线缓存层(klinecache.js,推荐缩略图 / K线页 / 战绩回算共用)——按"股票+周期"缓存整段K线,30/60/250 根共享同一份数据(5 分钟内命中 0 请求,重复请求合并去重);拉取失败但有上次成功数据时返回 last-good 旧数据并在K线页标注「⚠ 网络波动,显示 HH:MM 缓存数据」,绝不让画过的图变白、也绝不用模拟数据冒充(真机无数据时仍是诚实的失败提示)。
  • 推荐战绩回算改为有界并发 4(此前几十支无界并发同时打接口,更易触发掐线);K线页加载加防过期响应守卫(快速切股/切周期时旧响应不再覆盖新图)。

桌面版与手机版同源改动;后端 Rust 改动需重新编译(桌面 cargo tauri build / 安卓 cargo tauri android build --apk)。

2026-06-10(v1.0.1:非交易时段提示 + 推荐下行剔除)

新增

  • 非交易时段醒目红条:A股未开盘 / 午休 / 收盘 / 周末休市时,行情条下方常驻红色提示条;暂未开盘与休市会注明「资金流向 / 板块热力等沿用上一交易日数据」,避免误把旧数据当实时盘口。每 30 秒自动复核时段。

  • 今日 AI 推荐新规则——连续 6 日逐日下行者剔除:对每支候选,看最近 6 个交易日的真实收盘价,只有当这 6 天每一天都严格低于前一天(6 连阴式下跌)时才直接剔除;中间只要有任意一天持平或上涨就保留。判定需要 7 个收盘价(6 个日间变动全部下跌);数据不足时不判定(保留)。

  • AI 数据注入层(伪对话注入)+ 盘面技术解读:K线页「AI 解读」是独立的盘面技术视角(筹码结构 / MACD-KDJ-RSI-BOLL 信号 / 量价位置 / 支撑压力 / 短线研判 / 失效信号),与自选股小仪表盘的"产业链基本面打分"分工互补。两者都把真实筹码/指标/行情作为"已查到的事实"伪对话注入并追加防幻觉规则;分析模板/系统提示一字不动(借鉴 go-stock)。

  • K线三源兜底(东财→腾讯→新浪):此前 K线/筹码只依赖东方财富一家,东财在手机上一抖就整页空白。现增加腾讯、新浪作为降级备源——东财失败自动切腾讯(前复权日/周/月)、再切新浪(日K),价格始终真实。备源不含换手率/成交额时,筹码退化为成交量分布但价位正确。

  • K线/筹码在手机上更稳:K线接口改用与板块/资金流一致的「免 gzip + 3 次退避重试」客户端,化解安卓 rustls 对东财偶发的 close_notify/连接重置——筹码分布、换手率、K线在手机上"刷不出来"的概率大幅下降。

  • 快讯升级财联社电报:7×24 快讯主源切换为财联社电报(资讯更快更全、带关联个股/板块),东财 7×24 作失败兜底;配合本地情绪词典,每条即时标利好/利空。

  • 通达信口径技术指标(MyTT):K 线页显示 MACD / KDJ / RSI / BOLL 现值与金叉/死叉状态,采用通达信口径(中国式 SMA,250 根收敛),数值与通达信/同花顺/雪球对齐。(移植自 mpquant/MyTT,MIT,见 NOTICE。)

  • 涨跌报警 + 交易日历:设置页可开启「涨跌报警」并设阈值,自选股当日涨跌幅达标即弹提醒(仅交易日、每股 5 分钟去重,纯本地)。非交易时段红条改用真实节假日日历(chinese-days,内置 2025–2026 + 在线更新),国庆/春节等休市也能正确识别,不再只看周末。

  • 快讯本地情绪标(零成本):7×24 快讯每条用本地关键词加权词典即时打分,贴「利好(红)/ 利空(绿)」小标——纯本地计算,不调用 AI、不耗 token。(思路借鉴 go-stock 情绪分析,词典自编,见 NOTICE。)

  • 筹码分布图(K线页):每只股票的 K 线页新增「筹码分布」面板——基于近 250 日日 K + 换手率衰减 + 成本中枢高斯核,近似还原各价位的筹码堆积(红=获利盘 / 绿=套牢盘),并直读「获利比例 / 平均成本 / 现价」。同花顺式高级观感,纯本地计算无需私有接口。(算法移植自 go-stock,Apache-2.0,见 NOTICE。为此 K 线接口补取了换手率/成交额两列。)

  • 液态玻璃外观(设置可选):设置页新增「液态玻璃外观」开关,勾选后界面切换为仿 iOS 26「Liquid Glass」的磨砂玻璃质感——半透明 + 模糊 + 高光描边 + 极光背景 + 浮动药丸 Tab,夜/日双主题皆适配;默认关闭,老旧安卓机型自动降级为不透明底色。(注:受 WebView 限制,为 CSS backdrop-filter 近似,非苹果原生 Metal 实时折射。)

  • 今日 AI 推荐升级为「两阶段·逐股深度调研」:第一阶段先用真实行情候选池 + 五流派打分初选 6–8 支;第二阶段对每一支入选股再单独跑一遍产业链深度调研(复用「研」按钮同源的产业链八层方法论:产业链位置 / 卡点与稀缺性 / 五流派多空 / 催化与验证 / 风险 / 证伪 / 研究优先级),结果并入该股推荐理由。并发执行控制耗时;单股深调失败只缺该股深调段、不影响整体。生成时间相应变长(约 3–6 分钟)。

  • 调研收藏一键复制:每条收藏右上角加「复制」,每个分组标题加「复制全部」(整组按主题分隔合并到剪贴板);配合上一版放开的文字选中,手机上不用再手动长按选长文。

修复

  • 板块热力 / 资金流偶发"请求失败"(手机版尤甚,切走页面再回来易触发):① 后端东财请求加 3 次退避重试,化解 rustls 偶发的 close_notify / 连接重置;② 资金流接口改用与板块一致的免 gzip 客户端(此前默认客户端带 gzip,更易触发该问题);③ 前端板块热力加 25s 节流 + 请求在途守卫 + last-good 缓存:单次失败时沿用上一次的真实数据(标注"沿用 时:分:秒"),不再瞬间打回演示数据 / 报错。

桌面版与手机版同源改动。

2026-06-09(第三十七批:深度调研收藏分组)

新增

  • 深度调研完成后,聊天输入框上方浮出「把本次调研加入分组」按钮(仅调研后出现)
  • 3 个可自定义命名的分组;存整段调研全文 + 保存时间,永久存本机 SQLite
  • 「收藏」入口查看各分组内容:条目可展开全文、删除,分组可改名
  • 预留云端同步入口(标注付费功能,暂不接服务器)

2026-06-09(v1.0.0 首发 🎉)

  • 版本号升至 1.0.0,桌面(Windows/macOS)+ 安卓双端首个正式发布版
  • 含:磨砂双主题、五大门派 AI 共识推荐、产业链深度调研收藏、行情/快讯/自选/K线/资金流、纯本地存储

2026-06-09(第三十九批:设置页改造)

新增/改进

  • 主题切换:设置页加「跟随时间 / 浅色 / 深色」分段控件,即时生效(存 settings.theme)
  • 调研收藏入口:设置页「查看我的分组与收藏」直接打开收藏弹窗
  • API Key:已接入则折叠为「✓ 已接入 [修改][清除]」防误触;编辑态输入框右侧 ✕ 一键清空
  • Base URL / 模型:折叠进「高级」(details),需要时展开
  • 数据源东财/新浪均走可用接口(quotes: 东财 ulist / 新浪 hq),切换即保存即刷新

2026-06-09(第三十八批:彻底绕开 clist + opener 开链接)

修复

  • AI推荐现价:不再依赖会失败的候选池,改为对推荐股直接拉实时行情(fetchQuotes)回填现价,每只都显示
  • 板块热力:clist 接口在 rustls 下顽固 close_notify,改用 ulist.np(与资金流同接口,稳定)+ 固定主要行业板块 secid 拉实时涨跌
  • 快讯/资讯打开原文:shell.open 在安卓不可靠,改用 tauri-plugin-opener 的 open_url

2026-06-09(第三十六批:板块TLS/快讯可点/指针主题/推荐现价)

修复

  • 板块热力 peer closed without close_notify:去掉 http1_only,让 sectors 走 HTTP/2(h2 用帧明确结束响应,规避 rustls 对 TCP 收尾无 close_notify 的误判,与正常的资金流一致)
  • 快讯可点开原文:7×24 接口的 code 字段构造东财原文 URL(finance.eastmoney.com/a/{code}.html),快讯页条目可点、用系统浏览器打开
  • 表盘指针随主题:主情绪/分析/自选迷你三处指针白天黑、夜晚白
  • 今日 AI 推荐每行显示「现价 X.XX」

2026-06-09(第三十五批:磨砂双主题——昼磨砂奶白/夜磨砂黑)

新增(桌面+移动双端)

  • 全套 CSS 变量重做为两套主题:夜「磨砂黑」(暖炭#0e0e11) / 昼「磨砂奶白」(暖奶白#f1ebdf),香槟金 #cda86f/#a9802f 点缀
  • 卡片改磨砂玻璃(半透明+backdrop-blur+发丝描边+柔投影);外壳暖色渐变底+噪点;标题栏/导航磨砂
  • 按本机时间自动切换(6:00–18:00 奶白,其余纯黑),每5分钟重判;设置锁定开关待 Phase 2
  • K线/推荐折线画布颜色随主题(getComputedStyle 读 --up/--down/--line-soft/--txt-3)
  • 安卓状态栏/导航栏明暗随时间(MainActivity 按小时切 SystemBarStyle 与内容底色)

2026-06-09(第三十四批:README 大改 + 双端同步铁律)

文档

  • 重写 README 简介:突出「五大门派 AI 共识引擎」+「产业链瓶颈定位」决策流水线,明确借鉴 virattt/ai-hedge-fund(多投资人智能体+仲裁范式)与 muxuuu/serenity-skill(供应链瓶颈研究法)并说明理由;文案更具吸引力
  • 平台徽章加 Android;保留"不构成投资建议"免责声明

约定

  • 确立铁律:除功能互斥处外,所有改动同时作用于桌面版与手机版(前端同源;平台分支 body.mobile / #[cfg(desktop)] / tauri.android.conf.json 改一端必顾另一端)
  • ⚠️ 截图待刷新(桌面+安卓+磨砂双主题),开发者后续替换 docs/screenshots/*.png

2026-06-08(第三十三批:资金流红绿条 + 板块 TLS 修复 + 状态栏白条)

修复

  • 资金流红绿条:加固渲染(数值强制转数字、非零给最小 6% 宽度、显式高度),手机端净流入/流出色条正常显示
  • 板块热力请求失败:真因为 rustls 严格判错 peer closed connection without sending tls close_notify(东财 clist 返回后不发 TLS 关闭通知就断开)。fetch_sectors 客户端改 HTTP/1.1 + 关连接池规避,叠加 UA/超时/重试3次;失败时显示真实根因;Cargo 加 tokio time feature
  • 状态栏白条(截图捕捉不到、肉眼可见):实为系统全面屏自动绘制的白色保护 scrim;MainActivity 用 SystemBarStyle.dark(TRANSPARENT) 透明 scrim + 内容区/webview 深色背景兜底(gen/android 本地定制)
  • gen/ 目录加入 .gitignore(生成的安卓工程不入库)

2026-06-08(第三十二批:返回手势 + 推荐看K线 + 快讯可打开)

新增

  • 返回上一页:路由压入浏览器历史(pushState/popstate),安卓返回手势/返回键回到上一页而非直接退桌面;历史耗尽才退出 App
  • 今日 AI 推荐每行加「看K线」图标按钮(桌面+移动端),点击直达该股 K线页;原「加自选」「点行看详情」保留
  • 快讯/自选股信息链接可点开:tauri.conf.json 开启 plugins.shell.open,带原文链接的资讯点击用系统浏览器打开

2026-06-08(第三十一批:全面屏白边 + 系统栏遮挡修复)

修复(edge-to-edge)

  • 根因:targetSdk=36 强制全面屏,statusBarColor 被忽略,内容被系统栏挤开后露出窗口背景(默认白)= 顶部白边;底部三键导航遮挡 UI 同理
  • 设深色窗口背景 windowBackground=#0A0C10(修白边);MainActivity 加 setOnApplyWindowInsetsListener 把系统栏间距作为 padding 应用到内容区(状态栏/导航栏都不再遮挡)
  • 注:均为 gen/android 工程内定制(见 MEMORY 配方)

2026-06-08(第三十批:安卓状态栏深色 + 品牌启动图标)

修复

  • 顶部白边:安卓默认状态栏白底,改 Android 主题(themes.xml)状态栏/导航栏配深色 #12151C/#0A0C10,图标转白,与深色 UI 无缝
  • 启动图标不对:用品牌 logo(1024²)重新生成五档密度 mipmap(ic_launcher/round/foreground),替换 init 时的默认占位图标
  • 注:以上为 gen/android 工程内定制(未入 git,重跑 android init 会被覆盖,需按 MEMORY 配方重做)

2026-06-08(第二十九批:移动端隐藏桌面专属设置)

适配

  • 设置页隐藏「开机自启动」「关闭按钮行为」两项(autostart 插件、窗口关闭行为均为桌面专属,移动端点了无效)
  • 用 .desktop-only 类 + body.mobile 隐藏,桌面端不受影响

2026-06-08(第二十八批:K线触屏手势)

适配

  • K线缩放/平移加触屏支持:单指横扫平移、双指捏合缩放(锚定捏合中心)
  • 单指竖扫不拦截,留给页面正常滚动(按首次移动主轴判定方向)
  • 底部提示文字按平台切换:移动端「双指缩放 / 单指平移」,桌面「滚轮缩放 / 拖动平移」
  • 桌面鼠标 wheel/drag 交互保留不变

2026-06-08(第二十七批:安卓首跑修复 + 触屏适配第一弹)

修复

  • 安卓启动后显示的是挂件页(band.html)而非主界面:安卓只支持单窗口,配置里的第二个 band 窗口盖住了 main
  • 新增 tauri.android.conf.json:安卓只保留 main 窗口(band 是桌面专属的最小化挂件,移动端不需要)

适配(移动端 body.mobile)

  • 平台检测:bridge.js 加 isMobile/isAndroid(按 webview UA)
  • 关闭桌面等比缩放:移动端 webview 本身即手机宽度,自然铺满,不再用 transform:scale(避免破坏 fixed 定位/滚动/触摸坐标)
  • 满屏无圆角无边框;隐藏标题栏窗口按钮(置顶/最小化/关闭)
  • 安全区适配:标题栏避开状态栏/刘海、底部导航避开手势条(env safe-area-inset)
  • 触控热区放大 + :active 触摸反馈

2026-06-08(第二十六批:发布包体积优化)

优化

  • Cargo [profile.release] 加体积优化:strip(剥符号) + lto + opt-level="s" + codegen-units=1 + panic="abort"
  • 说明:debug universal 包约 640M(4 种 CPU 架构 + 不剥符号),属正常;实测建议——测试用 --debug --target aarch64(只编手机架构,约 1/4 体积),发布用 release 单架构(剥符号后再降一大截)

2026-06-08(第二十五批:安卓首个 APK 构建成功 🎉)

里程碑

  • 安卓端从源码到 APK 全流程打通,cargo tauri android build --apk 成功产出 app-universal-release-unsigned.apk
  • 验证了条件编译隔离 + rustls-tls + capabilities 平台拆分三项改动在 aarch64-linux-android 下编译通过

本机构建环境要求(踩坑记录,供复现)

  • Windows 开发人员模式:Tauri 需把 .so 软链接进 jniLibs,须开启(设置→隐私和安全性→开发者选项)
  • JDK 17+:Android Gradle Plugin 要求;系统默认 JDK11 会失败。可用 Android Studio 自带 JBR,在 gen/android/gradle.properties 设 org.gradle.java.home 指向它
  • 安卓目标:rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
  • 测试安装用 debug 包(自动签名):cargo tauri android build --apk --debug;真机热更新:cargo tauri android dev

下一阶段

  • 前端触屏适配:移动端平台检测、去 360 等比缩放、K线双指缩放、隐藏桌面窗口控制 UI、触控热区放大

2026-06-08(第二十四批:安卓权限隔离——autostart 拆桌面专属 capability)

修复(安卓交叉编译)

  • 安卓构建报 Permission autostart:default not found:autostart 插件未为安卓编译,但 capabilities 仍声明该权限
  • 拆分 capabilities:default.json 只留跨平台权限(core/shell);新建 desktop.json 用 platforms:[windows,linux,macOS] 限定 autostart:default 仅桌面生效

2026-06-08(第二十三批:安卓 TLS 修复——reqwest 切 rustls)

修复(安卓交叉编译)

  • 安卓 cargo tauri android build 报 openssl-sys 找不到系统 OpenSSL(交叉编译无 sysroot openssl)
  • reqwest 从默认 native-tls(openssl) 切换到 rustls-tls(纯 Rust TLS,零系统依赖),桌面+安卓通用
  • default-features = false + 显式 gzip/stream/rustls-tls/http2/charset,行为不变

2026-06-08(第二十二批:安卓端准备——条件编译隔离)

重构(为 Android 铺路)

  • Rust 用 #[cfg(desktop)] 隔离全部桌面专属能力:系统托盘、开机自启动、右侧挂件(band)、窗口置顶/最小化/吸附、窗口位置记忆——这些在 Android 上无意义或无法编译
  • 桌面窗口命令在移动端保留为空操作 stub(generate_handler 不变,前端调用不报错)
  • Cargo.toml:tauri-plugin-autostart 移到 [target.'cfg(not(android/ios))'.dependencies]
  • 全部业务能力(行情/AI/推荐/K线/资金流/SQLite/网络)平台无关,Android 原样复用
  • ⚠️ 此为安卓编译铺路,桌面 CI 验证桌面未受影响;Android 实际编译需本机装 Android Studio+NDK 后 cargo tauri android init/build 验证,可能有需迭代修正的项

2026-06-08(第二十一批:标题栏脑袋图标)

变更

  • 标题栏/挂件小图标改用 1.jpg 裁剪的独角兽比心脑袋特写(24px 小尺寸下比完整 logo 清晰);桌面应用图标与安装程序仍用完整品牌 logo(金币那张)

2026-06-08(第二十批:标题栏 logo)

变更

  • 标题栏左上角的 R 渐变方块换成新 logo 图片(24px 圆角缩放);右侧挂件把手的 R 也换成 logo

2026-06-08(第十九批:品牌 logo)

变更

  • 启用新品牌 logo(独角兽抱金币袋 + Rust Stock 木牌):从 1024×1024 源图生成全套应用图标(32/128/256/512 + ico/icns),替换原 R 方块;README 头图换为新 logo。安卓端打包时 cargo tauri android init 会自动用 icons/ 生成各密度 mipmap

2026-06-08(第十八批:今日推荐升级为多流派深度引擎)

重构(借鉴 ai-hedge-fund 多投资人范式)

  • 今日 AI 推荐彻底升级:不再只给"日期+情绪+四大指数",改为本地先从真实数据筛候选池——涨幅榜 + 主力净流入榜 + 龙虎榜合并去重(约 50 只,带现价/涨跌/换手/主力净额/是否上龙虎榜),再喂给 AI
  • AI 决策范式:供应链瓶颈研究法打底 + 多流派视角各自打分(价值/成长/游资打板/技术/宏观,借鉴 ai-hedge-fund)+ 龙虎榜真实数据,综合裁决
  • 当日跌幅不再硬淘汰:回调中的优质股(基本面强、卡住稀缺环节、主力仍净流入)同样可推;复核只去掉行情查无的幻觉代码,真实行情回填价格
  • 一次给 8–12 只(原 3 只),每只 200–350 字含产业链位置/多流派分歧/龙虎榜信号/风险/证伪
  • 新增 Rust:extra.rs fetch_candidates(双榜+龙虎榜合并)/ parse_lhb_codes,含单测

2026-06-08(第十七批:换手率 + 资金流明细)

新增

  • 个股快照新增换手率、振幅、涨跌额(快照扩展为 9 项:今开/昨收/最高/最低/换手率/振幅/成交量/成交额/涨跌额)
  • 资金流向每行标注净占比(主力/超大/大/中/小单都带 ±x.xx%),标题注明"红净流入 / 绿净流出";换手率随资金流接口(f8)一并取得,不增加额外请求

2026-06-08(第十六批:深度调研增强——A股证据源 + 量化打分)

新增(借鉴 muxuuu/serenity-skill 的 playbook 与 scorecard)

  • 深度调研模式的「核实清单」具体化到 A股真实证据渠道:定期报告/问询函/互动易/招投标/环评/海关数据/上下游交叉验证,财务重点核查应收·存货·合同负债·产能利用率·关联交易·定增质押·商誉·补贴商业性等
  • 深度调研为每家候选给 0–100 研究优先级倾向分,权重构成透明(需求拐点/卡点严重度/供应商集中/扩产难度/证据质量/估值背离/催化时点加分;稀释融资/治理/地缘/流动性/炒作/会计质量/强周期减分)

2026-06-08(第十五批:修资金流字段错乱)

修复

  • 个股资金流显示全错(主力"+1"、超大/大/中单全 0、小单错值)。根因:用了 stock/get 接口,它不返回资金流字段。改用东财资金流专用接口 ulist.np/get(与行情同结构,解析 data.diff[0]),字段 f62/f184/f66/f72/f78/f84 正确映射主力/占比/超大/大/中/小单,单测对齐东财真实量级

2026-06-08(第十四批:实时刷新)

新增/变更

  • 板块热力定时刷新:原来只在进页面拉一次,现按刷新间隔实时更新,卡片右上显示更新时间(演示数据时显示"演示数据")
  • 自选股价格实时刷新已生效,自选卡片右上新增"N 支 · HH:MM:SS"更新时间戳
  • 刷新逻辑按当前页智能分配:行情页刷指数条+情绪+板块,自选页刷自选价格,顶部指数条始终刷;快讯/自选股信息每 60s 刷
  • 刷新频率由设置页「刷新间隔」控制(默认 10 秒,可调 3–600 秒)

2026-06-08(第十三批:板块热力真实数据 + 个股详情)

新增

  • 板块热力接真实数据:行情页板块网格改为东方财富行业板块实时涨跌幅(最强 4 + 最弱 2),不再是演示数据;失败回退演示
  • 个股详情:K线页 K线图下方新增——行情快照(今开/昨收/最高/最低/成交量/成交额)+ 资金流向(主力/超大/大/中/小单净额,红流入绿流出带占比条)
  • Rust 新增 extra.rs(fetch_sectors / fetch_fund_flow,含解析单测)

变更

  • Roadmap 勾选:板块热力真实数据、系统托盘(上批已实现,本次补勾)、个股详情

2026-06-08(第十二批:AI 错误提示友好化)

修复

  • AI 服务报错(最常见:API Key 无效/过期、余额不足、限流)原来直接甩一整坨 JSON 且单行气泡溢出屏幕。现在统一翻成清晰中文:401→"API Key 无效或已过期,请到设置页检查"、402→余额不足、429→限流,等
  • 推荐失败信息改为在推荐区可换行显示(不再溢出);flashHint 气泡限宽换行

2026-06-08(第十一批:自选股资讯利好/利空标注)

新增

  • 自选股信息每条 AI 标注利好/利空:标题前显示箭头——利好红「▲」、利空绿「▼」、中性灰「—」(A股红涨绿跌配色)。批量分类(一次请求判一批标题,省 token),结果按标题缓存到本地,不重复判断;未接 AI 时不显示箭头

2026-06-08(第十批:托盘 / 关闭确认 / 推荐报错修复)

新增

  • 系统托盘:常驻托盘图标,左键点图标还原主窗,右键菜单(显示主窗 / 退出)
  • 关闭按钮二次确认:点标题栏 ✕ 弹窗让用户选择「最小化到托盘」或「彻底退出」,可勾选记住选择;设置页可重置该记忆
  • 深度调研改为按钮:底部输入框左侧新增「研」切换按钮,点亮即进入深度调研模式再输入主题(不再需要手打"深度调研"前缀)

修复

  • AI 推荐「重新生成」报错:详尽版长输出常被 max_tokens 截断导致 JSON 数组解析失败。修复:chat_once 加 180s 超时 + max_tokens 提到 8000;extract_json_array 增加截断容错(逐个抢救已完整的对象,含单测),只要有一支完整就不报错

2026-06-08(第九批:产业链研究法集成)

新增

  • AI 推荐/个股分析全面产业链化(借鉴开源 Serenity 供应链瓶颈研究法):推荐按"先排产业链层级→找稀缺层→再排公司"推理,每支理由 250–400 字,强制覆盖六小节——「产业链位置(上下游)/卡住的环节/排序原因(财务传导路径)/证据/主要风险/证伪条件」;个股分析 300–450 字,增加「误分类检验」与「未来1–4季度验证指标」
  • 聊天「深度调研」模式:输入「深度调研 + 主题」触发产业链八层拆解工作流(叙事→系统变化→层级排序→公司分类→优先研究清单→反共识方向→核实清单),结尾强制注明"未经实时新闻核验"
  • 推荐战绩面板:推荐卡片新增「📊 战绩」——用真实K线回算近 10 个推荐日每支的"推荐日收盘→最新收盘"收益,汇总胜率与平均收益,让 AI 推荐可被客观检验
  • ai.chat_once 设置 max_tokens=7000,防详尽输出被截断

2026-06-08(第八批:打包修正)

修复

  • bundle targets 移除 dmg(Mac 专用,混在 Windows 打包会报错);Windows 默认出 NSIS 安装包,Mac 打包用 cargo tauri build --bundles dmg

2026-06-06(第七批:搜索添加自选)

新增

  • 自选股支持按公司名称 / 拼音首字母搜索添加(东财 suggest 接口,输入"茅台"或"GZMT"即出下拉建议,点选或回车即加入;纯代码仍然直加),只收 A 股个股,港美股/基金/指数自动过滤

2026-06-06(第六批:仓库治理)

变更

  • MEMORY.md / PITFALLS.md(项目记忆与避坑文档,含 docs/ 副本)从仓库移除并加入 .gitignore,此后仅作本地工作文档,不再同步 GitHub

2026-06-06(第五批:体验打磨)

新增

  • K线交互:鼠标滚轮缩放(以光标为锚点,20–250 根)、按住拖动平移;250 根本地缓存,缩放平移零网络请求
  • 自选股信息卡片(行情页):替换原 7×24 快讯,对每支自选并发抓取东财个股资讯(每支 6 条,合并去重取 20),任何股票都有内容;点击条目用系统浏览器打开原文;全量 7×24 保留在「快讯」tab
  • AI 推荐实时行情复核:AI 提 6 候选 → 真实行情淘汰当日跌超 1.5% 与查无此码(幻觉代码)的标的 → 按分取前 3,行内展示真实"今日 ±x.xx%"
  • 推荐一键加自选:推荐行尾 + 按钮,已在自选显示 ✓

修复

  • 看跌股混进 AI 推荐(prompt 只许看涨标的 + Rust 侧 score≤0 过滤双保险;禁止 AI 编造当日涨跌幅)
  • 「重新生成」无反馈似失灵(点击立即切"⏳ 生成中"占位、按钮禁用、重复点击弹提示、失败恢复旧结果)
  • 自选页加载慢(缓存先行:进页秒开,行情后台刷新;缓存持久化 SQLite,重启首开也即时;行情按代码匹配防串行)
  • 自选行仪表盘不对齐(价格列定宽 68px 右对齐)

2026-06-06(第四批:挂件与窗口)

新增

  • 右侧仪表盘挂件:最小化后主窗缩为 86px 竖排小窗——每支自选一个 AI 表盘+名称+涨跌幅,首次贴屏幕右缘,顶部把手可拖到任意位置,按数量自适应高度,点击还原主窗
  • 记住窗口位置和大小(SQLite 持久化,节流保存,启动恢复)
  • 开机自启动开关(设置页,tauri-plugin-autostart)
  • 今日 AI 推荐:每日 AI 详尽分析推荐 3 支(基本面/技术面/消息面+风险提示);同一支连续 ≥7 个推荐日加 ★ 并注明天数;历史留 30 日
  • K线图页:自选股点名称进入,日/周/月K 蜡烛图(前复权)+ MA5/MA10 + 成交量,canvas 零依赖

修复

  • 主窗被恢复到屏幕外导致"启动不可见/点挂件没反应"(Windows 隐藏窗口 -32000 占位坐标入库;三层防御:不存隐藏坐标 + 恢复时夹回工作区 + 还原时强制拉回屏内)
  • 仓库内 index.html 自首次提交即被同步问题截断(缺 5 个页面和 script 标签,克隆构建 UI 整体瘫痪):重建完整 729 行,CI 加 HTML 完整性守卫
  • 挂件读不到自选(localStorage 老数据自动迁移回写 SQLite + 挂件读取双回退)

2026-06-06(第三批:可迭代架构 + CI)

重构

  • QuoteSource trait + 注册表(sources/):新增行情数据源只需实现 trait + 注册表加一行;统一代码格式,私有格式转换下沉到各源
  • AI Provider 抽象(ai.rs):OpenAI 兼容协议,Base URL/模型可配(默认 DeepSeek,可切 Kimi/通义/本地 Ollama)
  • 前端 ES modules 化:main.js 拆为 bootstrap + bridge/store/api/ui/router + 5 个页面模块,无构建依赖

新增

  • GitHub Actions CI:cargo test + 前端全模块语法检查 + HTML 完整性守卫

2026-06-06(第二批:AI 深度集成)

新增

  • 自选股行内 AI 看涨/看跌小仪表盘(-100–100,按日缓存),点击看分析全文;未接 AI 时指针停 0 并提示
  • 市场情绪表盘点击 3D 翻面:背面展示四大指数涨跌幅×权重明细 + 算法说明 + AI 解读
  • AI 流式聊天(SSE 逐字输出,上下文保留 12 条)
  • SQLite 本地持久化(rusqlite bundled,KV 存 JSON)
  • 真实数据:市场情绪=四大指数加权 + tanh 压缩;快讯=东财 7×24(实测修通 sortEnd/req_trace 必填参数)

修复

  • 快讯一直显示 mock(接口必填参数缺失被静默拒绝)
  • 情绪分数负号被指针线遮挡

2026-06-05(首版)

  • Tauri 2 + Rust + 原生前端的手机尺寸悬浮行情助手(360×640,无边框置顶圆角)
  • 拖到屏幕边缘自动吸附;✕ 收起成 6px 小条;窗口自由缩放(UI 等比)
  • 新浪/东方财富双数据源行情、指数滚动条、自选股增删
  • 四页框架:行情 / 快讯 / 自选 / 设置
  • 修复:透明窗口圆角外伪影、withGlobalTauri 缺失、Tauri 2 capabilities 缺失
  • 开源:Apache-2.0,发布至 GitHub(Im-Midi/rust-stock)

声明

行情与快讯数据来自第三方公开接口(新浪财经、东方财富),仅供学习研究,商用前请自行确认数据源授权。AI 分析内容由大模型生成,仅供参考,不构成投资建议。投资有风险,入市需谨慎。

致谢

License

Apache License 2.0

About

Resources

Stars

16 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages