Justin Gu
e374a0da28
release: v1.32.6 — 两周改动深度审查全面修复(回测口径三件套/LLM 安全加固/涨停价舍入/时区统一/缓存与竞态等 58 处)
对 v1.21→v1.32.5 的 249 文件 4.2 万行改动做六路专项审查,本轮落地全部发现:
回测正确性:组合收益 fillna(0) 虚增、轮动停牌日过期价成交、单标的 WF 逐窗指标
被预热区稀释(三件套均带先红后绿回归);worst_drawdown 方向、grading 容错、
组合体检品种费率、寻优端点费率透传。
安全:LLM api_url 仅 http/https 且禁 userinfo(封死 file:// 读取与 Key 外送链)、
错误响应不回显原始 body、响应体 2MB 上限、配置原子写、坏配置字段级防御。
数据:涨跌停价整数分币舍入(67/318/90 个价位错 1 分漏判清零)、交易时段/采样/
provisional 统一沪时区、warehouse 增量缺口自动全量重拉、provisional 定点转正、
baostock 真故障抛错 + W/M 去 tradestatus(实测服务端报错,周月兜底此前从未工作)
+ 指数 vol 股→手(实测锚定)、ccpm 结构变更抛错。
Web API:缓存键补 count/vipdoc、NaN 清洗先于缓存、count>800 分页取全量、
submit 透传真实状态、pending 不再被淘汰成幽灵、watchlist/server 入参约束。
公式:FILTER 去副作用、0-1 值域误判收严、递归深度上限、REF 负移位显式禁止。
前端:4 处请求竞态序号守卫、Sparkline viewBox、北交所 market=2 映射、
空数据缓存死角、AI 弹窗卸载中止轮询、量能/资金日历口径修正。
CLI/CI:warehouse sync 失败 exit 1、参数校验干净报错、release 真实发布 SHA256、
CI 超时与缓存、spec 补 baostock 前提。
约 60 条回归测试先红后绿;pytest 1820 全过,ruff/mypy/vue-tsc/node --test 全绿。
2026-09-06 22:16:48 +08:00
..
2026-04-11 19:55:19 +08:00
2026-09-04 12:42:44 +08:00
2026-09-06 22:16:48 +08:00
2026-05-22 22:44:45 +08:00
2026-06-12 21:10:50 +08:00
2026-09-06 22:16:48 +08:00
2026-06-10 15:03:41 +08:00
2026-09-03 03:07:57 +08:00
2026-07-04 00:08:38 +08:00
2026-06-12 20:59:59 +08:00
2026-09-01 22:16:44 +08:00
2026-09-06 22:16:48 +08:00
2026-07-04 00:08:38 +08:00
2026-09-06 02:42:34 +08:00
2026-07-10 15:17:00 +08:00
2026-09-06 22:16:48 +08:00
2026-06-12 20:47:03 +08:00
2026-07-09 20:16:12 +08:00
2026-06-09 16:43:44 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-02 20:19:17 +08:00
2026-09-02 17:12:00 +08:00
2026-05-22 04:19:07 +08:00
2026-06-11 22:56:23 +08:00
2026-08-26 15:21:35 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-05 03:30:52 +08:00
2026-09-06 22:16:48 +08:00
2026-06-10 15:03:41 +08:00
2026-06-11 02:25:42 +08:00
2026-06-17 18:17:32 +08:00
2026-09-06 22:16:48 +08:00
2026-07-02 03:37:37 +08:00
2026-06-14 23:58:24 +08:00
2026-07-02 03:37:37 +08:00
2026-06-30 15:02:27 +08:00
2026-05-21 23:21:21 +08:00
2026-05-21 23:21:21 +08:00
2026-05-21 23:21:21 +08:00
2026-09-01 17:45:07 +08:00
2026-07-07 20:36:44 +08:00
2026-07-07 20:13:39 +08:00
2026-09-01 22:56:38 +08:00
2026-09-03 00:46:28 +08:00
2026-09-05 11:42:04 +08:00
2026-09-01 17:58:12 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-08-05 15:58:00 +08:00
2026-06-10 15:03:41 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-02 11:53:53 +08:00
2026-09-06 22:16:48 +08:00
2026-07-13 15:59:28 +08:00
2026-06-10 15:03:41 +08:00
2026-07-04 02:11:27 +08:00
2026-06-10 15:03:41 +08:00
2026-06-30 15:02:27 +08:00
2026-09-06 22:16:48 +08:00
2026-09-03 02:02:19 +08:00
2026-07-03 22:42:04 +08:00
2026-07-04 00:17:06 +08:00
2026-07-03 15:42:06 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-04 12:29:09 +08:00
2026-09-04 12:17:36 +08:00
2026-09-06 22:16:48 +08:00
2026-07-09 20:16:12 +08:00
2026-07-10 15:17:00 +08:00
2026-06-13 21:21:33 +08:00
2026-09-06 22:16:48 +08:00
2026-08-26 15:00:53 +08:00
2026-09-02 10:44:09 +08:00
2026-09-06 22:16:48 +08:00
2026-09-01 17:45:07 +08:00
2026-09-06 22:16:48 +08:00
2026-09-02 20:19:17 +08:00
2026-09-01 23:21:42 +08:00
2026-06-11 02:34:00 +08:00
2026-07-02 03:37:37 +08:00
2026-09-02 20:19:17 +08:00
2026-06-25 03:46:57 +08:00
2026-09-06 22:16:48 +08:00
2026-08-21 16:57:12 +08:00
2026-06-15 00:31:13 +08:00
2026-07-04 20:50:07 +08:00
2026-06-13 21:09:55 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-06 22:16:48 +08:00
2026-09-02 20:19:17 +08:00
2026-06-07 21:13:49 +08:00
2026-08-31 20:43:35 +08:00
2026-06-07 21:13:49 +08:00