Commit Graph
3 Commits
Author SHA1 Message Date
shy3130 918c7ade7e refactor(core): 策略与信号全面去内置化, 转为用户自定义定义
- 策略: 引擎只加载 data/strategies/{custom,ai,composite} 与研究模板目录,
  原 25 个内置策略一次性迁移为用户自定义文件(ID 不变, 引用零迁移);
  研究模板移至 app/strategy/research, 打包 spec 同步; 新装环境策略库为空
- 信号: 管线不再硬编码任何信号表达式; 涨跌停判定价成为运行时列
  limit_up_price/limit_down_price(生效价∓0.005 容差), 20 个信号转为
  data/user_data/custom_signals 定义(显式 column 沿用 signal_* 原列名);
  依赖解析/注入顺序/当日路径 prev-join 全部定义驱动; 语义统一为历史路径
  口径(顺带修正当日路径 BOLL 比较符与翘板/炸板空值两处既有偏差)
- 前端: 信号库单列表(全部可编辑), SignalPicker/监控选项/信号标签全走
  定义接口; 回测页新增免责声明(模拟性质/数据源准确性不作保证/不构成
  投资建议)
- 测试: 25 个策略夹具与 20 个信号种子入库 tests/fixtures, 受影响测试
  全部自包含化(不依赖运行目录用户数据); 77 万行 MA 死叉新旧表达式对拍
  逐行一致; 回测实跑 45 笔卖点信号出场验证矩阵链路
- 同批包含工作区既有进度: 策略结果 ext 列同日投影修复(含测试)、数据源插件、fuyao/auth/api_gateway/data_integrity 调整、README 信号库
  描述与 strategy.md 导入路径补充

验证: 后端 2592 passed(空数据目录 CI 模拟 2588 passed, 4 例为模拟环境
伪影复验排除); 前端 vitest 125 passed + tsc 0 错 + vite build 通过
2026-10-10 21:10:44 +08:00
shy3130 b4ca8b43ab fix(screener): 单跑刷新缓存保留 warnings; 分支变基回 main
复审发现两处问题:

1. _update_cache_strategy 重建缓存条目时只保留 total/as_of/rows 白名单,
   run_preset 单跑会把数据不足提示冲掉 (PR 描述声称随缓存读出, 实际不成立)。
   现在携带 warnings 并补回归测试。
2. 分支误基于 #311 分支创建, diff 混入裸符号修复全部改动 — 已变基回 main,
   本 PR 只含选股提示相关 4 个文件。
2026-09-14 14:03:46 +08:00
shy3130 cf915c82c4 feat(screener): 数据不足时选股显式提示, 盘后管道薄库 WARN
空库首跑/仅当日实时覆写 1 天的库, 指标暖机不足, 选股静默全 0 且
无任何信号 (#303)。

- enriched_history_days: 按 date=* 分区目录计数本地覆盖交易日数
  (目录列举 O(天数), 不读 parquet 内容, 不进指标计算路径)
- ScreenerService.coverage_warnings: 覆盖低于暖机需求时生成人话警告;
  策略运行用 engine.required_history_bars 精确值, 自定义 SQL 用通用
  30 天窗口
- /run /run_preset /run_all 响应附带 warnings 字段 (1d 周期),
  run_preset/run_all 同时写入盘后缓存随 get_cached 读出
- 盘后管道收尾检测 enriched 覆盖过薄 (<30 天) 时打 WARN 引导全量回填,
  result 新增 enriched_total_days

Closes #303
2026-09-14 14:02:18 +08:00