shy3130
|
8796f2cd7c
|
fix(tdxquant): 区分除权空结果与服务端失败
在 SDK 丢失错误前检查原生除权响应,保留脱敏错误与重试语义;正常无事件返回空结果。事件或配价失败时中止同步并保留旧因子文件,避免被报告为成功的零行结果。补充 SDK 离线回放、数值与落盘回归测试。
Signed-off-by: shy3130 <shy3130@qq.com>
|
2026-11-02 00:23:15 +08:00 |
|
shy3130
|
5a4702edcb
|
fix(tdxquant): 修复分钟同步时区与失败状态
在 SDK 清理响应前保留并脱敏服务端错误,明确的鉴权拒绝立即停止请求并触发熔断。历史分钟同步显式传递数据源失败,避免任务显示成功但落盘为零行。
将带时区的请求窗口归一为北京墙钟,补充鉴权、任务失败、UTC/北京时间窗口及 Parquet 落盘回归测试,并更新插件契约文档。
Signed-off-by: shy3130 <shy3130@qq.com>
|
2026-10-30 22:29:34 +08:00 |
|
shy3130
|
5c09ddc087
|
fix(fuyao): 日K缓存覆盖不足时刷新近端数据
- 近端日K dump 未覆盖请求区间时重新检查最新 release
- 同时失效内存帧与路径缓存,避免再次读回旧磁盘数据并持续降级逐票请求
- 对短窗口查询和长历史尾段补齐使用同一刷新逻辑
补充常驻进程跨交易日、短查询及长历史尾段的缓存刷新回归测试。
Signed-off-by: shy3130 <shy3130@qq.com>
|
2026-10-30 20:43:31 +08:00 |
|
shy3130
|
5578cb0182
|
fix(provider): #515 TdxQuant Key 失效鉴权熔断 — 不再全市场盲试
- 增量/修复轮连续 10 只「返回空数据」→ 置熔断, 冷却 15 分钟内快速失败返回空 df + 单条 ERROR 指引重存 Key; 不再对数千只逐只盲试 (stdout 刷屏随之停止)
- 逐只 warning 改计数, 轮末单条汇总 (失败数/首个错误); 设置页重存 Key 触发 load_all 重建实例, 熔断态自动清零
|
2026-10-27 18:45:09 +08:00 |
|
shy3130
|
7fadaa907d
|
fix(tdxquant): 分钟K整批0行 — Time数值形态归一 + Value包装解包 + 零行诊断
issue #509: 分钟同步进度正常、积分已扣, 但 0 行落库且全程无告警。三类叠加缺陷:
- Time 列归一: 原生返回混出 int/float 裸值(93100)与缺前导零 5 位串,
旧 _minute_dt 的 6 位数字串强校验把这类返回整批静默丢弃(全天 240 根
整型时间 → 0 行)。归一规则对齐 SDK get_market_data 的 "%06d" 拼法,
4 位及以下按 HHMM 补零(分钟K 9:30-15:00 时段内唯一有效读法)。
- Value 包装解包: 部分环境原生返回把数据整体包在 "Value" 键里, SDK
有同款防御而插件没有 → 0 行。client.his_dats 统一解包, provider
解析层(_kline_rows/_minute_rows)双保险。
- 分钟请求 end 传完整时刻: 截到 00:00:00 会把当日分钟全部排除在窗口外。
- 零行诊断: 返回非空但解析 0 行(复验剔除窗口过滤的正常情形)时打出
带字段样本的 WARNING, 进程内限 3 个标的防刷屏 — 格式漂移不再静默。
测试: +8 项形态矩阵(全天整型时间复现/Value包装/HHMM/end保时刻/
诊断含样本/限流), 组内 48 绿; 后端全量 3271 绿(ruff 零新增)。
Signed-off-by: shy3130 <shy3130@qq.com>
|
2026-10-26 09:58:55 +08:00 |
|
 kevinandGitHub
