shy3130
|
1908173bee
|
fix(analysis): 补上 market-snapshot 的 SSE 失效条目 (#419)
290a0f5e 只落了说明注释与设置页开关, SSE_INVALIDATE_PREFIXES 内实际没有
'market-snapshot' 条目, quotes_updated 依旧不会失效该查询, 盘中停留分析页
仍不自动刷新。补上缺失条目使修复真正生效。
|
2026-09-25 14:34:50 +08:00 |
|
shy3130
|
290a0f5e22
|
fix(analysis): 概念/行业分析 market-snapshot 接入 SSE 行情刷新 (#419)
market-snapshot 查询不在 SSE_INVALIDATE_PREFIXES 内, 盘中停留页面时
板块聚合数值(平均涨跌幅/涨跌家数/强度/龙头/成分股行情)不随行情更新,
只有手动刷新才重取。后端快照本身读最新日内缓存是活的, 缺口纯在前端
触发链路。
- SSE_INVALIDATE_PREFIXES 加入 'market-snapshot': quotes_updated 时
失效该查询, 两分析页(及成分成员对话框)打开时自动重取; 仅页面打开
才实际发请求, 推送节奏 6~60s 与看板 overview-market 同档
- 设置页「页面实时刷新」新增「概念/行业分析」开关 (未配置默认开启,
沿用 sse_refresh_pages 偏好体系)
|
2026-09-25 14:27:43 +08:00 |
|
shy3130
|
d0c474a27b
|
Merge branch 'feat/paper-trading': 模拟盘 V1/V2/V3 (虚拟账户/自动跟单/成交推送/导出/对比/AI注入)
|
2026-09-24 22:00:25 +08:00 |
|
shy3130
|
f249856bf7
|
feat(paper): V3 补全 — 结算成交留痕/自动跟单下单事件推送/AI 持仓注入多账户
- paper.day_fill_events: 交易日成交台账 → AlertEvent 同构事件;
daily_pipeline paper_settle 阶段补 alert_store 留痕 (next_open/close
单的成交发生在盘后管道, 盘中钩子覆盖不到; 管道无 SSE 广播器, 留痕即可见)
- paper_auto.auto_order_events: 自动跟单创建的订单 → 推送事件
(rule_id 从 order.source 还原), quote_service 钩子随成交事件一并走
SSE toast / 语音 / 系统通知 / 留痕 / Webhook 既有通道
- stock_analyzer: 虚拟持仓注入改为逐账户收集 (V2 多账户), 空仓账户跳过,
每账户一行标注账户名; raw 口径浮盈不变
- tests: 新增 day_fill_events / auto_order_events / 多账户注入用例,
既有注入用例适配列表签名 (66 passed)
|
2026-09-24 20:01:14 +08:00 |
|
shy3130
|
508a920ce5
|
Merge PR #418 from KenNeo730/fix/enriched-publication-commit-idempotent
fix(enriched): commit() 幂等, 多日期分区写入不再误报 ownership was lost
与 33c114d7 (#417) 同根因的等价修复: 头部「重复提交幂等返回」分支与
尾部「发布后复位 _changed」叠加 — 空提交走顶部守卫, 头部分支转为
_publishing 复位后的防御性兜底。零冲突, 双方回归测试 (18 项) 全绿。
|
2026-09-24 18:57:54 +08:00 |
|
shy3130
|
4db9c7b6fc
|
fix(enriched): commit() 发布后复位脏标记, 多分区空提交不再误抛 ownership (#417)
EnrichedPublication.commit() 发布完成后 _publishing 置 False、标记写回
ready payload (不含 publication_id), 但 _changed 未复位。多日期分区写入
复用同一发布对象 (repository._write_daily_partition), 有变化分区提交后
再遇到无变化分区时, _write_partition_locked 的"无害空提交"带着过期脏
标记命中 ownership 校验, 必然抛 "ownership was lost", 整批写入中断。
e3baba6 让 ETF 增量日K用完整本地历史重算前复权 (单次 245+ 日期分区),
必然出现无变化分区, 该旧缺陷自此恒定复现 (盘后管道 index/etf 阶段失败)。
修复: commit() 发布完成后复位 _changed — 待发布内容已全部落盘, 之后任何
写入都会经 _claim_or_verify 重新认领并再次置位, 语义不变; 空提交经由
既有的是否脏守卫自然幂等。
回归测试: 单对象重复 commit 幂等 + 仓储级「有变化分区在前、无变化分区
在后」两用例, 修复前均失败、修复后通过。
|
2026-09-24 18:13:26 +08:00 |
|
shy3130
|
51d8083e89
|
feat(paper): V3 策略候选对比卡 + AI 个股分析注入虚拟持仓
- 模拟盘右列新增「策略对比」卡: 统计 vs 策略候选 (回测报告持久化摘要, 同口径标量),
各按己方单位渲染 (候选小数 fmtPct / 模拟盘百分数), 不做数值换算
- api 客户端新增 backtestCandidates + BacktestCandidate 类型 + QK 键
- stock_analyzer: 模拟盘默认账户持有该标的时, 用户提示词注入虚拟持仓上下文
(数量/成本/浮盈, 浮盈优先 raw_close 口径避免除权失真; 注入失败静默跳过)
- 测试: 注入/空仓/raw 口径 3 项 + 既有 46 项全过; 前端 build 通过
|
2026-09-24 18:13:11 +08:00 |
|
shy3130
|
33c114d736
|
fix(enriched): commit() 发布后复位脏标记, 多分区空提交不再误抛 ownership (#417)
EnrichedPublication.commit() 发布完成后 _publishing 置 False、标记写回
ready payload (不含 publication_id), 但 _changed 未复位。多日期分区写入
复用同一发布对象 (repository._write_daily_partition), 有变化分区提交后
再遇到无变化分区时, _write_partition_locked 的"无害空提交"带着过期脏
标记命中 ownership 校验, 必然抛 "ownership was lost", 整批写入中断。
e3baba6 让 ETF 增量日K用完整本地历史重算前复权 (单次 245+ 日期分区),
必然出现无变化分区, 该旧缺陷自此恒定复现 (盘后管道 index/etf 阶段失败)。
修复: commit() 发布完成后复位 _changed — 待发布内容已全部落盘, 之后任何
写入都会经 _claim_or_verify 重新认领并再次置位, 语义不变; 空提交经由
既有的是否脏守卫自然幂等。
回归测试: 单对象重复 commit 幂等 + 仓储级「有变化分区在前、无变化分区
在后」两用例, 修复前均失败、修复后通过。
|
2026-09-24 17:57:01 +08:00 |
|
shy3130
|
28bd46df2a
|
feat(paper): V3 成交推送(事件走监控SSE/语音/系统通知/留痕/Webhook) + 成交台账导出 CSV
- evaluate_intraday 返回成交事件列表(字段对齐 AlertEvent, source=paper), 域模块只产出不投递
- quote_service 钩子收集事件: SSE toast + alert_store 留痕 + 系统通知(复用既有开关) + 已配置 Webhook 渠道异步投递
- 前端: AlertToast 模拟盘徽章、语音播报 paper 文案分支、模拟盘页成交台账一键导出 CSV(BOM)
- 测试: evaluate_intraday 契约更新(int→list) + 新增事件字段断言, 41 项全过
|
2026-09-24 17:35:56 +08:00 |
|
Ken
|
a9e573f1ed
|
fix(enriched): commit() 幂等, 多日期分区写入不再误报 ownership was lost
EnrichedPublication.commit() 提交后 _changed 未复位, 且标记被写成 ready
payload (不含 publication_id)、_publishing=False。_write_daily_partition
对整张表只创建一个发布对象并在 partition_by("date") 循环里复用, 于是
"有变化的分区" 之后若跟着一个 "内容无变化的分区", 后者在
_write_partition_locked 里直接 commit() 必然命中 publication_id 不匹配,
抛 enriched publication ownership was lost 并打断整批写入。
e3baba6 起 ETF enriched 按完整本地历史重算前复权, 一次写 245+ 个 date=
分区, 必然出现无变化分区 —— 盘后管道 index/etf 阶段因此恒定失败, 且失败
位置固定 (第一批日K响应后 ~0.3s), 与并发无关: recover=True、清理标记、
停掉实时轮询都无法绕过。
修复: commit() 在未处于 publishing 状态 (即本对象已提交过) 时幂等返回。
新增回归测试覆盖单对象重复 commit 与多分区写入中的无变化分区两种情况,
修复前均失败。
|
2026-09-24 17:27:40 +08:00 |
|
shy3130
|
dbb2e6dd14
|
feat(paper): 模拟盘虚拟账户 — 模拟撮合/自动跟单/多账户/涨跌停排队/统计告警
- 撮合域: append-only 成交台账唯一事实源, T+1/涨跌停/停牌顺延/除权调整,
佣金印花税滑点与回测引擎同口径
- 下单: 即时/次日开盘/当日收盘, 盘中快照撮合 + 盘后结算幂等;
涨跌停排队次日重试可选 (账户级开关, 顺延上限 3 日)
- 自动跟单: 监控事件触发按规则下单 (跟策略/跟规则, 固定金额/权益%,
同标的冷却去重), 下单复用撮合域同一把锁与校验
- 多账户: data/paper/accounts/{id}/ 完全隔离, 旧单账户布局自动迁移,
API ?account= 贯穿全部端点, 盘中钩子与盘后结算逐账户执行
- 统计: FIFO 回合/胜率/盈亏比/均持天数/最大回撤; 成交落告警记录
- 前端: 模拟盘页 (净值对比沪深300/持仓/订单/成交台账/下单/规则面板/
账户切换), 买入红卖出绿 A 股配色
- 测试: 域模块 33 项 + API 契约 8 项
|
2026-09-24 17:19:09 +08:00 |
|
shy3130
|
ecc418bd94
|
feat: AI 助手推广位、显示细节优化与模拟盘设计方案
- AI 助手: RunningHub 推广位(标题行跑马灯、一周静默、无缝循环、悬停暂停), 抽屉头部与侧边栏模型名完整显示
- 测试: mining manager 终态事件轮询收敛, 消除状态先于事件落盘的读侧竞态
- 文档: 新增虚拟账户(模拟盘)功能设计方案 docs/paper-trading-plan.md
|
2026-09-24 13:59:14 +08:00 |
|
 wshyandGitHub
|
538dddc4a1
|
Merge pull request #406 from zelongji/fix/rps-rotation-intraday
fix(rps): 盘中涨幅轮动不再因 enriched generation 变化返回空
|
2026-09-24 12:22:57 +08:00 |
|
 wshyandGitHub
|
58b8282eee
|
Merge pull request #405 from zelongji/fix/fuyao-income-null-schema
fix(fuyao): 财务报表构建改为全量推断 schema, 修复利润表同步必现失败
|
2026-09-24 12:22:40 +08:00 |
|
 wshyandGitHub
|
f709158b2e
|
Update README.md
|
2026-09-24 12:04:21 +08:00 |
|
shy3130
|
4743030425
|
chore: bump version to 0.3.1
v0.3.1
|
2026-09-24 11:53:37 +08:00 |
|
shy3130
|
c37f450e28
|
feat: 更新 README, 新增快速预设, 调整 AI 默认上下文/输出限制
README:
- 更新顶部说明区块, 新增静态展示资源
快速预设 (设置页):
- 新增预设项, 调整官网链接与介绍文案, 高亮样式适配明暗主题
- 模型输入框支持下拉选择: 经后端代理拉取模型列表, 支持关键词过滤
AI 默认配置:
- 输出上限 8192 → 16384, 上下文窗口 64000 → 128000, 对齐当前主流模型能力
- 后端新增模型列表代理接口, 前端 api 同步封装
|
2026-09-24 11:39:54 +08:00 |
|
 zelongjiandClaude Opus 5.5
|
f2054720be
|
fix(rps): 盘中涨幅轮动不再因 enriched generation 变化返回空
交易时段实时 enriched 每个 tick 落盘都会换 generation, 而历史缓存几分钟才
重建一次, get_enriched_range 的按代校验因此几乎总返回 None, 概念/行业轮动
盘中一直"暂无数据"。轮动只读涨跌幅, 校验失败时退回内存历史缓存, 并用
get_enriched_latest 的当日实时缓存覆盖今天的行; 最新日期同时参考实时缓存。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WydecjgAwEPFurSvKVZCJu
|
2026-09-24 11:06:22 +08:00 |
|
 zelongjiandClaude Opus 5.5
|
0c00b116d1
|
fix(fuyao): 财务报表构建改为全量推断 schema, 修复利润表同步必现失败
interest_expenses→financial_expense 仅银行等少数标的有值, 全市场按代码
顺序同步时前 100 行全为 None, Polars 默认按前 100 行推断出 Null 列, 遇到
中信银行(601998.SH)的 6.1199e10 即 append 失败, income 整表从未写入。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WydecjgAwEPFurSvKVZCJu
|
2026-09-24 11:03:32 +08:00 |
|
 wshyandGitHub
|
9c1abd7fe5
|
Merge pull request #404 from kevin9327/fix/etf-adj-history-recompute
fix(etf): 增量日K用完整本地历史重算前复权, 除权后不再留下跳空
|
2026-09-24 08:54:48 +08:00 |
|
kevin9327
|
e3baba6bfe
|
fix(etf): 增量日K用完整本地历史重算前复权, 除权后不再留下跳空
|
2026-09-24 07:39:30 +09:00 |
|
 wshyandGitHub
|
bdc1478e14
|
Merge pull request #402 from kevin9327/fix/stock-analysis-etf-no-financials
fix(stock-analysis): ETF 无财务走常态文案, 不再写成 Free 未同步
|
2026-09-23 21:45:36 +08:00 |
|
 wshyandGitHub
|
1602ebde94
|
Merge pull request #400 from kevin9327/fix/monitor-etf-asset-type-reconcile
fix(monitor): 误存为 stock 的 ETF 规则改走 ETF 监控轮
|
2026-09-23 21:45:31 +08:00 |
|
 wshyandGitHub
|
554eec7928
|
Merge pull request #398 from kevin9327/fix/backtest-polars-minute-fill-lookahead
fix(backtest): polars 面板路径分钟成交参考线剔除当根收盘, 消除前视
|
2026-09-23 21:45:25 +08:00 |
|
 wshyandGitHub
|
b2423c6024
|
Merge pull request #397 from kevin9327/fix/assistant-backtest-beijing-end
fix(assistant): run_backtest 缺省结束日改用北京日期
|
2026-09-23 21:45:20 +08:00 |
|
 wshyandGitHub
|
ff79b10fc6
|
Merge pull request #394 from kevin9327/fix/strategy-market-data-beijing-end
fix(strategy): 选股读指数/ETF日K默认截止日改用北京日期
|
2026-09-23 21:45:14 +08:00 |
|
kevin9327
|
5357bb5df7
|
fix(stock-analysis): ETF 无财务走常态文案, 不再写成 Free 未同步
|
2026-09-23 20:02:52 +09:00 |
|
kevin9327
|
56eab07723
|
fix(monitor): 误存为 stock 的 ETF 规则改走 ETF 监控轮
|
2026-09-23 20:01:22 +09:00 |
|
kevin9327
|
7079cb8773
|
fix(backtest): polars 面板路径分钟成交参考线剔除当根收盘, 消除前视
|
2026-09-23 19:56:09 +09:00 |
|
kevin9327
|
22636c641d
|
fix(assistant): run_backtest 缺省结束日改用北京日期
|
2026-09-23 19:53:46 +09:00 |
|
kevin9327
|
c9e9ec8c6e
|
fix(strategy): 选股读指数/ETF日K默认截止日改用北京日期
|
2026-09-23 19:31:57 +09:00 |
|
 wshyandGitHub
|
b17f9ae899
|
Merge pull request #391 from kevin9327/fix/stock-analysis-beijing-today
fix(stock-analysis): 个股分析与关键价位日K窗口改用北京日期
|
2026-09-23 08:05:45 +08:00 |
|
kevin9327
|
bd85d56cae
|
fix(stock-analysis): 个股分析与关键价位日K窗口改用北京日期
助手工具 get_stock_daily / get_stock_analysis 已用 cn_today(),
个股分析页的 _load_kline 与 GET /levels 仍走 date.today()。
美西主机整个 A 股交易时段、UTC 主机北京 00:00-08:00, 本地日历日
比北京早一天, 管道已写入的当日官方 K 被排除, 分析与价位停在昨天。
Closes #390
|
2026-09-23 07:44:29 +09:00 |
|
shy3130
|
43dfef3e62
|
fix(backtest): 分钟穿越成交参考线剔除当根收盘, 消除前视 (#388)
买卖穿越成交共用 rolling_mean(close,5) 作参考线, 该线含当日收盘 —
盘中模拟成交价依赖 15:00 才确定的收盘价, minute_fill 声称的分钟级
精确成交被系统性污染; 卖出信号回放侧 (build_minute_exit_reference)
早已用代数法剔除当根, 双侧纪律不一致。
新增 build_minute_entry_reference: (window·MA - close)/(window-1)
代数剔除当根 = 前 window-1 根均值, 当日开盘即已知; 与卖出侧同住
minute_trigger 模块, 「当日已知参考线」单一实现。strategy.py 三处
调用点统一替换, 无重复公式。回归测试钉住性质: 同一盘中路径只改
当日收盘, 成交价必须不变。
|
2026-09-22 00:40:49 +08:00 |
|
shy3130
|
efc4e24f17
|
fix(backtest): 分钟 VWAP 缺 x100 量纲错误, 无参考线成交价放大 100 倍 (#387)
volume 单位手、amount 单位元, VWAP = amount/(volume*100) — 与 scoring/
intraday_features/matrix 的既有实现同口径。原实现漏乘 100, 无参考线
(参考线 NaN) 的分钟成交价系统性放大 100 倍。夹具同步改为契约口径
(amount = 价 x 手 x 100), 并加量级护栏 — 均价必须落在当日价格区间
量级, 拦住把错误公式断言成规格的回归。
|
2026-09-22 00:40:42 +08:00 |
|
shy3130
|
b6a7367262
|
feat(screener): 新建策略「默认基础参数」配置与一键应用全部策略
- 策略页头部新增配置入口: 编辑默认基础过滤(价格/流通市值/成交额/换手/板块/ST), localStorage 持久化, 内置默认与原模板一致
- 新建策略两条路径生效: 自定义/matrix 模板注入 + AI 生成 step1 提示词注入(未配置时提示词逐字节不变)
- 对话框内一键应用: 二次确认后分批 PATCH 到全部股票策略, 只动 basic_filter 不碰各策略参数/评分, 应用即所见并同步存为默认配置
|
2026-09-21 13:46:32 +08:00 |
|
shy3130
|
2488fdc9ed
|
feat(screener): 分钟策略进入页面自动异步计算命中数, 无需点击
- 新增 runAllMinute: 按池批量跑分钟策略(与日线 runAll 串行, 防并发崩 Numba), 结果合入卡片
- 日线摘要整表替换时保留分钟命中数, 不再被摘要刷新冲掉退回「待计算」
- screenerRunAll 支持 timeframe 参数; 自动计算关闭时保留「待计算」点击引导
- 卡片 computing 覆盖分钟批量计算中状态(脉冲占位, 算完点亮)
|
2026-09-21 13:46:11 +08:00 |
|
shy3130
|
70350ec8b7
|
fix(quote): stop() 不再持久化关闭实时行情, 容器重启后按用户原开关自动恢复
lifespan shutdown (容器停止/重启) 也调用 stop(), 原实现无条件
_save_enabled(False) 会把用户开启的实时行情持久化成关闭, 重启后
boot_check 读到 False 需手动再开。持久化语义移至 disable() (用户主动关闭)。
|
2026-09-21 12:09:46 +08:00 |
|
shy3130
|
477956fed3
|
fix(quote): 全空补充列不再进入增量管道, 自定义源实时链路当日换手/振幅不再全空
fuyao 等源对未提供字段显式给 None 键, 原样转发全空列会让下游
compute_enriched_today「列存在即直接采用」跳过回退计算, 当日
turnover_rate/amplitude 全空落盘且每轮实时覆写自锁。_build_quote_extra
丢弃整列全空的字段, 下游自动回退 float_shares/价格计算, 已落盘坏数据自愈。
|
2026-09-21 12:09:24 +08:00 |
|
 wshyandGitHub
|
f732afed11
|
Merge pull request #385 from thinkbuf/fix/kline-hover-resume-after-switch
fix(kline): 切股后鼠标未离开图表时「至今/周期」不恢复
|
2026-09-21 07:42:42 +08:00 |
|
 wshyandGitHub
|
46e1513f88
|
Merge pull request #384 from kevin9327/fix/kline-gzip-nonfinite-json
fix(kline): gzip 传输层剔除 nan/inf, 避免写出非法 JSON
|
2026-09-21 07:42:31 +08:00 |
|
 wshyandGitHub
|
59b8910f7f
|
Merge pull request #382 from kevin9327/fix/pipeline-today-beijing
fix(pipeline): 盘后管道的今天改用北京日期, 美西主机收盘后不再漏当日K
|
2026-09-21 07:42:20 +08:00 |
|
 wshyandGitHub
|
a75feef210
|
Merge pull request #380 from kevin9327/fix/index-daily-end-beijing
fix(index): 指数日K默认截止日期改用北京日期, 缓存冷时不再丢当日K
|
2026-09-21 07:42:09 +08:00 |
|
 wshyandGitHub
|
33b83b862c
|
Merge pull request #378 from kevin9327/fix/kline-daily-end-beijing
fix(kline): 个股日K默认截止日期改用北京日期, 缓存冷时不再丢当日K
|
2026-09-21 07:41:58 +08:00 |
|
 wshyandGitHub
|
fddca48dd3
|
Merge pull request #376 from kevin9327/fix/daily-batch-beijing-end
fix(kline): 自选迷你K默认截止日改用北京日期, 盘中不再丢当日K
|
2026-09-21 07:41:40 +08:00 |
|
 richardandClaude
|
cef7c6f8da
|
fix(kline): 切股后鼠标未离开图表时「至今/周期」不恢复
K线弹窗用左右方向键切股, 鼠标全程停在图上; 切股时重置 effect 清掉
hoverActiveRef, 恢复却只依赖 mouseenter, 于是「至今/周期」一直隐藏,
必须把光标移出日K再移回来才出现。
- updateAxisPointer 命中有效 K 线时恢复悬停态: 切股后竖虚线随 setOption
重画, 鼠标未离开就等不到 mouseenter, 按竖虚线重新命中即复显
- 抽出 writeInfoBar / setHoverActive: 悬停显隐与悬停 K 线变化共用一个
写入口 (原两处重复 innerHTML 写入)
- 回归用例: 切股 → 未离开图表 → 竖虚线重新命中 → 复显; 移出图表 → 收起
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-21 01:34:15 +08:00 |
|
kevin9327
|
cfef4b633e
|
fix(kline): gzip 传输层剔除 nan/inf, 避免写出非法 JSON
|
2026-09-20 20:10:12 +09:00 |
|
kevin9327
|
edcd9692aa
|
fix(pipeline): 盘后管道的今天改用北京日期, 美西主机收盘后不再漏当日K
|
2026-09-20 20:05:56 +09:00 |
|
kevin9327
|
9392735b01
|
fix(index): 指数日K默认截止日期改用北京日期, 缓存冷时不再丢当日K
|
2026-09-20 20:01:27 +09:00 |
|
kevin9327
|
15bafb0eef
|
fix(kline): 个股日K默认截止日期改用北京日期, 缓存冷时不再丢当日K
|
2026-09-20 19:59:20 +09:00 |
|