Commit Graph
1001 Commits
Author SHA1 Message Date
shy3130 ff91eca3c0 fix(jobs): JobStore 快照落盘原子化 + get() 取锁 — 旧实现在 succeed()/fail() 的 pop→写盘窗口内, 无锁的 get() 会读到写一半的 JSON 而静默返回 None, 轮询方瞬时看到任务凭空消失 (CI test_pipeline_capacity 偶发 TypeError 的根因; 压力复现: 旧代码 2000 轮 2340 次 None, 修复后 0 次) 2026-10-04 00:41:01 +08:00
shy3130 88e4c19bc2 test(abnormal): 盘中基准动量测试的「今天」改用 cn_today() — 实现按北京日切今日, 测试脏行用宿主 date.today() 在 UTC 16-24 点窗口错开一天不再被排除, CI(UTC runner) 每晚必红 (#446 合并触发的既有时间炸弹, 与其改动无关) 2026-10-04 00:29:59 +08:00
wshyandGitHub 4bbe571ec9 Merge pull request #446 from intfoo/pr/strategy-param-string-type
feat(strategy): 支持 string 类型策略参数
2026-10-04 00:24:53 +08:00
intfoo 3e105a475d feat(strategy): 支持 string 类型策略参数
META["params"] 新增 string 类型(自由文本),后端本就按非数值类型
原样透传,无需改动;本 PR 补齐前端渲染与扫描守卫:

- StrategyParamDef.type 联合类型加 'string'
- 回测页/策略设置弹窗参数面板:string 渲染为文本输入框
  (此前未知类型会掉进 number 分支,文本值被 Number() 转成 NaN)
- paramSweep:string 参数标记「文本参数不可扫描」,buildGrid
  防御性跳过(后端 _candidates_for 只支持 float/int 范围展开)
- strategy-guide / compact 指南与 AI 生成 prompt 同步参数类型说明
2026-10-01 21:07:56 +08:00
wshyandGitHub 0b4c410dbb Merge pull request #443 from KenNeo730/fix/integrity-scan-trading-calendar
fix(integrity): 完整性扫描候选日接入 fuyao 交易日历
2026-09-29 18:35:46 +08:00
wshyandGitHub 77e7088e54 Merge pull request #440 from kevin9327/fix/assistant-coverage-weekend-lag
fix(assistant): 数据完整性检查按最新日之后至今天的工作日计落后天数, 周末不再误报日线落后
2026-09-29 10:49:36 +08:00
wshyandGitHub 03f43d6790 Merge pull request #438 from kevin9327/fix/assistant-confirm-timeout
fix(assistant): 确认卡超时未作答返回 expired, 不再当成「用户已拒绝」回填给模型
2026-09-29 10:49:22 +08:00
wshyandGitHub 3667dec842 Merge pull request #436 from kevin9327/fix/sse-event-id-unique
fix(events): SSE 事件 id 由总线分配为严格递增的毫秒时间戳, 同一毫秒的一批告警不再共用 id
2026-09-29 10:49:14 +08:00
wshyandGitHub 3452c0577e Merge pull request #434 from kevin9327/fix/minute-raw-basis-marker
fix(minute-adjust): 部分分区缺日K锚点时不建 .raw_basis 标记, 补齐后可续跑
2026-09-29 10:48:04 +08:00
wshyandGitHub 8f6b2bf0fc Merge pull request #441 from kevin9327/docs/builtin-strategy-count
docs(features): 内置策略数改为 25 并同步代表策略表, 与策略指南口径一致
2026-09-29 10:47:54 +08:00
KenNeo730 6e401ab086 fix(integrity): 完整性扫描候选日接入 fuyao 交易日历
「周一~周五」近似把休市日当成缺失日: 2026 中秋 09-25(周五) 休市被报
kline_etf_daily missing, realtime_gate 409 后修复任务对休市日永远拉不到
数据, 门禁死锁, 实时行情自长假起打不开 (issue #442)。

- 新增 _trading_calendar(): fuyao 近一年交易日集合, TTL 30 分钟缓存,
  取数失败沿用上次成功结果 (stale-while-error), 从未取到才回退周几近似
- _candidate_days 按日历过滤候选日
- 测试的「最近工作日」探针同步升级为「最近交易日」
  (_recent_trading_day_before), 避免节假日环境误造休市日分区

本地验证: 37 passed (原 33 + 新增 4); 真实环境 boot 自检通过, 实时行情
门禁恢复放行。
2026-09-28 19:18:13 +08:00
kevin9327andClaude Opus 5.5 3563b14eb9 docs(features): 内置策略数改为 25 并同步代表策略表, 与策略指南口径一致
features.md 写 18 个, strategy.md 写 25 个; 按 builtin/ 各模块 META 核对,
普通选股列表 25 个, 另有一个仅供挖掘 worker 使用的研究模板。

Closes #426

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:18:54 +09:00
kevin9327andClaude Opus 5.5 0181ab6656 fix(assistant): 数据完整性检查按最新日之后至今天的工作日计落后天数, 周末不再误报日线落后
_biz_days_behind 数的是 [latest, today) 的工作日, 最新日本身算作落后、
今天不算; 周六/周日对截至周五的数据报「落后约 1 天, 建议补全」。
改为数 (latest, today], 两端都是工作日时结果不变。

Closes #439

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:17:46 +09:00
shy3130 b410f1530c feat(packaging): 桌面图标统一品牌渐变 — generate_icon.py 标记色改 #A78BFA→#7C3AED(影线 70%)并重新生成 ico/icns, tickflow-logo.svg 同步 2026-09-28 18:17:30 +08:00
shy3130 18cc8f27b2 feat(frontend): favicon 与侧栏菜单图标换新品牌渐变 — 新增 BrandIcons 组件族(19 个 24 网格直角图标, currentColor 跟随主题), nav 全量替换并清理未用 lucide 导入 2026-09-28 18:17:26 +08:00
shy3130 a982b35410 feat(brand): 品牌资产库扩充与设计提案归档 — logo-dark 深底变体/场景底卡切图/16-24 小尺寸补齐/icon.ico, 另存 19 案 logo 提案评审页(含 12 向图标系统与主标尺寸规范) 2026-09-28 18:17:21 +08:00
kevin9327andClaude Opus 5.5 ef12b6dd60 fix(assistant): 确认卡超时未作答返回 expired, 不再当成「用户已拒绝」回填给模型
await_decision 超时也返回 denied, chat_service 为超时准备的文案分支
走不到, 模型被告知用户拒绝且不要重试。超时与溢出回收改为 expired,
同样不执行; 用户点拒绝的行为不变。

Closes #437

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:16:00 +09:00
kevin9327andClaude Opus 5.5 21bdffd237 fix(events): SSE 事件 id 由总线分配为严格递增的毫秒时间戳, 同一毫秒的一批告警不再共用 id
id 原本在格式化时按 time.time() 现算, append_many 一批告警落在同一毫秒
共用一个 id, 按 lastEventId 去重的订阅方只收到第一条; 时钟回拨时 id 也
会变小。发布时持锁分配 max(当前毫秒, 上一个 id + 1)。

Closes #435

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:14:01 +09:00
kevin9327andClaude Opus 5.5 18327c6519 fix(minute-adjust): 部分分区缺日K锚点时不建 .raw_basis 标记, 补齐后可续跑
只在全部分区都缺锚点时才不建标记, 有分区被跳过仍会建; 标记存在后迁移
短路, 被跳过的前复权分区永不换算, 读取时再被复权一次。任一分区缺锚点
即不建标记, 与注释、接口 docstring 和既有测试 docstring 一致。

Closes #433

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:12:08 +09:00
shy3130 1ecdd4acbe docs(readme): 修正「个人开源」徽章乱码 — URL 编码多出 %E4%BA%AA 致渲染为「个亪人开源」
alt 文本一直正确, 仅 shields.io URL 路径部分有误, 故 README 上显示为 5 个字的乱码徽章。乱码自 0.3.2 的 369f04d4 README 大改版引入, 经合并带入 main。已用解码与 shields.io SVG title 双重核对。
2026-09-28 12:19:30 +08:00
shy3130 2134e2e3c4 merge: 0.3.2 合并到 main — 开放能力版与看板自定义布局
- 开放能力: API Token 网关(scope 默认拒绝) + SSE 事件流 + MCP 服务器 + 助手动作能力
- 看板: 12 列吸附网格自定义布局(react-grid-layout) + 后端持久化
- 更新检查: 启动静默检查 + 侧栏 NEW 徽标 + latest.json 清单
- 版本: 0.3.1 -> 0.3.2; 附 CI 启用与 watchdog 回移
v0.3.2
2026-09-28 10:45:32 +08:00
shy3130 3d03bf8dba test(fuyao): test_dataset 预览用例改用相对日期 — 硬编码日期滑出近30天窗口导致必失败 2026-09-27 23:03:07 +08:00
shy3130 1ba83821a6 test(fuyao): test_dataset 预览用例改用相对日期 — 硬编码日期滑出近30天窗口导致必失败 2026-09-27 23:01:53 +08:00
shy3130 74c1021763 fix(watchdog): 探测循环取消不再被吞 — stop() 不会再永久挂起(自 0.3.2 回移修复与回归测试) 2026-09-27 23:01:53 +08:00
shy3130 a341cfc31e ci: 启用 main 持续集成(自 0.3.2 引入) — 后端全量 pytest + 前端 tsc/vite 构建; 同时修复 0.3.2 README 的 CI 徽章(默认分支无此 workflow 导致 404 裂图) 2026-09-27 22:48:55 +08:00
shy3130 cb4dc820f0 feat(update): 启动静默检查新版本, 侧栏版本号旁 NEW 徽标 — 自 0.3.2 移植共享单例 updateCheck store(24h 缓存+latest.json 兜底), 设置→系统复用同一 hook; 顺带修复设置页检查更新按钮仍指向改名前仓库 2026-09-27 18:53:09 +08:00
shy3130 a1edb94bec update readme 2026-09-27 18:47:50 +08:00
shy3130 39981d2537 feat(dashboard): 默认布局定稿 v2(用户手动调整版) — 中段四列等高(分布/雷达 h7→8), 双热度/四榜单行顶对齐(y12/y21); 坐标为压实稳定形态, 恢复默认等值落null闭环复验通过 2026-09-27 11:12:29 +08:00
shy3130 1a37e5515f feat(dashboard): 用户定稿布局设为代码默认 — 四列中段(分布/雷达/趋势/梯队)+双热度+右侧监控高栏(22行)+四榜单; 坐标取竖直压实稳定形态(列内不留空隙), 保证恢复默认的JSON等值判断成立并落null 2026-09-26 23:58:24 +08:00
shy3130 a39f8f4520 fix(dashboard): 根治组件内容溢出互相压盖 — 格子内容自然高度可大于定高格子(热度+35/榜单+88/监控+146px, overflow:visible 直接画到下一排上, 榜单DOM靠后把概念热度第5行盖住), 格子 overflow-hidden + 卡片 h-full 物理根除; 默认布局高度按实测校准(热度9/榜单13/监控14行)默认视图零裁切 2026-09-26 23:05:41 +08:00
shy3130 2f657e3d07 feat(dashboard): 编辑态交互重设计 — 整卡可拖(顶部被遮挡也能从任意位置拖起), 内容 pointer-events:none 阻断内部点击/悬停/iframe 吞拖拽, 八向缩放(四边通长细条+四角直角标线, accent 主题色), 占位格虚线框吸附反馈; 修复 RGL 浏览态残留 104 个隐形手柄 span 挡内容/滚动条(display:none 根除) 2026-09-26 22:47:33 +08:00
shy3130 fbf390187f fix(dashboard): 布局加载路径消解重叠坐标 — normalizeLayout 渲染前 compactLayout 兜底, 异常保存的 blob 不再组件压盖(注入重叠blob实测: gainers/losers 自动下沉), 拖拽回写同防线, 修正不实注释 2026-09-26 22:36:52 +08:00
shy3130 e65002a478 fix(dashboard): 添加组件弹层 portal 到 body + fixed 锚定 — 按钮移入头部后 absolute 弹层受祖先层叠上下文遮挡, 改为脱离文档流顶层渲染(z-9999), 右缘视口钳位, 页面滚动关闭/面板内滚动不关 2026-09-26 22:23:43 +08:00
shy3130 2461c3df96 fix(dashboard): 默认布局复刻原版排布 — 监控中心回到右栏(榜单右侧/梯队下方), 四榜单收窄为2列占左8列, 不再整行占满把监控挤到页面最底部 2026-09-26 22:20:26 +08:00
shy3130 553a38a44e feat(dashboard): 自定义布局入口移至看板头部「重载」右侧 — 编辑态控制组(添加组件/恢复默认/完成)同处一排, editing 状态提升至 Dashboard 页, 网格组件只保留编辑提示与覆盖层 2026-09-26 22:13:03 +08:00
shy3130 64e69dffd7 feat(update): 启动静默检查新版本, 侧栏左下角版本号旁显示 NEW 徽标 — 共享单例 updateCheck store(24h 本地缓存+latest.json 兜底), 设置→系统检查更新同源复用, 仓库地址修正为改名后名称 2026-09-26 22:08:53 +08:00
shy3130 2ef36e6ba1 docs(readme): 看板条目补充自定义布局能力说明 2026-09-26 20:52:39 +08:00
shy3130 44e8b7ebbd feat(dashboard): 布局后端持久化(preferences链路) + 外部链接组件(sandbox iframe+新窗口兜底) + 添加组件面板 + useDashboardLayout持久化hook(7用例) 2026-09-26 20:52:04 +08:00
shy3130 26e23ef01a feat(dashboard): 12列吸附网格自定义布局 — react-grid-layout v2 封装, 编辑态拖拽/角柄调宽高/删除/恢复默认, 布局规范化与默认布局复刻原排布 2026-09-26 20:12:42 +08:00
shy3130 adfb9da8ac refactor(dashboard): 抽出看板 widgets 到 components/dashboard (纯搬移, 行为不变), 引入 react-grid-layout 依赖 2026-09-26 20:04:02 +08:00
shy3130 0e777e0d3c fix(assistant): 徽标行为助手入口预留右侧空间, 模型名不再延伸到按钮下、状态点不再被覆盖 2026-09-26 19:25:17 +08:00
shy3130 32a42b9de4 fix(assistant): 宽表格标的列不再折行(自适应+不折行+横向滚动); 走势双图固定日K左侧/分时右侧 2026-09-26 19:21:47 +08:00
shy3130 f5d9d6af71 feat(assistant): 工具轮次检查点支持在设置→AI 手动配置 (默认100, 0=不检查, 最小5) 2026-09-26 19:04:54 +08:00
shy3130 c6c4fd2819 feat(assistant): 工具轮次 6 轮硬限改为 100 轮检查点(继续/停止选择卡)
- 到达 _TOOL_ROUND_CHECKPOINT(100) 时复用动作确认闸门(PendingRegistry+决策端点)
  弹 rounds_confirm 事件: 点「继续」重置计数再跑一个周期, 点「停止」或 120 秒
  未选则优雅收尾(notice + done, 已生成内容保留, 不再是 error)
- 前端 rounds_confirm 以合成足迹记录承载选择卡(继续/停止按钮), 复用 decideAction;
  流结束时仍悬挂的 awaiting 确认统一收敛为已取消
- 旧 test_chat_stream_stops_at_rounds_limit 改写为新契约; 新增 3 项检查点测试
  (批准继续/拒绝停止/超时停止)
2026-09-26 18:04:37 +08:00
shy3130 24c1d10f7f fix(assistant): 策略 id 不存在的报错附带可用策略清单, 模型一次自纠
- run_strategy(助手本地) 增加 engine.has 预检; 与 run_backtest(核心目录) 的
  「策略 xxx 不存在」统一升级为附带前 12 个可用策略 id 的提示
- 起因: 模型用中文名/自造 id 直接调 run_strategy 时足迹卡报失败, 需再花一轮
  list_strategies 才能修正; 现在错误信息本身即可自纠, 用户看到的失败原因也可读
- 测试 3 项: 两工具的未知 id 提示文案 + 同步路径
2026-09-26 17:44:47 +08:00
shy3130 86a01a66e3 feat(assistant): 快捷建议 12→18 条 + 芯片按文字自适应排布
- 新增 6 条建议: 主要指数表现 / 横向对比几只股票 / 个股财务速览 /
  对比两个策略(两次确认卡回测后横向对比) / 跑一个选股策略 / 有没有任务在跑
- 建议芯片由固定两列网格改为 flex-wrap 自适应宽度, 芯片随文字长短伸缩, 每组自然成行
- README 交互设计条目同步(18 条 · 文字自适应); 测试补对比类建议与 id 唯一性断言
2026-09-26 17:24:58 +08:00
shy3130 f42bceed4b docs(readme): 助手文档与最新能力对齐 — 21 查询工具 + 扩展内容问答
- 工具数 19→21(新增 list_ext_tables / query_ext_table), 三处同步: 特性总览/能问什么/路线图
- 能问什么表新增「扩展内容」行: 扩展数据表(列表·字段·数据日期, 过滤/排序/日期范围) · 自定义策略与信号
- 交互设计补「分组快捷建议」条目(四组 12 条 + 扩展内容提示卡)
- 扩展机制行措辞校正: 「零核心文件修改」→「扩展无需改动核心」(与 AI 章节的共用触发函数说明一致)
- 快速开始示例补「我的扩展数据表里有什么」
2026-09-26 16:57:12 +08:00
shy3130 6d810d138d feat(assistant): 空会话建议重设计 + 扩展数据表问答工具
- 快捷建议 8→12 条并按 4 组分区(行情与大盘/我的与个股/策略与信号/数据与扩展),
  新增板块轮动、盘中异动、批量行情、扩展数据表 4 条; suggests 契约新增 group 字段
- 空会话页重设计: 欢迎卡(图标+主副标题) + 分组图标头 + 两列建议芯片 +
  虚线提示卡「扩展内容同样可以问」(扩展数据表/自定义策略与信号可问答互动)
- 新增只读工具 list_ext_tables / query_ext_table(复用 ext_data 同一条读取链):
  列表含模式/字段/最新分区日期; 读行支持 等值过滤/排序/日期范围, limit 封顶 100
- prompt 工具策略补扩展内容问答指引; 足迹卡/前端工具标签同步
- 测试: 扩展表工具回路 7 项(快照/时序/过滤排序/范围/错误契约/摘要/分组断言)
2026-09-26 16:48:27 +08:00
shy3130 5fcc9bf064 docs(readme): 架构流程图重设计 — 横向挤压图改为五层纵向分层(消费端→网关→应用→核心域→扩展域)
- 旧 LR 图自然宽度 3144px, GitHub 830px 渲染下文字仅 ~3.4px 完全不可读
- 新图自然宽度 966px, GitHub 下有效字号 ~11px; 语义分层自上而下与开放能力版叙事一致
- 核心域三阶段管线(数据底座→计算研究→生产管道)带 enriched 口径/信号事件流向标签
- 扩展域底部通栏 5 通道横排, custom 模块星标强调 AI 助手参考实现
- 按 dagre 布局约束重构: 全下行边避免回边抬升, 去子图级边避免成员链式竖排
2026-09-26 15:42:06 +08:00
shy3130 6b233ed95f docs(readme): AI 助手章节补动作能力 — 19 查询 + 4 动作工具(确认卡)、数据健康检查、共用同步触发路径说明
- 能问什么表新增「数据健康」与「动作(须确认)」两行, 回测归入动作类
- 交互设计新增「动作确认卡」条目(完整待执行参数 + 确认/取消/120s 超时)
- 解耦说明改为如实描述: 数据补全与数据页共用核心层抽取的触发函数
- 功能总览 bullet / 对比表 / 快速开始示例问句 / 路线图行同步更新
2026-09-26 15:13:26 +08:00