|
7f02c04b4a
|
fix(price-limits): 创业板 302 号段按 ±20% 与创业板规则处理 (#485)
|
2026-10-18 14:38:11 +08:00 |
|
shy3130
|
506d66f1ef
|
fix(desktop): TdxQuant Key 探测打包版失效 — 哨兵重执行 + tdxaidata 入包
- probe: worker 移入主模块, frozen 以「重执行自身 + TDX_PROBE_WORKER 哨兵」
拉起子进程 (sys.executable -c 被 PyInstaller bootloader 无视, 子进程会
重启整个桌面应用 → Key 永远验证失败); dev 保持 python -c, 共用 run_worker
- spec: tdxaidata 显式入包 — 后端全部懒导入 Analysis 不跟随; lib/ 跨平台
原生库按 datas 整目录复制 (collect_all 会让 macholib 解析 Linux ELF 崩)
- desktop: 单实例 _pid_alive Windows 改 OpenProcess+GetExitCodeProcess
(os.kill(pid,0) 在 Windows 是 TerminateProcess, 会误杀在跑实例);
main() 哨兵分发探测 worker, 先于单实例/后端/窗口
- 测试: 新增 test_tdxquant_probe.py (8 例); 全量 2692 passed;
打包产物端到端实测探测 API ok, tdxaidata 真实加载连服
|
2026-10-13 18:37:29 +08:00 |
|
shy3130
|
ecb49cbaca
|
release: v0.3.6 — 核心+扩展架构完善版
合并 0.3.6 分支全部内容 (36 提交, 详细历史见 0.3.6 分支):
■ 数据与插件
- TdxQuant 数据源: 通达信量化接入 (实时/五档/日K/复权/分钟), tdxaidata 收进默认依赖
- 扩展表两级拉取配方: 概念/行业出厂即带完整可拉配置, 可作自定义接入参考示例
- 能力门禁日志带生效源; 标的池解析只走 instruments 维表
■ 页面扩展化
- 11 个官方页面全量迁移为单文件扩展 (custom/*/extension.tsx), 删目录即卸载
- 运行时页面包系统: 打包产物上传即挂载, 免重建宿主
- 新装用户扩展页默认隐藏, 老用户升级菜单无感
■ AI
- Responses 协议接入; 会话历史与长任务跨设备同步 (服务端注册表)
- 助手头部快捷入口 + 悬浮球拖拽 zoom 坐标系修复 + 系统设置开关
■ 界面
- 设置「关于」子菜单: 版权/更新/打赏 + 开源许可弹窗与合规声明双保险
- 侧栏两态收起、数据/AI 助手快捷行 (同步呼吸光晕)、核心/扩展 ext 标记
- 界面缩放默认 90%; 菜单设置徽标 Swiss 化; 策略池「叠加」分组
- 情绪评分口径可配置; 财务画像 5 张子表手动拉取
■ 文档与其他
- README 重构「核心+扩展」主线 + 架构图重画; 开放端点数核实为 65
- 版本号 bump 0.3.6; tdx 物化库测试夹具补 macOS dylib
|
2026-10-13 13:40:17 +08:00 |
|
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
|
badab07619
|
feat(adj): 除权因子独立同步 + 事件明细扩列 + 按需窗口优化
- 扩列: adj_factor 表扩至 8 列(dividend/bonus/allot/allot_price/prev_close 明细, 可空), fuyao 从事件 dump 原始成分回填; merge 变更检测按 ex_factor diff>1e-9, 仅明细回填不计入受影响列表; 字段说明补齐
- 独立同步: /api/pipeline/adj-factor/run 端点(共用任务机制: 单飞+重任务槽+行情暂停), Data 页除权因子卡片设置齿轮弹窗(生效数据源/能力徽标/TickFlow 无明细提示), 因子变更个股自动 enriched 局部重算
- 按需优化: 独立同步事件窗口钳到本地日K起点(更早事件在前复权 cum/total 两侧抵消, 对已存价格零影响); fuyao 配价由全有或全无改为逐只按需(远古事件只拖累自己, 不再整轮回退单标的接口); 实测全市场因子阶段 15min+ → ~11s, 配价 3676/3676 走本地 dump 零回退
- 盘后管道步骤条显示各能力路由徽标(矩阵驱动); README 补桌面端 macOS 安装注意事项
- 测试: 明细列 merge 语义 4 例 / 独立同步联动 5 例 / 远古事件不连累全场回归; 全量回归通过(2 例历史遗留失败与本改动无关, 基线同样失败)
|
2026-10-07 21:45:40 +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 |
|
0112020179
|
86e5273729
|
fix(fuyao): 根据审查完善流式同步
|
2026-09-06 17:39:43 +08:00 |
|
0112020179
|
ecc3bc1576
|
fix(fuyao): 流式同步历史日K避免内存溢出
|
2026-09-06 12:35:26 +08:00 |
|
0112020179
|
f4a11f85a7
|
fix(index): preserve realtime cache on provider failure
|
2026-09-03 14:42:32 +08:00 |
|
shy3130
|
d530077322
|
feat(index): 指数收敛为固定核心四只 + fuyao 指数快照接入
- 新建 app/services/index_const.py 单一权威: 展示层固定四只核心指数
(上证/深证成指/创业板/科创综指), quote_service/overview/
market_overview_builder/sector_monitor 四处重复定义全部收敛
- fuyao 插件接入指数快照端点 (/api/a-share-index/prices/snapshot):
client 增加 index_snapshot (批量上限 627 码), provider 实现可选协议
get_realtime_indices — .BJ 后缀先行过滤 (未知代码整批 1002 连坐),
volume 不做股转手; 修复 fuyao 路由下指数冻结在日K兜底的 bug
- quote_service 自定义源分支鸭子类型调用 get_realtime_indices 补拉指数,
请求清单 = 核心四只 + 启用指数监控规则标的; 未实现的源走日K兜底
- TickFlow 分支指数固定按码显式拉取, 移除 CN_Index 全量 universe 与
mode core/all 分支; 指数落盘固定 merge 不截断
- 指数偏好全套下线: realtime_index_symbols / sidebar_index_symbols /
indices_nav_pinned / realtime_pull_index / realtime_index_mode
- /api/index/list 与 /search (全指数浏览搜索) 删除; daily/minute 保留
供指数详情页, sync_instruments/sync_daily 保留供数据页
- sector_monitor 指数标的恒可监控, catalog 签名不再依赖指数偏好
- 新增 7 个用例: 指数快照映射/.BJ 过滤/软失败 + 自定义源指数补充链路
(含监控规则并入/无协议源静默/指数失败软降级)
|
2026-08-31 16:50:21 +08:00 |
|
shy3130
|
38350dc6f3
|
feat(recap): 盘前风向标服务与 AI 复盘注入
- fuyao 客户端新增 short-term-benchmark 端点透传
- auction_benchmark 服务: 历史按日 JSON 缓存(当日不缓存)、交易日回退、
四态降级(ok/fallback_prev/source_unavailable/no_data)
- 读取时从相邻日K分区现算当日/次日收益对照, 不落缓存
- 复盘 user prompt 注入「盘前风向标(竞价)」上下文
- 11 个测试覆盖回退/缓存/富化数学/上下文
|
2026-08-30 19:05:31 +08:00 |
|
shy3130
|
c1ba1300d4
|
feat(recap): 复盘页龙虎榜卡片与 AI 复盘资金动向注入
- fuyao dragon-tiger-list 三榜接入 (非路由数据集, tickflow 无对应能力)
- services.dragon_tiger: 本地日K分区做交易日回退(规避接口非交易日报错), 历史日 JSON 按日缓存(不可变), 当日未发布自动回退上一期
- 卡片视觉对齐市场摘要条: 奖杯徽章/排名药丸/分段式tab/净买额比例条/席位奖牌, 收起两行摘要展开三榜明细, 点股票开日K预览
- AI 复盘 prompt 注入龙虎榜摘要段 (净买/净卖/机构/游资 Top), 未配置 fuyao 时空串不占段
- displayDate 联动: 历史复盘显示当期榜单
|
2026-08-30 19:05:29 +08:00 |
|
shy3130
|
8236e968ca
|
feat(market): 交易日探针——工作日休市剔除行情轮询与分钟增量
- 探测链: fuyao 交易日历(权威) → tickflow 行情时间戳(5只篮子 OR 判定, 9:40 开盘缓冲窗) → None 未知回退周几近似
- 周末零成本直判; 结论分档 TTL 缓存 (交易日 1h / 休市 30min 自愈 / 未知 5min 防重试风暴), 纯读不落盘
- 实时行情: 休市日跳过轮询/盘前预热/定版, fuyao 周五数据误归属从源头消除
- 分钟增量: gate_reason 新增 holiday; 探针未知时空轮升级机制仍为第二道防线
- 实测(周六): 三层链路真实验证, fuyao 日历连调休周一均正确判休市
|
2026-08-30 19:05:28 +08:00 |
|
shy3130
|
1873c15616
|
feat(fuyao): 日K dump 链路强化与财务数据集适配
- 财务接入(股本除外): 三大报表多期 + 指标单期, 字段映射至项目 canonical 列
- metrics: bps 由估值 pb_mrq 反推, eps_basic 取自利润表, report 期由最新披露期反查
- financial_sync 报告期合并升级为逐列填空: 多源数据并集共存, 新值覆盖缺列保留
- 前序未入库工作一并提交: 10 年/10d 日K dump、除权因子事件推导与涨跌停自检
|
2026-08-30 19:05:26 +08:00 |
|
shy3130
|
3cbc502d90
|
feat(data): 能力路由矩阵落地——五档入册、除权独立路由、插件源下限放宽
- 新增能力注册表 capabilities.py 与 /capability-matrix: 六能力(实时/日K/
分钟/五档/除权/财务)统一 candidates/pending/usable, 各页门控以 usable 为准
- 五档盘口 (depth5) 进入矩阵: tf_tier=pro, 插件数据集白名单暂未开放
- 除权「跟随日K」(same_as_daily) 下线: 每能力独立路由, 四处跟随解析移除,
存量旧值经 preferences getter 回退 tickflow 自愈; 矩阵显示与实际拉取口径一致
- 实时轮询下限: 路由到插件/自定义源时不受 TickFlow 档位限速, 通用下限 1s
(默认间隔仍 6s, TickFlow 路由档位查表不变)
- 插件 manifest 新增 homepage 透传; loader 输出 api_key_masked (Key 脱敏
与 TickFlow 同一展示契约); fuyao 声明官网
|
2026-08-30 19:05:21 +08:00 |
|
shy3130
|
8be36f4a8b
|
feat(fuyao): 快照单页 limit=6000 一次拉完全市场
实测服务端单页 6000 不截断(全市场 ~5600 只), 一轮轮询从 11 请求降到
1 请求, 大幅降低 4001 限频压力; 分页循环保留作未来扩容/服务端截断兜底。
插件开发文档重写并补充单页上限实测结论与页间隔自限速要求。
|
2026-08-30 19:05:20 +08:00 |
|
shy3130
|
bc0b3a72b6
|
feat(plugins): 新增 fuyao 同花顺官方实时行情插件(默认 hidden)与插件 Key 界面配置
- fuyao 插件: 全市场实时快照分页拉取, 字段对齐数据契约(pct 百分制÷100),
兼容官方文档与实际返回两种信封/字段名; 优化完成前 plugin.yaml 标记
hidden: true, 加载器跳过注册不展示, 删除该行即可开放
- plugin.yaml 新增 api_key_env 约定: 设置页提供 Key 输入框, 先探后存
(POST/DELETE /api/settings/plugin-key), secrets.json 优先于 .env
- secrets_store.get_env_backed_secret(field, env_name) 支持插件取 Key
- loader: 插件状态透出 api_key_env, 新增 probe_plugin_key 委托探测
- 31 个插件测试; docs/plugin-development.md 补充约定说明
|
2026-08-24 14:21:38 +08:00 |
|