wshy
|
3db7f38446
|
Merge pull request #281 from 0112020179/codex/fix-enriched-refresh-memory
fix(oom): 降低补算内存峰值并统一重任务并发控制
|
2026-09-09 11:36:22 +08:00 |
|
wshy
|
5ffe43d42d
|
Merge pull request #280 from kevin9327/fix/backtest-stream-date-400
fix(backtest): SSE 端点非法 start/end 返回 400 而不是 500
|
2026-09-09 09:04:52 +08:00 |
|
wshy
|
efd9f820d4
|
Merge pull request #279 from kevin9327/fix/screener-run-all-as-of
fix(screener): run_all 的 as_of 与 /custom、/preset 同口径校验 (数字 as_of 会写坏策略缓存)
|
2026-09-09 09:04:46 +08:00 |
|
wshy
|
6eb1508fd8
|
Merge pull request #278 from kevin9327/fix/alerts-query-bounds
fix(alerts): 触发记录查询的 days/limit 补上范围约束 (limit=-1 静默丢记录)
|
2026-09-09 09:04:40 +08:00 |
|
wshy
|
7dc11125bf
|
Merge pull request #277 from kevin9327/fix/merge-history-null-announce-date
fix(financial): 公告日为空的旧行不再压过带公告日的新行
|
2026-09-09 09:04:35 +08:00 |
|
wshy
|
7e99a07270
|
Merge pull request #276 from kevin9327/fix/quotes-flush-quote-ts
fix(kline): 实时行情覆写当日日K分区时补写 quote_ts
|
2026-09-09 09:04:28 +08:00 |
|
wshy
|
fe1410532f
|
Merge pull request #275 from kevin9327/fix/factor-delete-fail-closed
fix(factors): 删除因子被拒绝时定义已被删掉 (删除路径未 fail-closed)
|
2026-09-09 09:04:22 +08:00 |
|
wshy
|
5467b0dca4
|
Merge pull request #274 from kevin9327/fix/fundamental-announce-day-hole
fix(fundamentals): 换报告期公告当日不再丢失上一期财务因子值 (与矩阵路径口径对齐)
|
2026-09-09 09:04:17 +08:00 |
|
wshy
|
464a5d9d50
|
Merge pull request #273 from kevin9327/fix/test-endpoint-cold-cache
fix(settings): 端点清单缓存未预热时端点测速 500
|
2026-09-09 09:04:11 +08:00 |
|
wshy
|
99f478b257
|
Merge pull request #272 from kevin9327/fix/report-created-at-beijing-time
fix(reports): AI 报告 created_at 改用北京墙钟, 修复 UTC 部署下「8 小时前」
|
2026-09-09 09:04:05 +08:00 |
|
wshy
|
970296e82e
|
Merge pull request #271 from kevin9327/fix/minute-sync-beijing-window
fix(kline): 分钟K增量同步窗口统一按北京时区
|
2026-09-09 09:04:00 +08:00 |
|
wshy
|
eebe533986
|
Merge pull request #270 from kevin9327/fix/rotation-signal-date-alignment
fix(rotation): 轮动信号缺失日按日期归位补齐, 新晋概念不再被误判为退潮
|
2026-09-09 09:03:54 +08:00 |
|
wshy
|
1b90f57501
|
Merge pull request #269 from 0112020179/codex/fix-halted-partition-rebuild
fix(pipeline): 避免停牌分区反复误删重算
|
2026-09-09 09:03:49 +08:00 |
|
wshy
|
8cb834d6a1
|
Merge pull request #267 from 0112020179/codex/fix-neighbor-prefetch-priority
fix(frontend): 当前股票加载后串行预取邻股
|
2026-09-08 21:06:45 +08:00 |
|
wshy
|
cdd41a6d15
|
Merge pull request #266 from 0112020179/codex/fix-kline-transfer-minute-capability
fix(kline): 压缩详情响应并限制无权限分钟回退
|
2026-09-08 21:06:40 +08:00 |
|
wshy
|
de250f72bc
|
Merge pull request #268 from kevin9327/fix/pull-window-beijing
fix(ext-data): 定时拉取的时间窗口与落盘日期改用北京时间
|
2026-09-08 21:06:36 +08:00 |
|
wshy
|
a5374d4212
|
Merge pull request #264 from 0112020179/codex/fix-plugin-source-display
fix(frontend): display plugin data source names
|
2026-09-08 16:53:27 +08:00 |
|
wshy
|
8ef3d66b95
|
Merge pull request #263 from kevin9327/fix/csv-transcode-streaming
perf(ext-data): CSV 编码转换改为分块进行, 峰值内存不再随文件线性增长
|
2026-09-07 12:27:53 +08:00 |
|
wshy
|
28dbcb0709
|
Merge pull request #262 from kevin9327/fix/csv-transcode-newline
fix(ext-data): CSV 编码转换保留原始换行, 避免最后一列被推断为字符串
|
2026-09-07 12:27:12 +08:00 |
|
wshy
|
c39a9b8b17
|
Update README.md
|
2026-09-06 23:28:42 +08:00 |
|
wshy
|
957bdd2d25
|
Merge pull request #259 from 0112020179/codex/hide-missing-intraday-average
fix(intraday): hide average when amount is unavailable
|
2026-09-06 23:27:36 +08:00 |
|
wshy
|
5805999024
|
Merge pull request #258 from 0112020179/codex/fix-null-minute-amount
fix(intraday): handle missing minute amount
|
2026-09-06 22:59:49 +08:00 |
|
wshy
|
f275edafeb
|
Merge pull request #256 from SummerCaptain/feat/recap-push-gate
feat(preferences): 复盘推送 review_push_mode 门控
|
2026-09-06 20:53:29 +08:00 |
|
wshy
|
f0c0fd3bf8
|
Merge pull request #255 from SummerCaptain/feat/ai-strategy-draft-gate
feat(strategy): AI 策略保存为 research_only 草稿 + publish 端点
|
2026-09-06 20:53:25 +08:00 |
|
wshy
|
c94fe2bf31
|
Merge pull request #251 from 0112020179/codex/fix-fuyao-history-oom
修复扶摇历史日K同步内存溢出
|
2026-09-06 20:53:22 +08:00 |
|
wshy
|
aeb52b4a64
|
Update README.md
|
2026-09-06 09:57:38 +08:00 |
|
wshy
|
900dbea59c
|
Merge pull request #246 from 0112020179/codex/custom-depth-provider-245
feat(data-source): support custom depth providers
|
2026-09-06 09:51:41 +08:00 |
|
wshy
|
2ebb9f0b11
|
Merge pull request #249 from kevin9327/fix/watchlist-upload-cap
fix(watchlist): 自选导入上传分块读取, 越限即拒绝而非读完再拒
|
2026-09-06 09:51:36 +08:00 |
|
wshy
|
c08e26ddd1
|
Merge pull request #250 from kevin9327/fix/feishu-test-attempt-count
fix(notifications): 飞书推送按传入的 max_attempts 退避与记日志
|
2026-09-06 09:51:33 +08:00 |
|
wshy
|
c1ad4880fe
|
Merge pull request #248 from 0112020179/codex/fix-index-chart-jitter
fix(chart): prevent axis boundary hover jitter
|
2026-09-05 18:46:55 +08:00 |
|
wshy
|
c1cad36449
|
Merge pull request #244 from yushenglin01/feat/notification-channels
feat(notifications): add custom webhook and email channels
|
2026-09-05 17:14:25 +08:00 |
|
wshy
|
3fee4ecba5
|
Merge pull request #240 from yushenglin01/fix/ai-analysis-focus
修复 AI 分析关注重点不突出及静默失效问题
|
2026-09-04 12:47:39 +08:00 |
|
wshy
|
831e2dc5db
|
Merge pull request #243 from 0112020179/codex/stream-regime-batches
fix(regime): 逐批聚合以降低全量重算内存峰值
|
2026-09-04 12:47:35 +08:00 |
|
wshy
|
84f00d36d3
|
Merge pull request #239 from thinkbuf/feat/backtest-result-kline-click
feat(backtest): clickable K-line popups for trade & picks rows
|
2026-09-04 11:40:53 +08:00 |
|
wshy
|
2140209506
|
Merge pull request #237 from 0112020179/codex/incremental-detail-kline
perf(kline): 个股详情仅增量更新最后一根日 K
|
2026-09-04 11:26:55 +08:00 |
|
wshy
|
4ca655279a
|
Merge pull request #236 from 0112020179/codex/preserve-index-cache-on-failure
fix(index): 指数请求失败时保留上一轮有效缓存
|
2026-09-04 11:26:52 +08:00 |
|
wshy
|
8b12fc7a65
|
Merge pull request #231 from thinkbuf/feat/lots-alerts
feat(lots): holdings-reminder page — per-buy-lot auto stop/profit & expiry monitoring
|
2026-09-03 12:39:58 +08:00 |
|
wshy
|
f8031e16f4
|
Merge pull request #233 from SeerGlaucus/fix/etf-backtest-turnover-rate
fix(backtest): ETF矩阵回测因缺失换手率字段报错
|
2026-09-03 12:39:52 +08:00 |
|
wshy
|
a28f9e852f
|
Merge pull request #228 from thinkbuf/feat/watchlist-import-csv-groups
feat(watchlist): batch import CSV / pasted codes into groups
|
2026-09-02 15:55:18 +08:00 |
|
wshy
|
3a3012f5b6
|
Merge pull request #227 from thinkbuf/feat/webhook-test-message
feat(monitor): add webhook test message button
|
2026-09-02 15:55:12 +08:00 |
|
wshy
|
7619fbcf7a
|
Merge pull request #210 from thinkbuf/feat/kline-preview-nav
feat(kline): 弹窗切股导航 + 邻股预取 + 悬停「至今」+ 外部链接
|
2026-09-02 13:52:38 +08:00 |
|
wshy
|
27d4a5bbca
|
Merge pull request #207 from shuolol/feat/strategy-index-data
feat(strategy): 策略可读取指数/ETF日K (market_data 模块 + 白名单 + 测试)
|
2026-09-02 10:53:12 +08:00 |
|
wshy
|
7b754c0ff4
|
Merge pull request #192 from Marquis03/codex/fix-stocksdk-realtime-normalization
fix(stocksdk): normalize realtime quote units and timestamp
|
2026-09-02 10:53:08 +08:00 |
|
wshy
|
e346e25101
|
Update README.md
|
2026-08-26 14:14:19 +08:00 |
|
wshy
|
17ca24581a
|
Update README.md
|
2026-08-23 21:31:39 +08:00 |
|
wshy
|
9b9538a70f
|
Update README.md
|
2026-08-21 00:29:31 +08:00 |
|
wshy
|
99bdec875d
|
Merge pull request #170 from shy3130/fix/regime-calendar-weekday-align
fix(regime): 修复日历热力图交易日错位到周末列
|
2026-08-06 19:13:03 +08:00 |
|
wshy
|
c278dd3b02
|
Merge pull request #164 from shy3130/fix/regime-trend-polish
fix(regime): 趋势图优化(线宽/阈值线/左右轴/涨停默认隐藏)
|
2026-08-02 23:45:05 +08:00 |
|
wshy
|
8735a36a8c
|
Merge pull request #163 from shy3130/feat/regime-page-enhance
feat(regime): 市场环境页完善(顶部改造+日历热力图+趋势图修复)
|
2026-08-02 23:26:11 +08:00 |
|
wshy
|
201d1b3c33
|
Merge pull request #162 from shy3130/feat/industry-rotation-and-ext-number-format
feat: 行业轮动分析 + 扩展数据列数字格式化
|
2026-08-02 19:22:30 +08:00 |
|
wshy
|
ed38304577
|
Merge pull request #161 from shy3130/feat/strategy-settings-apply-and-inputs
feat(backtest): 高级策略设置新增「应用到策略」+ 修复浮点显示与输入体验
|
2026-08-02 18:26:03 +08:00 |
|
wshy
|
f80c5e3ee3
|
Merge pull request #160 from shy3130/feat/regime-trend-explainable
feat(regime): 趋势图可解释化(综合分主线+子维度曲线+状态背景色带)
|
2026-08-02 17:29:54 +08:00 |
|
wshy
|
fa5583c2cb
|
Merge pull request #159 from shy3130/refactor/regime-scoring-model
refactor(regime): 评分模型重新设计对齐看板情绪分
|
2026-08-02 17:19:36 +08:00 |
|
wshy
|
1d5d18c8be
|
Merge pull request #158 from shy3130/feat/regime-enhance
feat(regime): 市场环境页全面增强(内存可控/开关/画像/美化/分批可配)
|
2026-08-02 16:26:13 +08:00 |
|
wshy
|
03f0ddebf0
|
Merge pull request #157 from shy3130/fix/regime-recompute-and-beta-badge
fix(regime): 修复重算无产出 + 市场环境 beta 标签
|
2026-08-02 12:23:33 +08:00 |
|
wshy
|
8aef435849
|
Merge pull request #156 from shy3130/feat/regime-filter
feat(regime): 市场状态识别系统 + 叠加策略回测过滤器
|
2026-08-02 12:05:58 +08:00 |
|
wshy
|
312c02fb29
|
Merge pull request #155 from shy3130/feat/composite-strategy
feat: 新增叠加策略(composite)支持选股与回测
|
2026-08-02 11:00:52 +08:00 |
|
wshy
|
8ead30037a
|
Merge pull request #153 from shy3130/chore/bump-version-0.1.88
chore: 版本号升至 0.1.88
|
2026-07-31 20:03:47 +08:00 |
|
wshy
|
2d375942db
|
Merge pull request #152 from shy3130/fix/ext-sql-injection-150
fix(security): 修复 ext_columns DuckDB SQL 注入 (#150)
|
2026-07-31 19:56:52 +08:00 |
|
wshy
|
a975e93ecd
|
Merge pull request #151 from shy3130/feat/pinyin-search-and-board-badge
feat(search): 标的搜索支持拼音首字母 + 创业/科创/北交所徽标
|
2026-07-31 19:39:39 +08:00 |
|
wshy
|
84bc6cb875
|
Merge pull request #145 from intfoo/feat/index-support
自选/监控/个股分析支持指数(asset_type="index")
|
2026-07-31 19:19:17 +08:00 |
|
wshy
|
b59be65107
|
Merge pull request #143 from CJ0Hn/feat/watchlist-screenshot-import
fix: 自选截图导入优化
|
2026-07-31 19:11:12 +08:00 |
|
wshy
|
89bb60bdaf
|
Merge pull request #133 from dunmin1980-ux/cursor/tickflow-pro-rate-limit-p0
TickFlow Pro: process-local 80% RPM safety + Phase 1 probe scaffold
|
2026-07-31 19:08:11 +08:00 |
|
wshy
|
ceb53735b5
|
Merge pull request #134 from CJ0Hn/fix/numba-parallel-serialize
fix: 串行化 Numba parallel 内核,避免策略页并发崩溃
|
2026-07-31 19:08:07 +08:00 |
|
wshy
|
16077bb13e
|
Merge pull request #148 from im47cn/fix/test-time-bomb-live-enriched
fix(test): 修复 test_live_enriched_metadata 硬编码日期导致的 time-bomb 失败
|
2026-07-31 19:04:57 +08:00 |
|
wshy
|
fffd89fce0
|
Merge pull request #138 from intfoo/feat/custom-source-timeout-param-ui
自定义数据源超时与请求参数名支持前端配置
|
2026-07-25 22:01:11 +08:00 |
|
wshy
|
ae6cf3bee4
|
Merge pull request #140 from intfoo/fix/index-quotes-change-pct-polling
fix(index-quotes): compute change_pct for custom data source
|
2026-07-25 16:59:11 +08:00 |
|
wshy
|
dd33821acc
|
Merge pull request #141 from HelloByeAll/agent/backtest-position-curve
feat: 回测净值图叠加仓位曲线
|
2026-07-25 16:52:03 +08:00 |
|
wshy
|
c5049d26a7
|
Merge pull request #130 from lytem28/feat-matrix-pr
feat: 大幅优化回测速度以及内存占用
|
2026-07-16 13:25:44 +08:00 |
|
wshy
|
b1845cf491
|
Merge pull request #129 from CJ0Hn/feat/watchlist-screenshot-import
feat(watchlist): 支持从券商自选截图批量导入
|
2026-07-16 00:03:18 +08:00 |
|
 wshyandshy3130
|
963092384f
|
fix(capabilities): 自定义分钟数据源补 KLINE_MINUTE_BATCH 能力 (#126)
issue #121: 用户配了自定义分钟数据源, 但分时图/自动同步/回测等功能
仍提示"需 Pro+"。根因: 能力探测(detect_capabilities)只探测 TickFlow
API Key 档位, 不感知用户本地配的自定义数据源。
修复:
- capabilities.py: CapabilitySet 加 grant() 方法 (不覆盖已有能力)
- policy.py: detect_capabilities 拆成 _detect_tickflow_caps (原逻辑不动)
+ _augment_custom_sources (探测完检查自定义分钟源, 有的话补能力)
补能力后所有 capset.has(KLINE_MINUTE_BATCH) 检查自动通过; 取数函数
内部仍按 preferences.get_minute_data_provider() 分流到自定义源,
不会错误调用 TickFlow。前端读后端返回的 capabilities, 无需改动。
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 22:27:03 +08:00 |
|
 wshyandshy3130
|
e456d018fc
|
feat(strategy): AI生成/自定义编写 tab 加策略开发指南链接 (#125)
两个 tab 的描述行都加了指向 GitHub strategy-guide.md 的链接,
方便用户参考指标列/信号列/filter_history 写法/参数类型等。
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 21:59:56 +08:00 |
|
 wshyandshy3130
|
ee17261feb
|
fix(strategy): parsePyValue 对非 JSON 值兜底, 修复 AI 修改 date 参数崩溃 (#124)
get() 对字符串值去外层引号后传给 parsePyValue, 字符串型 default
(如 date 类型的 "2024-01-01") 去引号变成 2024-01-01, JSON.parse
在 position 4 报错 → 整个 StrategyBuilderDialog 白屏。
parsePyValue 加 try/catch: JSON.parse 失败时返回原始字符串。
数字/布尔不受影响, 字符串值兜底为字符串。
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 21:52:24 +08:00 |
|
 wshyandshy3130
|
2f762b3bcc
|
fix(strategy): import 白名单加 datetime + date 参数处理补进文档 (#123)
问题: ai_single_yang_unbroken 策略用 from datetime import date 做
date 类型参数转换, 被安全修复的 import 白名单(只允许 polars)拦截,
策略加载失败消失。同时 date 列(Polars Date)与字符串参数直接比较
报 InvalidOperationError 导致 500。
修复:
- ai_generator.py: import 白名单加入 datetime (纯日期运算, 无文件/
网络/进程能力, 安全)。验证 os/sys/subprocess 仍被拦。
- strategy-guide.md: params type 补全(float/int/bool/select/date);
filter_history 要点新增 date 参数必须 fromisoformat 转换的代码示例
- strategy-guide-compact.md: 同步补充 (AI 运行时实际用的文档)
从源头避免 AI 生成的 date 类型参数策略再犯字符串 vs Date 列比较错误。
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 21:47:26 +08:00 |
|
 wshyandshy3130
|
f470e46f2b
|
fix(security): 策略代码 RCE 漏洞三层修复 (#122)
漏洞链 (安全研究员 Aeon 报告):
1. StrategyCodeSaveRequest.strict 由客户端控制, 传 false 完全跳过安全校验
2. AST 名单只拦 ast.Name 直接调用, dunder 遍历可绕过
((lambda:0).__globals__["__builtins__"]["__import__"]("os"))
3. _load_file 用 exec_module 执行策略文件, 执行侧零校验
=> 未认证局域网用户可写入任意代码并立即执行 (RCE)
修复:
- strategy.py: 移除 strict 字段, 安全校验无条件执行 (第1层)
- ai_generator.py: _validate_safety 加固, 拦截 dunder 属性访问
(__globals__/__builtins__/__class__/__subclasses__ 等) 和字符串下标
访问 (第2层)
- engine.py: _load_file 在 exec_module 前读文件内容跑一次 _validate_safety,
防止策略文件被直接篡改绕过 API 校验 (第3层 纵深防御)
前端: api.ts 移除 strict 参数, StrategyBuilderDialog/StrategyPoolDialog
移除 strict:true 传参 (前端本就全部传 true, 行为不变)
验证: PoC 三种攻击 payload 全部拦截, 正常策略(只import polars)无误杀
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 21:32:39 +08:00 |
|
 wshyandshy3130
|
0fba9eb57b
|
chore: 版本号升至 0.1.85 (#119)
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 18:54:17 +08:00 |
|
 wshyandshy3130
|
70a4aad010
|
feat(monitor): 个股通知带行业/概念 ext 标签 + 全局配置 (#118)
监控中心顶部加全局配置(齿轮), 选择要在个股通知里展示的 ext 字段
(默认概念 ext_gn_ths + 行业 ext_hy_ths)。开启后触发记录卡片和推送
toast 统一显示行业(蓝)/概念(橙)标签。
架构: 源头富化 — 后端 SSE 推送前 (_enrich_alerts_ext) 用
_load_ext_value_maps (带 mtime 缓存) 按 symbol 富化; GET /api/alerts
读取时同样富化。前端零额外请求。
配置支持细粒度裁剪:
- 字段下拉按扩展表分组 (optgroup)
- 显示前N个 (maxTags), 留空=全部
- 隐藏指定位置 (hiddenIndices), 点数字划掉
数据结构 {field, maxTags, hiddenIndices} 向后兼容旧字符串格式。
后端:
- preferences.py: get_monitor_ext_fields + _normalize_ext_field
- settings.py: RealtimeMonitorConfigIn + get_preferences 加字段
- quote_service.py: _enrich_alerts_ext SSE 推送前富化
- alerts.py: list_alerts 加 ext_columns 参数
前端:
- api.ts: MonitorExtFieldItem 类型 + alertsList extColumns 参数
- Monitor.tsx: 齿轮入口 + 配置弹窗 + 卡片标签行
- AlertToast.tsx: toast 底行加标签
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 18:49:23 +08:00 |
|
wshy
|
002fb9387e
|
fix(docker): Codex CLI 挂载路径可覆盖 + 版本号单点维护 (#117)
PR #116 review 遗留两项非阻塞建议的后续修复:Windows 挂载路径可覆盖 + 版本号单点维护。
|
2026-07-14 18:16:27 +08:00 |
|
wshy
|
644cf8648d
|
Docker 环境支持 Codex CLI (#116)
解决 Docker 容器内无法读取 codex 命令的问题:多阶段构建提取原生二进制 + 只读挂载主机登录态 + 适配 loopback local-access provider。
|
2026-07-14 18:07:38 +08:00 |
|
 wshyandshy3130
|
d8c2081679
|
fix(quote): 最后获取时间持久化, 关闭开关/重启后仍显示 (#115)
_fetched_at 原为纯内存变量 (init 0.0), 进程重启即归零 → last_fetch_ms
变 null → 数据页"最后获取"显示"—"。用户关闭实时开关若伴随重启
(开发热重载/部署), 就看不到上次拉取时刻。
改为持久化到 preferences.json:
- __init__ 启动时读回 last_fetch_ms 作为 _fetched_at 初始值
- _fetch_quotes 成功后 (全市场 + 自选股两处) 写入 preferences
- 放锁外调用, 失败不影响主流程 (内存值已更新)
前端 QuoteConfigCard 本就无条件渲染该行, 无需改动。
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 16:46:23 +08:00 |
|
 wshyandshy3130
|
d99112c160
|
分时图实时刷新: 日期修复 + 间隔可配 + 对话框实时 + 自选刷新图标 (#114)
* fix(kline): 分时图盘中显示昨天而非今天
get_minute_batch 的日期选择存在死循环: trade_date=date.today() 后立即
if trade_date==date.today() (恒真), 无条件用 latest_minute_date_global()
覆盖今天; 但批量实时补拉不落库, 该值盘中恒返回昨天 -> 永远回退到昨天 ->
expected=240 判定昨日完整 -> 不触发今天补拉。
改为仅在真正非交易日回退 (周末 + 收盘后无今日日K 的节假日), 盘中保持
今天让 completeness 检查触发实时补拉。同时全量 date.today()/datetime.now()
改用北京时间 cn_today()/cn_now(), 与 quote_service/monitor 等一致。
影响: 自选列表分时列 + 单股详情分时图。
* feat(settings): 分时图刷新间隔可配置 (默认6s, 范围3-60s)
原写死 15s 轮询, 现可在 实时监控设置 -> 分时图刷新 卡片用滑块调节。
复用 minute_intraday_refresh 偏好链路, 新增 minute_intraday_refresh_interval
字段 (preferences + settings API + 前端 Preferences 接口)。
- preferences.py: getter 默认6s clamp[3,60] + set/get config 接入
- settings.py: RealtimeMonitorConfigIn 字段 + get_preferences 返回
- Monitoring.tsx: 滑块控件 (参考行情轮询滑块, 2s 防抖保存)
- Watchlist/Screener: 15_000 -> interval*1000, fallback ?? 6
* feat(dialog): 个股对话框日K/分时实时刷新
日K走 SSE 精准刷新: 对话框打开时注册焦点股票, quotes_updated 推送时
invalidate ['kline', symbol], 后端 _maybe_inject_live_candle 只读内存
不调 TickFlow, 秒级零成本。关闭/切股自动注销焦点。
分时走轮询: 复用分时刷新开关 + 间隔偏好, 经 StockPanel.refetchIntervalMs
透传到 StockIntradayChart。分时端点数据不完整会调 TickFlow, 不接 SSE
避免打爆限流。
不影响回测弹窗 (不注册焦点、不传间隔)。
* feat(watchlist): 分时列表头加刷新图标 (与策略列表一致)
分时列可见 + 未自动刷新时显示手动刷新按钮 (点击 refetch, 加载旋转);
自动刷新中显示持续旋转小图标提示。逻辑/样式对齐 ScreenerTable。
* fix(badge): 真假涨停修正弹层被父级裁剪遮挡
弹出层原用 absolute 定位, 被看板卡片父级的 overflow-hidden +
backdrop-blur containing block 裁剪/遮挡。改用 createPortal 渲染到 body,
基于徽章 getBoundingClientRect 计算弹层坐标, 脱离父级裁剪。
---------
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-14 15:46:18 +08:00 |
|
wshy
|
77c0c643b2
|
Update README.md
|
2026-07-14 11:21:16 +08:00 |
|
wshy
|
5a483501e8
|
Merge pull request #113 from shy3130/fix/intraday-refresh-and-voice-pct
fix: 分时刷新开关不生效 + Pro+默认开启 + 语音涨跌幅漏乘100
|
2026-07-13 22:29:13 +08:00 |
|
wshy
|
933d216c83
|
Merge pull request #111 from shy3130/fix/dev-ps1-utf8
fix(dev): dev.ps1 Start-Job 子进程强制 UTF-8, 修后端中文日志乱码
|
2026-07-13 20:51:59 +08:00 |
|
wshy
|
a0fec8a754
|
Merge pull request #110 from shy3130/fix/wf-nan-rendering
fix(walkforward): 汇总数值 NaN/Infinity 渲染兜底
|
2026-07-13 18:54:46 +08:00 |
|
wshy
|
79b86b26a0
|
Merge pull request #105 from im47cn/fix/task-reconnect-cleanup
fix(optimizer): SSE 放弃时清 localStorage + JSON 解析失败告警
|
2026-07-13 18:49:24 +08:00 |
|
wshy
|
b869f3a552
|
Merge pull request #104 from im47cn/feat/wf-optimization
feat(walkforward): 滚动窗口 walk-forward 优化 — IS 优化 + OOS 验证
|
2026-07-13 18:48:47 +08:00 |
|
wshy
|
31596824d7
|
Merge pull request #109 from shy3130/fix/ext-concepts-cast-and-meta-normalize
fix: 扩展数据 List cast 报错 + AI 策略 META 规范化失败
|
2026-07-13 18:40:49 +08:00 |
|
 wshyandshy3130
|
697ff2a181
|
fix(compliance): reinforce research-only boundaries (#108)
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-12 22:42:38 +08:00 |
|
 wshyandshy3130
|
a7acc5e49d
|
fix(settings): 实时监控设置页左右两列等宽 (#102)
grid-cols-[1fr_1fr] 的 1fr 等价于 minmax(auto,1fr),左列较长内容
撑出最小宽度挤压右列;改用 minmax(0,1fr) 强制严格等分。
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-11 20:31:33 +08:00 |
|
wshy
|
b53aa5c8d3
|
Update README.md
|
2026-07-11 18:58:10 +08:00 |
|
 wshyandshy3130
|
fcae7f5446
|
feat(dashboard): 看板间距收紧、卡片美化、板块标识与连板个股名称 (#101)
- 收紧看板全局间距(卡片间 gap/外层 padding 降至 6px),信息密度提升
- 卡片统一加微投影/毛玻璃/hover 浮起效果,标题加渐变指示条
- 四榜与概念/行业热度龙头个股加创/科/北板块标识
- 涨停梯队(后端 tiers 带 stocks)及最高连板卡片:≤3 只时显示个股名称
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-11 16:57:23 +08:00 |
|
wshy
|
33212a7d95
|
Merge pull request #100 from shy3130/feat/voice-broadcast
feat(voice): 监控告警语音播报 v0.1.84
|
2026-07-11 11:22:44 +08:00 |
|
wshy
|
f1cc948eb2
|
Merge pull request #99 from shy3130/fix/datepicker-portal-overflow
fix(datepicker): 弹层改用 Portal+fixed 定位, 修复被布局遮挡
|
2026-07-11 10:58:31 +08:00 |
|
wshy
|
49a259d94d
|
Merge pull request #95 from im47cn/perf/panelcache-single-flight
perf(panelcache): single-flight 消除并发同 key 缓存踩踏
|
2026-07-11 10:54:39 +08:00 |
|
wshy
|
d1a229b7ab
|
Merge pull request #98 from shy3130/feat/ext-data-default-enabled
feat(ext-data): 概念/行业定时拉取默认开启 + 修复启动顺序
|
2026-07-11 10:44:59 +08:00 |
|
wshy
|
8c71e954de
|
Merge pull request #97 from shy3130/fix/ai-kimi-reasoning-temperature
fix(ai): 兼容 reasoning 模型 temperature 限制 + 透出上游真实错误
|
2026-07-11 10:22:17 +08:00 |
|
 wshyandshy3130
|
773cd2fe12
|
chore(polling): 调整各档位轮询间隔范围 (#96)
* fix(ai): 兼容 reasoning 模型 temperature 限制 + 透出上游真实错误
Kimi kimi-k2.7-code 等 reasoning 模型拒绝非约定 temperature (Moonshot
报 "only 1 is allowed for this model"), 之前无条件下发导致 400 配置失败。
- 捕获 temperature 相关 400 后自动去掉 temperature 重试一次 (非流式 + 流式),
不再依赖模型名猜测, 对任意 reasoning 模型稳健
- _format_openai_error 优先透出上游真实 detail, 仅无可读 detail 时回落到
状态码通用文案, 避免吞掉 "model not found" 等排障关键信息
- 前端 Kimi 预设 model 更正为 kimi-k2.7-code
* chore(polling): 调整各档位轮询间隔范围
实时行情 (quote_service):
- pro 最小间隔 2s → 3s, starter 3s → 6s (expert/free 不变)
- DEFAULT_INTERVAL 10s → 6s
五档盘口 (depth_service):
- expert 区间上限 300s → 120s
- 默认值 20s → 10s
前端兜底默认值同步 (Data/Monitoring/DepthConfigCard):
- quote interval fallback 10→6, min 5→6
- depth interval fallback 20→10, expert hi 300→120
---------
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
|
2026-07-11 10:22:11 +08:00 |
|
wshy
|
cfc48ce424
|
Update README.md
|
2026-07-09 21:34:52 +08:00 |
|
wshy
|
6076074ac0
|
fix(realtime): unify turnover rate units (#93)
|
2026-07-09 19:14:50 +08:00 |
|