Gundy
|
3d4d20de3b
|
fix(auth): 仅在直连 peer 为内网时信任 X-Forwarded-For, 防伪造绕过认证
公网请求带 X-Forwarded-For: 127.0.0.1 可冒充内网, 绕过三道防线:
- 未设密码时的「仅本机/内网可访问」中间件闸门 (main.py)
- /api/auth/setup 的本机限制 (公网抢占设密码)
- 登录限流按 IP 计数 (轮换 XFF 无限暴破)
另修复限流器: 锁定过期后重置失败计数 (原先过期后每失败一次
立刻再锁 5 分钟), 并在条目超 1000 时清理过期记录防内存膨胀。
|
2026-07-03 14:11:26 +08:00 |
|
shy3130
|
c1a5a6c367
|
Revert "fix: 修复海外服务器部署后交易时段时区误判为休市"
This reverts commit f02a88ebaa.
|
2026-07-03 14:07:26 +08:00 |
|
shy3130
|
f02a88ebaa
|
fix: 修复海外服务器部署后交易时段时区误判为休市
- 新增 backend/app/timezone.py 统一上海时区入口(ZoneInfo + UTC+8 兜底)
- quote_service / depth_service 的 _is_trading_hours() 改用显式 Asia/Shanghai
- Dockerfile 加 ENV TZ=Asia/Shanghai + tzdata,docker-compose.yml 加 TZ 环境变量
- 代码与容器双保险,解决裸 datetime.now() 在 UTC 容器下永远判为休市的问题
|
2026-07-03 13:31:33 +08:00 |
|
shy3130
|
7c51bf5054
|
refactor(docs): 策略提示词文档统一归入 prompts/,docs/ 专放使用指南
将 4 个策略运行时文档(strategy-guide/step1/step2/example)从 docs/
迁至 backend/app/strategy/prompts/,与运行时加载路径一致;docs/
回归「项目使用指南与配置说明」定位。
- prompts/ 现自包含 4 个 md,guide 内对 example 的相对链接可正确解析
- 更新 README 与前端 StrategyBuilderDialog 的引用路径
- docs/ 保留 deploy-password.md / screenshots / zhihu 等面向人类的文档
承接 #41 Docker 文档缺失修复
|
2026-07-03 11:03:24 +08:00 |
|
shy3130
|
56276384e5
|
fix(strategy): 修复 Docker 镜像中 AI 策略提示词文档缺失
将运行时依赖的 3 个提示词文档(strategy-guide.md / step1 / step2)
从 docs/ 复制到 backend/app/strategy/prompts/,使其随 COPY backend/app
自动进入镜像;并将 GUIDE_PATH/_DOCS_DIR 改为相对当前文件的 prompts/,
路径在开发环境与 Docker 容器中解析一致。
修复 #41
|
2026-07-03 09:51:30 +08:00 |
|
shy3130
|
c7ad860dba
|
fix: 修复自定义策略删除导致策略池清空及删除失败静默问题
- bug2(删除后策略全没): prune 仅在拉取成功且非空时执行,加载中/失败/空列表不碰池
根因: 删除触发 engine.reload() 重扫所有文件,任一文件 import 失败被静默跳过,
前端拿到残缺列表后 prune 把池中有效 ID 永久清除并写 localStorage
- bug1(自定义策略删不掉): handleDelete 不再静默吞错误,失败时显式提示并保持弹窗打开
- ai_save 守卫回归: 放宽前缀允许 ai_/custom_,保留 path traversal 字符白名单(安全核心未动)
修复「AI 修改 custom 策略」因 strategy_id 非 ai_ 前缀被 400 拒绝
- 引擎加载失败可见化: _load_all 收集 load_errors,/api/screener/strategies 返回,
前端 toast 提示具体失败文件,不再静默消失
- 同步补全 ai_generator _SYSTEM_PREFIX 三条铁律(与 bbc92c4 docs 一致)
|
2026-07-02 22:19:46 +08:00 |
|
shy3130
|
d4dcbb1797
|
chore: 版本号升至 0.1.70
|
2026-07-02 17:45:30 +08:00 |
|
shy3130
|
33a7be0deb
|
feat: 连板梯队封单监控卡片 UI 与 API
- monitor_rules API: RuleModel 加 metric/threshold 字段; ladder 类型
需 DEPTH5_BATCH 能力校验; 加模拟触发与真实触发端点供验证
- 连板梯队卡片: 右上角监控按钮 + 设置菜单 (段控指标/阈值+单位/
胶囊推送/权限提示); 开启监控的卡片置顶 + 背景区分
- 推送默认取全局设置; 单位默认万手/亿元
- 非付费用户可见功能入口但保存禁用, 提示后续适配免费数据源
|
2026-07-02 17:22:42 +08:00 |
|
shy3130
|
000a9ead77
|
feat: 连板梯队封单监控规则引擎
- monitor_rules 新增 ladder 类型 (封单量/封单额 <= 阈值预警)
- monitor 加 _evaluate_ladder: 封单判断 + 炸板/翘板预警, message 体现封单量
- monitor 加 has_rule_type 供评估前判断是否需注入特殊数据
- quote_service: 有 ladder 规则时从 depth_service 注入封单量到 enriched
|
2026-07-02 17:22:32 +08:00 |
|
shy3130
|
255688fab4
|
feat: 概念涨幅轮动 AI 分析
- 新增 concept_rotation_analyzer: 从涨幅排名矩阵预计算轮动信号
(主线/新晋/退潮/机构vs游资), 结合大盘背景生成分析报告
- rps API 加 /rotation-analyze 流式端点 (NDJSON)
- 轮动对话框: AI 占位替换为流式 Markdown 报告区 + 自动滚动
- 删除搜索框, 新增选中概念排名行 (前10红/后10绿)
|
2026-07-02 17:22:16 +08:00 |
|
Yuki Noah
|
d4a834e942
|
Normalize OpenAI-compatible AI base URLs (#35)
|
2026-07-02 12:35:06 +08:00 |
|
shy3130
|
09ec2a55c3
|
fix: 当日涨跌停判定改用维表 limit_up/limit_down 权威值
原逻辑用 _limit_price(prev_close, 推断涨幅) 自算理论涨停价, 涨幅靠 symbol
前缀 + ST 名字匹配推断, 存在两类缺陷:
1. 浮点精度: 自算涨停价比真实价多 0.01, 超出 0.005 容差导致漏判 (12 只)
2. ST 匹配漏洞: 名字含 "S" 不含 "ST" (如 S佳通) 被漏判 ST 5% 档 (1 只)
改为优先读 instruments 维表的 limit_up/limit_down (交易所级别精确价),
仅新股 (limit_up 为 null 或哨兵 100000) 回退自算。输出 schema 不变,
下游 depth_service/screener/market_overview 零改动。
历史路径 compute_limit_signals 不动 (instruments 仅存当天 as_of)。
|
2026-07-02 12:28:13 +08:00 |
|
shy3130
|
e7615fb9e6
|
fix: 扩展数据拉取修复与连板梯队queryKey修复
|
2026-07-01 23:02:37 +08:00 |
|
shy3130
|
5a9fa9b255
|
feat: 概念涨幅RPS轮动分析
|
2026-07-01 17:48:28 +08:00 |
|
shy3130
|
ff9d7a9ac4
|
fix: filter_history 策略(反包等)实时监控可触发通知
|
2026-07-01 14:38:40 +08:00 |
|
shy3130
|
8127bd3c99
|
chore: 版本号升至 0.1.68
|
2026-07-01 11:27:30 +08:00 |
|
shy3130
|
ce5c705ab4
|
fix: 跨日后连板梯队整体少算一档
根因: live_agg 缓存的昨日连板数 (_prev_consec_up/down) 跨日不失效,
盘中增量计算永远基于前天基准, 导致次日开盘连板数整体 -1。
- get_live_agg() 加跨日失效守卫: date.today() 变化时按需重建
(fast-path 仅比较 today ~0.24ms/次, 跨日当天一次性磁盘校验)
- cron 盘后管道补 refresh_cache(), 与手动触发 /api/pipeline/run 对齐
(此前 cron 路径漏了这步, 盘后落盘的新 enriched 不反映到内存缓存)
|
2026-07-01 11:19:32 +08:00 |
|
shy3130
|
e4f0a95ca2
|
fix: 升级 Expert Key 后财务页「全部同步」无反应
启动时无 FINANCIAL 能力导致调度器 _capset 为 None, 后续在设置页更新 Key
时 app.state.capabilities 已刷新但调度器未同步, trigger() 仍报
no FINANCIAL capability 而拒绝同步。新增 update_capabilities 并在设置 API
刷新能力时同步推给调度器; 前端对 started:false 一律给出提示, 不再静默。
|
2026-06-30 22:30:52 +08:00 |
|
shy3130
|
68841af662
|
feat: 定时复盘飞书推送 + SSE 实时进度
- 定时复盘支持推送到飞书(卡片消息, 完整报告), 渠道多选(飞书可选, 微信开发中)
- 推送开关独立常驻, 与定时/实时行情解耦; 手动/定时生成都可推送
- 定时复盘改流式生成, 通过 SSE(review_progress)实时推给前端, 开着页面可见边生成边显示
- 修复定时任务协程未 await 的 bug(lambda 包裹 async → 改传函数对象 + args)
- LLM 断流自动重试(最多2次), 后端归档 + 飞书推送, 异常兜底通知前端
- 复盘定时下限改为 15:00, 默认 15:10
- 版本号 0.1.66 → 0.1.67
|
2026-06-30 17:28:18 +08:00 |
|
Lzwaang
|
2d86dea721
|
Avoid copying Codex env file
|
2026-06-29 22:53:36 +08:00 |
|
Lzwaang
|
ab9480b3f3
|
Harden Codex CLI workspace isolation
|
2026-06-29 22:44:31 +08:00 |
|
Lzwaang
|
ec6380376d
|
Add Codex CLI AI provider
|
2026-06-29 22:32:58 +08:00 |
|
shy3130
|
5d4d643bd8
|
fix: 同步后端 __version__ 到 0.1.66
|
2026-06-29 17:53:29 +08:00 |
|
shy3130
|
47a87fca2b
|
feat: 环境变量预置访问密码 + 飞书推送文档
|
2026-06-29 17:41:32 +08:00 |
|
shy3130
|
a72445d782
|
fix(pipeline): 修复盘后管道除权因子拉取范围逻辑
daily_pipeline 除权因子改用日K范围回填 (实时增量模式兜底最近数日),
移除 max_date/incremental 依赖;kline_sync 修复 _normalize_adj_factor
重复列重命名崩溃, 新增 fetch_adj_factor_single 单股拉取;
kline.py fallback 改用 compute_enriched 应用复权;
index_sync 指数/ETF 日K同步增加批次进度回调;
同步指数日K步骤输出详细日志。
|
2026-06-29 17:17:44 +08:00 |
|
shy3130
|
37934091ac
|
feat(notify): 推送通知接入飞书 Webhook
新增 webhook_adapter 飞书群机器人推送 (含签名校验);preferences/settings
增加 feishu_webhook_url/secret 与 webhook_enabled_default (新建规则默认推送)
配置与端点;Monitoring 设置页重构为「推送通知」卡片 (渠道列表+飞书地址折叠
+默认渠道勾选);RuleEditor 规则编辑器支持单条规则勾选飞书。
QMT/ptrade 渠道文案统一改为「待定」。
|
2026-06-29 17:17:33 +08:00 |
|
shy3130
|
9dbd32246c
|
feat(backtest): 风控新增固定止盈 + 优化回测范围
风控: MatcherConfig 增加 take_profit_pct, 单标的与组合引擎风险检查新增
涨破止盈线卖出逻辑 (退出原因 take_profit);strategy.py 透传 overrides,
api/strategy.py 与前端类型暴露 take_profit;风控 tab 增加止盈输入框,
摘要/结果头/退出标签同步展示;修复未设止损时止盈检查被跳过的 bug。
回测范围: StockPoolPicker 输入框右侧增加「导入自选」「清空」按钮与
「当前范围」指示器, 移除冗余的「留空=全市场」提示。
|
2026-06-29 17:17:20 +08:00 |
|
shy3130
|
cd76796a5c
|
feat(monitor): 触发记录展示命中条件与当前价位
告警事件落盘时增加 conditions + logic 条件快照, 经 quote_service 透传到
SSE 推送;前端触发记录详情行渲染命中条件与现价, 替代原先仅显示
「信号触发」的通用文案。
|
2026-06-29 17:17:08 +08:00 |
|
shy3130
|
d123fa723e
|
chore: bump version to 0.1.64
|
2026-06-28 20:11:35 +08:00 |
|
shy3130
|
69cd7af8d9
|
feat: 新增访问密码认证(首次本机设密码 + 公网防护)
- 后端: PBKDF2 密码哈希 + 会话 token(auth.json 存储, 零数据库)
- 中间件: 未设密码时本机可设/公网拒绝(防裸奔+防抢占), 已设密码后 401 拦截
- 5个 API: status/setup/login/logout/change-password, 含本机限制+登录限流
- 前端: 登录页/设密码页 + 全局 401/403 拦截跳转
- 安全: HttpOnly cookie + 5次失败锁5分钟 + 改密码清会话
|
2026-06-28 20:02:00 +08:00 |
|
shy3130
|
5585f445fc
|
chore: bump version to 0.1.63
|
2026-06-28 18:20:57 +08:00 |
|
shy3130
|
8a8cd746dc
|
feat: — 数据目录/实时监控/定时复盘/老CPU兼容
1. 桌面客户端体验优化,Polars 兼容内核 (老 CPU 兼容)
2. 自选页实时监控优化
3. 个股监控逻辑优化
4. 新增定时复盘
6. 其他: 修复 settings.py 中 HTTPException 未 import 的既有 bug
|
2026-06-28 18:08:52 +08:00 |
|
shy3130
|
b79fe60a56
|
ci(docker): 优化镜像构建工作流 + 清理未启用的版本自增脚本
在 #22 (Docker 镜像构建工作流) 基础上的三点优化:
1. CI 关闭国内镜像源(USE_CN_MIRROR=0): GitHub runner 在海外,
让构建直连官方 npm/PyPI 反而更快更稳; 本地/国内手动 docker build
仍走 Dockerfile 默认的 CN 镜像。
2. 新增 .dockerignore: 排除 .git/data/node_modules/docs/screenshots 等
非构建必需文件, 减小上下文体积、加速传输。
3. 叠加 tag 触发 + build-push-action v5→v6: 打 v* tag 时额外产出
带版本号镜像(如 :v0.1.62), 便于固定回溯。
清理:
- 删除 scripts/bump_version.py (prepare-commit-msg hook 从未实际安装,
属于死代码; 发版版本号改为手动维护, 与方案 B 一致)。
- 同步修正 backend/app/api/data.py 中对该脚本的过时引用注释。
|
2026-06-28 16:18:46 +08:00 |
|
shy3130
|
76431b588e
|
feat: 概念/行业数据改为用户手动获取
将内置概念(ext_gn_ths)/行业(ext_hy_ths)数据源从「自动拉取」改为
「用户在页面手动点获取」, 避免启动时网络请求阻塞, 也符合用户自主控制预期。
后端:
- ext_presets.py (新增): 内置预设配方 + 结构转换 (接口 concepts/industries
数组 → 拼接成字符串) + ensure_builtin_presets(只建config不拉数据) +
fetch_preset(手动拉取, 供 API 调用)
- ext_data.py: 新增 POST /api/ext-data/presets/{config_id}/fetch 专用接口
(放在动态路由前避免被当 config_id); 走结构转换保证 schema 一致
- main.py: lifespan 改为只 ensure_builtin_presets 创建 config, 不自动拉取
安全保证: 已存在则完全跳过, 绝不覆盖用户已有数据; 行业表去掉无用的
thscode/time 列。
|
2026-06-28 16:01:39 +08:00 |
|
shy3130
|
2d4befb8a2
|
fix: data 目录脱离 git 跟踪, 修正桌面版数据落位
解决「更新后数据丢失」问题的根因: ext_data 种子文件被 git 跟踪,
push/pull 时会覆盖用户本地数据。
变更:
- .gitignore: 整个 data/ 纳入忽略, 移除 ext_data 放行规则
- git rm --cached: 移除 ext_gn_ths/ext_hy_ths 4 个种子文件跟踪 (本地保留)
- config.py: 桌面版数据目录改为 exe 同级 TickFlowStockPanel_Data/
(在 {app} 外, 覆盖安装/卸载都碰不到; 不在 C 盘, 用户可见)
- tickflow.iss: 卸载询问逻辑指向新数据目录 {app}\..\TickFlowStockPanel_Data
种子数据改由首次启动从远程接口拉取 (见后续 commit)。
|
2026-06-28 16:01:29 +08:00 |
|
shy3130
|
eaaf923d7b
|
修复看板显示bug
|
2026-06-28 13:49:18 +08:00 |
|
shy3130
|
33f10c2847
|
重新设计复盘页面并优化页面
|
2026-06-28 13:49:05 +08:00 |
|
shy3130
|
2acaa38a2b
|
feat: release v0.1.60
|
2026-06-27 23:23:34 +08:00 |
|
shy3130
|
a832836938
|
docs(readme): 添加 GitHub star 徽章
|
2026-06-26 23:55:12 +08:00 |
|
shy3130
|
6bfb2a218f
|
chore: bump version
|
2026-06-26 23:37:56 +08:00 |
|
shy3130
|
56bf1ff1b2
|
Merge branch 'feat/stock-analysis-levels-refactor': 个股分析价位体系重构
|
2026-06-26 23:37:42 +08:00 |
|
shy3130
|
0a24e1e601
|
chore: bump version to 0.1.51
|
2026-06-26 23:37:04 +08:00 |
|
shy3130
|
00d856191b
|
refactor(stock-analysis): 价位体系重构 — 价量支撑 + 通道拆分 + 右侧标签带
压力支撑语义归位:从 BOLL 波动通道改为 Volume Profile 成交密集区
(价+量驱动,真正的市场结构支撑/压力),原 profile 组并入 sr 组。
通道拆分:原合并的「波动通道」拆为 4 个独立开关 —— 布林带(含中轨
MA20)+ Keltner 短/中/长三档,各自显隐。
图表布局:
- 价位文字改用 line series + endLabel 显示在右侧 grid.right 预留带,
不再压在蜡烛上;预留带加宽至 144px 保证标签完整
- 标题栏改两端布局,当前价右置并加大加粗、带涨跌色
- 价位统计面板恢复至图表下方
默认开启:压力支撑 + 枢轴点 + Keltner短期。
|
2026-06-26 23:34:54 +08:00 |
|
shy3130
|
3948d2555e
|
feat(stock-analysis): 带状指标改为跟随行情漂移的曲线
布林带/Keltner通道/ATR止损从「水平直线(仅最新值)」改为
「跟随时间漂移的曲线(ECharts line series)」,还原通道的真实形态。
后端(stock_analysis.py):
- 新增 _build_series(): 提取 5 组带状指标每日时间序列
· boll(布林带上下轨)
· keltner_s/m/l(短/中/长三档 MA±n×ATR,MA120 现场算)
· atr(close±2ATR 动态止损止盈)
- get_levels 返回新增 dates + series 字段
前端(AnalysisKChart.tsx):
- Props 加 series/seriesDates,数据预处理做日期对齐映射
- buildOption 按开关添加 type:'line' 曲线(复刻 maLine 模式)
- collectPriceLines 过滤布林带/Keltner/ATR 水平线,避免与曲线重复
- Keltner 三档渐变青色系区分档位
- 水平直线(枢轴/前高前低/成交密集/缺口/斐波那契/整数关口)不变
|
2026-06-26 16:02:16 +08:00 |
|
shy3130
|
2015ef0c78
|
feat: 个股分析(Beta) — 专用日K + 9类关键价位 + AI四维分析
新增个股分析页,以行情与关键价位为视觉主体,与财务分析(财务质量评级)定位互补:
后端:
- indicators/levels.py: 9 类关键价位纯函数计算
· 压力支撑(布林带)/ 成交密集区(POC)/ 枢轴点(可配档位)/ 前高前低
· Keltner通道(MA±n×ATR 短/中/长)/ ATR止损(close±nATR)
· 缺口位(未回补跳空)/ 斐波那契回撤 / 整数关口(自适应步长)
- services/stock_analyzer.py: AI 四维(技术/基本面/财务/消息面)流式分析,NDJSON
- services/stock_reports.py: 报告持久化(最多50条),独立 JSON 存储
- api/stock_analysis.py: levels/analyze/reports 端点
前端:
- AnalysisKChart: 专用 ECharts 日K(主图+成交量+滑块),9 类价位开关
- 蓝色胶囊(Bubble/Host/Dialog),与财务分析紫色主题并存
- stockAnalysisStore: useSyncExternalStore 全局存储,后台流式
- useLastStock + LastStockChip: 记忆最近查看个股(财务/个股分析页)
其他优化:
- AI 设置页:一键清空配置(保留UA) + 保存后乐观更新连接状态/菜单
- MarkdownRenderer: 去除 space-y-0 遮蔽,各块间距与分隔线可见性优化
- 个股分析页 Beta 标识(标题 + 菜单)
- 版本号 0.1.45 → 0.1.50
|
2026-06-26 15:36:52 +08:00 |
|
shy3130
|
11a972a980
|
feat(financials): AI 财务分析 — 流式生成 + 全局胶囊 + 历史报告持久化
后端:
- 新增 financial_analyzer 服务(CFA 级九维分析提示词 + LLM 流式调用)
- 新增 ai_reports 持久化存储(保留前 20 条)
- 新增 /analyze 流式接口 + 报告 CRUD 接口
- 同步时间持久化到 preferences.json,重启不丢失
前端:
- 全局 AI 分析对话框(store 驱动,支持最小化/历史模式)
- 全局可拖拽任务胶囊(玻璃拟态,三态配色,60fps 拖拽)
- 历史报告列表面板(财务页底部)
- 轻量 Markdown 渲染器(表格折行/列表/引用)
- 同标的历史二次确认 + 财务菜单改名「财务分析」
同步版本号至 v0.1.45
|
2026-06-25 22:39:34 +08:00 |
|
shy3130
|
f1b41ca342
|
fix(financials): 全部同步改后台异步,修复点击无反应
根因:sync 路由同步阻塞调用 run_now(),全量同步 4 表 × 5500 标的需 ~2 分钟,
HTTP 请求长时间 pending 被浏览器/代理超时掐断,UI 表现为点击无反应。
后端:
- 抽出 _run_body() 同步逻辑本体;新增 trigger() 在后台线程执行,
并在持锁状态下立即置 _is_syncing=True(消除竞态窗口 + 防重复点击启动多线程)
- sync 路由改调 trigger(),立即返回 {started: bool},前端轮询 /status.syncing 看进度
前端:
- api.ts financialSync 返回类型改为 {started; reason?}
- Financials.tsx 同步状态以 status.syncing 为真值、isPending 兜底乐观态;
收尾时机改为监听 syncing 变 false(不再依赖瞬间触发的 onSettled);
被防并发跳过时弹 toast 提示
|
2026-06-25 15:53:31 +08:00 |
|
shy3130
|
37ebe19f1e
|
refactor(ai): 配置页单列卡片重构 + 移除无用的 Token 预算
- AI 设置页改为单列分卡片布局(Card/Field/Toggle 辅助组件),自定义配置卡
头部标注「Chat Completions」
- 移除从未实际生效的 ai_daily_token_budget(后端 config/api/settings +
前端 Settings 接口与保存参数 + UI)
- 测试结果不再展示 token 消耗,仅显示「连通成功 · 模型: xxx」
|
2026-06-25 15:53:15 +08:00 |
|
wshy
|
7c81a03026
|
feat(ai): 可配置 User-Agent 绕过 Cloudflare 等 CDN 拦截 (fix #8) (#10)
问题(Issue #8): AI API 反代到 Cloudflare 后,OpenAI SDK 默认 UA
(OpenAI/Python) 被 Bot Fight Mode 拦截,报 'Your request was blocked'。
方案: 后端始终发送浏览器风格 UA,默认内置 Chrome UA(开箱即用);
AI 设置页提供开关 + 随机生成/手动粘贴的自定义 UA。
后端(config.py / settings.py / ai_generator.py / strategy.py):
- 新增 ai_user_agent 配置项,默认桌面 Chrome UA
- 两处 OpenAI client 创建均注入 default_headers={User-Agent}
(ai_generator 实际生成 + strategy 测试连通性)
- 空 UA 自动回退内置默认,保证默认状态即绕过拦截
前端(api.ts / AI.tsx):
- 自定义 UA 开关:默认关闭(用内置默认),开启才显示输入框
- 随机生成按钮: 产出近期 Chrome 桌面 UA(Win/Mac/Linux 随机)
- 已有自定义 UA 时开关默认开启
不影响直连官方 OpenAI/DeepSeek 的用户(官方不校验 UA)。
|
2026-06-25 10:49:10 +08:00 |
|
wshy
|
acd30dd728
|
fix(pipeline): free/none 档降级时误调实时行情接口 (#9)
从 expert 切换到 free 档后,本地 kline_daily 仍保留今天实时落盘的数据,
导致 run_now() 中 today_exists=True,误入实时行情覆写分支调
quotes.get_by_universes()。但 free/none 档走 free-api 服务器,无实时行情
端点,调用报错或返回空,当天日K数据可能异常。
根因:分支①只判断「今天有无数据」,未判断「当前档位有无实时行情能力」。
sync_daily_by_quotes 内部也无 capability 守卫。
修复:分支①条件增加 capset.has(Cap.QUOTE_POOL)(starter+ 才有)。
free/none 档降级到 elif latest_daily 分支,用 klines.batch(period='1d')
历史日K接口刷新当天,这是 free 档唯一可用且正确的数据源。
|
2026-06-25 10:16:34 +08:00 |
|