shy3130
2ce8b4b17d
fix(ext-data): 内置概念/行业 preset 不再启动即自动联网拉取 ( #199 )
2026-09-04 11:53:15 +08:00
shy3130
7ea741e4dc
fix(backtest): 回测交易/选股行支持键盘打开K线弹窗 ( #239 维护者补丁)
2026-09-04 11:41:54 +08:00
wshy
84f00d36d3
Merge pull request #239 from thinkbuf/feat/backtest-result-kline-click
...
feat(backtest): clickable K-line popups for trade & picks rows
2026-09-04 11:40:53 +08:00
wshy
2140209506
Merge pull request #237 from 0112020179/codex/incremental-detail-kline
...
perf(kline): 个股详情仅增量更新最后一根日 K
2026-09-04 11:26:55 +08:00
wshy
4ca655279a
Merge pull request #236 from 0112020179/codex/preserve-index-cache-on-failure
...
fix(index): 指数请求失败时保留上一轮有效缓存
2026-09-04 11:26:52 +08:00
richard and Claude
4bb26713fc
feat(backtest): clickable K-line popups for trade & picks rows
...
回测结果页三处标的/交易现在都能点开K线弹窗:
- 交易明细每行可点击,复用 TradeKlineModal 打开该笔交易的「交易回放」(买卖价线 + 持仓区间)。
- 选股分析每行(按标的聚合)新增 PicksSymbolKlineModal:展示该标的整个回测期的日K,逐笔标注买入/卖出箭头并显示成交价;同日同方向多笔合并为一个箭头,价格相同显示 ×n,不同则显示区间。
- 原两个弹窗状态合并为单个 union 覆盖层状态,类型上保证同一时刻只打开一个,消除各 opener 的手工互斥。
- 图表组件透传 visibleBars:'all',标的回放初始即适配显示整段区间,避免买卖点被默认尾窗遮挡。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-04 11:15:36 +08:00
0112020179
8721bd2e83
perf(kline): update detail chart with latest row
2026-09-03 17:35:16 +08:00
0112020179
2e8be527b6
fix(index): preserve realtime cache on provider failure
2026-09-03 14:42:32 +08:00
shy3130
4cb30e48aa
fix: screener JIT 透传 turnover_rate ( #187 ) + PullScheduler 线程安全 ( #203 )
...
- #187 : _compute_enriched_full/_load_enriched_history 的 warmup 读取
白名单补上存储列 turnover_rate —— instruments 不可用无从重算时,
自定义 SQL 用该列做条件会 Binder Error 被吞成静默空结果
- #203 : refresh 的 _tasks 增删 diff 从调用方线程移进主循环闭包,
消除 TOCTOU 窗口; 行为测试覆盖增删/幂等
#187 测试已在修复前代码上验证会失败 (instruments 为空时列丢失)。
2026-09-03 13:45:12 +08:00
shy3130
91fef6d793
test: 加强 #201/#224 回归测试至可复现级别
...
- #201 warmup 测试改为与全历史计算基准对比数值 (ewm 指标从首值播种,
仅断言非 NaN 无法区分新旧代码)
- #224 注入测试改用合法同构 parquet 做目标 (读 /etc/passwd 在未加固
连接下同样报错, 区分不了攻击面是否真实闭合)
两个测试均已在修复前代码 (41205b1/e89ea9b) 上验证会失败。
2026-09-03 13:26:42 +08:00
shy3130
ef59df4a67
fix: 修复 6 个 issue (#225/#226/#201/#188/#200/#196)
...
后端:
- #225 自定义源分钟K字符串 datetime 不再被 cast 成 null:
_normalize_minute 对 Utf8 列按常见格式链式解析 (参照 kline_sync 口径)
- #226 自定义源日K/除权因子单批失败只隔离该批 (重试 1 次 + 跳过 +
warning 汇总), 不再丢弃已成功批次的全部进度
- #201 旧信号回测 _load_panel 加指标 warmup 窗口 (120 交易日保守日历日),
计算后裁回 [start,end]; 数据不足时自然退化
前端:
- #188 因子回测单标的不再整面板空白: 外层条件改 !error, IC 卡片
单独守卫并给出需 >=2 只的提示
- #200 因子回测支持调仓频率 (日/周/月) 与滑点 (bp) 配置
- #196 自选页板块筛选新增 ETF 分类, 旧偏好加载时补 ETF 键保持默认可见
2026-09-03 13:20:59 +08:00
shy3130
e89ea9becf
fix: 修复 4 个 P1 issue (#224/#232/#223/#215)
...
- #224 screener 自定义 SQL 的内存连接关闭 enable_external_access,
注入的 read_parquet/COPY 文件读写直接报错 (安全)
- #232 指数展示缓存百分数口径在消费边界显式 /100:
pipeline._bench_rt_pct_of 与 abnormal_moves._bench_rt_pct 两处,
修复 3/10/30 日偏离值被放大两个数量级
- #223 盘后管道按同日 daily/enriched 行数比较检测实时合并提前
创建的部分分区, 删除后由增量重算全市场补齐
- #215 _basic_filter_for_asset 扩展中和股票专属键 (price_min/max/boards),
并应用到回测/挖掘/策略扫描三个运行期入口, 修复 ETF 静默零信号
2026-09-03 13:01:43 +08:00
shy3130
41205b197c
chore: follow-ups for PR #231/#233 reviews
...
- monitor_rules: raise from None in remind_date validation (B904)
- lots: log warning on asset-type fallback to stock (fail-open traceability)
- matrix: demote turnover NaN-column notice to debug
2026-09-03 12:45:24 +08:00
wshy
8b12fc7a65
Merge pull request #231 from thinkbuf/feat/lots-alerts
...
feat(lots): holdings-reminder page — per-buy-lot auto stop/profit & expiry monitoring
2026-09-03 12:39:58 +08:00
wshy
f8031e16f4
Merge pull request #233 from SeerGlaucus/fix/etf-backtest-turnover-rate
...
fix(backtest): ETF矩阵回测因缺失换手率字段报错
2026-09-03 12:39:52 +08:00
SeerGlaucus
ba83e0241b
fix(backtest): ETF矩阵回测不因缺失换手率字段而失败
...
非股票资产(etf/index)无股本数据(维表仅 symbol/name/code/asset_type),
数据源也不提供换手率; 但矩阵缓存档 common_filter 强制 turnover_min:0.0,
依赖解析仍为 ETF 请求 turnover_rate(需 float_shares 派生), 导致矩阵缓存
构建失败。实测内置 low_volatility_leader 也报
"matrix turnover_rate requires float_shares"。
- _basic_filter_for_asset 将 turnover_min/max 一并中和(与市值界同族, 上次修复遗漏)
- _populate_matrix_derived_arrays 对无股本的 etf/index 把缺失的 turnover_rate
降级为全 NaN 列(与运行期 _optional_field 语义一致), 股票派生路径行为不变
- 新增回归测试: ETF 无股本时降级 NaN 不报错; 有 float_shares 时仍正常派生
2026-09-03 02:37:52 +08:00
richard and Claude
adc7ab52a9
feat(lots): holdings-reminder registry with auto stop/profit & expiry monitoring
...
新增「持仓提醒」页(/lots),登记买入批次(个股/ETF),每批自动生成并同步两条
监控规则: lot_{id}_p(type=price 止盈止损)与 lot_{id}_d(type=date 到期提醒)。
- 核心监控引擎新增 date 规则类型: 纯日历窗口、每个交易日仅在首个轮询评估一次、
按天 cooldown、跨天清理过期键; 消息按触发当天显示"N天后到期/今日到期"。
- 批次派生规则继承默认 webhook 渠道; 监控中心只读展示(批次/批次托管徽标),
通用 monitor-rules 接口对带 lot_id 的规则写/删返回 409, 避免与批次页脱节。
- 通知正文统一在缺省时追加触发现价与涨跌幅, 并避免与引擎自带引语重复。
- 后端分层: strategy/lots.py 域(校验/存储/批次→规则纯映射) + api/lots.py 薄路由
(写锁/校验先行/级联删规则/复用 _sync_engine 重载); services/fs_utils.py 原子写。
- 前端: api/queryKeys 契约、DateShortcuts、Lots 页(数值输入可留空、加载/出错态、
文案打磨)、Monitor 日期提醒/批次徽标; RuleEditor 不手工建 date(由持仓页生成)。
- 记账/加仓减仓属"交易口径", 不在本改动(issue #230 ); 到期提醒按自然日窗口,
休市/节假日顺延的交易日历口径待 issue 定夺。
验证: 新增 tests/test_date_rule.py + tests/test_lots.py 全绿(20), 监控族回归通过,
ruff 新文件干净, pnpm build 通过。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 20:20:38 +08:00
shy3130
de5d5a9769
chore: update assets
2026-09-02 16:27:38 +08:00
wshy
a28f9e852f
Merge pull request #228 from thinkbuf/feat/watchlist-import-csv-groups
...
feat(watchlist): batch import CSV / pasted codes into groups
2026-09-02 15:55:18 +08:00
wshy
3a3012f5b6
Merge pull request #227 from thinkbuf/feat/webhook-test-message
...
feat(monitor): add webhook test message button
2026-09-02 15:55:12 +08:00
shy3130
7ac0456c53
feat(mining): 实时行情与挖掘的冲突确认弹窗
...
盘中实时开启时 enriched 每轮落盘推进数据世代, 排队中的挖掘任务
开跑会因首轮世代校验失败而报错 (mining data generation changed
after the run was queued, 用户反馈)。两个方向加确认弹窗:
- 挖掘页: 实时开启时点「开始挖掘」→ 三按钮确认 (取消 / 仍要开始 /
关闭实时并开始 — 后者一键关实时并提交任务)
- 侧边栏实时开关: 存在 queued 挖掘任务时开启 → 确认弹窗;
运行中任务自动跟随新世代, 不拦截
验证: tsc 零错误 + build 通过 + 浏览器验收 7/7 (弹窗出现/取消
无副作用/关实时并启动任务链路/无排队任务不拦截/环境恢复)。
2026-09-02 15:20:48 +08:00
richard and Claude
e9f5c606b6
feat(watchlist): batch import CSV / pasted codes into groups
...
自选页新增批量导入:支持 CSV/TXT 文件与粘贴证券代码两种来源,解析出
候选并在弹窗内确认后按 M:N 分组一次性写入(目标分组可多选或就地新建,
默认只勾新增标的,已在自选的可并入所选分组)。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 14:48:32 +08:00
wshy
7619fbcf7a
Merge pull request #210 from thinkbuf/feat/kline-preview-nav
...
feat(kline): 弹窗切股导航 + 邻股预取 + 悬停「至今」+ 外部链接
2026-09-02 13:52:38 +08:00
richard and Claude
40fea3236e
feat(monitor): add webhook test message button
...
Add a test button to the push-notification settings so users can verify Feishu and WeCom group-webhook configs after saving.
Backend: POST /api/settings/preferences/webhook-test reads the saved webhook URL/secret and sends a one-shot test message (max_attempts=1 to skip production retry backoff). All failure modes return HTTP 200 + {ok:false, detail} so the UI renders a single path.
Frontend: api.sendTestWebhook(); TestSendButton/TestResult components shared by both channels; success feedback auto-dismisses after 2s.
Tests: 7 cases covering both channels, failure modes, and single-attempt behavior.
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:36:06 +08:00
richard and Claude
0a11bb870e
fix(kline): align intraday prefetch with rendering (live & effective days)
...
Rebase 到最新 main 后,按 review 提的两点把邻股预取与真实渲染路径对齐:
- 邻股预取当日最新分时补 live=true: 与 StockMultiDayIntradayChart 的 latest 同读
实时源,盘中切股不回落分钟增量落盘的旧本地分区 (历史日期后端自行忽略 live)
- StockPanel 两处预取 days 改用 effectiveIntradayDays, 与多日图实际渲染周期一致,
range 预取 queryKey 命中, 切换分时 tab 即时有数据
- 附带清理 rebase 冲突解析产生的残留右括号与冗余注释
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:25:06 +08:00
richard and Claude
6964e1b5c9
fix(kline): two regressions found in PR review
...
- EChartsCandlestick: 悬停重置 effect 依赖补上 symbol(_symbol) ——
预取切股到同长度邻股时 data.length 不变, 原 [data.length] 不触发,
hoverActiveRef 残留导致切股后「至今/周期」无悬停仍显示 (自愈于下次 mousemove)
- Watchlist: DimensionMembersDialog 的 onStockClick 补第三参 navList ——
从成分弹窗打开个股时用成分列表作切股导航 (成员可能不在自选列表,
原实现退回自选列表, 成员不在自选则导航按钮不显示)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:15:30 +08:00
richard and Claude
341b80e7ab
refactor(kline): simplify round 2 — scope flex ratio, single-source guard and default
...
审查后清理, 无行为变更 (除下述作用域修正):
- StockPanel: 日K/分时并排的占宽从硬编码 flex-[1.4] 改为 dailyKlineFlex prop
(默认 flex-1) —— 避免静默改变 TradeKlineModal 等其他消费方的并排布局;
仅 StockPreviewDialog 显式传入 flex-[1.4]
- lib/kline.ts: klineMinuteRangeQueryOptions 内嵌「仅同 symbol」placeholderData 守卫,
与 klineDailyQueryOptions 同源, 删除 StockMultiDayIntradayChart 的内联副本
- DEFAULT_INTRADAY_DAYS 单源化: StockPanel 默认值与弹窗 loadIntradayDays 回退共用
- StockPreviewDialog: prevSymbolRef 初始值改 null (首次挂载 view 本就是 daily);
blur 复用 keydown 的 e.target(t) 替代重复 document.activeElement 查询
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:15:30 +08:00
richard and Claude
4d36a5ff20
fix(kline): blur focused control after arrow-key switching to drop stray focus ring
...
点过分时tab/外链等控件后方向键切股, 浏览器会给该已聚焦控件显示
focus-visible 默认蓝色 outline(应用未自定义 focus 样式, 即浏览器默认环)。
切股成功后 blur 掉当前聚焦元素, 一次覆盖弹窗内所有控件。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:14:14 +08:00
richard and Claude
f3b916c049
feat(kline): prefetch multi-day intraday so switching keeps intraday tab instant
...
之前邻股只预取了日K/财务/单日分时(日K视图旁的分时图), 分时 tab 用的
多日分时(klineMinuteRange)没预取 → 分时 tab 切股仍要重新加载。
- lib/kline.ts: 新增 klineMinuteRangeQueryOptions, StockMultiDayIntradayChart 与预取共用
- StockPanel: 新增 intradayDays prop, 邻股预取补充 klineMinuteRange(days) + 最新分时
- StockPreviewDialog: 把当前 intradayDays 传给两个分支的 StockPanel, 保证 queryKey 命中
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:14:14 +08:00
richard and Claude
41a97888b6
fix(kline): widen dialog, balance chart split, keep intraday view on switching
...
- 弹窗 max-w 1100→1200, 日K/分时并排改 1.4:1 (日K为主视图),
图表信息栏(悬停含「至今/周期」)有足够宽度单行容纳, 不再换行
- 修复: 分时 tab 下弹窗内切股会跳回日K —
视图重置仅在弹窗首次打开(symbol 从 null 变非空)时发生, 切股保留当前视图
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:14:14 +08:00
richard and Claude
7038c7d627
refactor(kline): simplify after review — single-source queries, sort, and nav lists
...
审查后清理, 无行为变更:
- lib/kline.ts: 新增 klineMinuteQueryOptions, StockIntradayChart/StockMultiDayIntradayChart/
StockPanel 邻股预取共用 (与 klineDailyQueryOptions 同风格单源)
- LimitUpLadder: sortLadderStocks 每 tick 只跑一次 (sortedTiers memo 供 TierGroup 与
ladderNavItems 共用), resolveExtFields 提升为 memo (原来算 4 次)
- Dashboard: rankNav 复用 toNavItems 去掉 ! 断言; onNavigate 死条件简化为 alert: undefined
- Screener: 消费 ScreenerTable 传入的 navList (成员弹窗导航不再被丢弃), 移除重复 memo
- Watchlist: nav 列表仅在弹窗打开时构建 (sortedRows 随行情 tick 重建)
- ConceptAnalysis/IndustryAnalysis: 重复的 onStockClick 内联 lambda 抽为 handleStockClick
- StockPreviewDialog: 方向键与 ESC 同层级守卫 priceAlertDraft (点位弹窗打开时不切股)
- StockPanel: 去掉冗余 tick 别名; Monitor: 去掉冗余 as NavItem 断言
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:14:14 +08:00
richard and Claude
3258325daa
feat(kline): add configurable external stock link
...
设置页新增「个股详情外链」: 可填 URL 模板(占位符 {code}/{market}/{symbol}),
信息条第一行右侧显示外链图标(新标签打开)。留空关闭。
- 新建 lib/stock-external-link.ts: load/save/build + scheme 白名单(http/https) + symbol 形状守卫
- storage.ts 新增 stockExternalTemplate kv
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:12:42 +08:00
richard and Claude
0f7c1dfe39
feat(kline): show since-prev-close change and period count on hover
...
悬停某根K线时, 图表自带信息栏额外显示「至今」(该K线昨收到最新收盘的涨跌幅)
与「周期 N」(到最新K线共多少根); 鼠标移出图表区仅隐藏该字段, 其余保持。
- updateAxisPointer 重写: 区分 悬停K线变化 与 竖虚线显隐, 分别控制信息栏重绘与副图 graphic
- 信息栏行高 height → min-height, 容纳「至今」字段不被裁剪
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:12:42 +08:00
richard and Claude
ef66877529
feat(kline): prefetch neighbor stocks and stabilize dialog height
...
切股瞬间免 loading + 弹窗高度不抖动。
- 新建 lib/kline.ts: klineDailyQueryOptions 作为日K查询唯一权威配置,
StockPanel(信息条)/StockDailyKChart(图表)/邻近预取三处共享同一 cache key
- StockPanel: 日K查询上提并新增 prefetchSymbols prop, 预取左右邻股日K+财务,
日K到货后级联预取其默认选中日分时(klineMinute) —— 日K视图并排展示的分时图也免 loading
- StockInfoBar: 无数据时保持挂载(加载态占位), 按字段配置预留行高, 高度不塌陷
- useFinancials: 抽出 financialMetricsQueryOptions 供 prefetch 复用
- StockDailyKChart: 查询改走共享 options, 移除 onDataChange 上报链路
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:12:42 +08:00
richard and Claude
ec95d71732
fix(dialog): dedup nav list so stock preview skips duplicate symbols
...
同一标的在榜单中多次出现(多概念/行业 leader、监控重复触发)时,
去重后保留首次出现, 避免切股与 n/N 计数空跳。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:11:54 +08:00
richard and Claude
571e828529
feat(kline): support in-dialog stock switching with arrow keys
...
K线弹窗支持在来源榜单内切股: 顶栏 ◀ n/N ▶ 按钮 + ←/→ 方向键(输入框/编辑器内让位),
首↔尾循环弱提示, 并给来源页当前预览行加高亮。
- StockPreviewDialog: 新增 navList/onNavigate props, 导出 NavItem/toNavItems;
合并 ESC 与方向键监听; wrapMsg 弱提示浮层
- 9 个来源页面(自选/监控/选股/概念/行业/看板/连板/成分)构建 navList 并传 activeSymbol
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-02 13:11:54 +08:00
shy3130
bd84d4c0ae
feat(ui): 侧边栏桌面三态 + 移动端抽屉 (落地 #166 设计)
...
桌面 (≥768px): 展开 14rem → 图标条 3.5rem → 隐藏 0 + 左缘悬浮按钮
(hover 1s 以 overlay 预览不挤压主区, 点击固定展开 push); 三态持久化
localStorage tf-nav-state, 自动迁移旧 tf-nav-collapsed 两态键。
移动端 (<768px): aside 换壳为 fixed 抽屉 (80vw / max 320px + 半透明
遮罩), 左上角汉堡唤出, ESC/路由跳转/点导航/点遮罩关闭; 原移动端
强制收起为图标条的旧逻辑移除, 抽屉内恒为完整形态。
数据挂起门控对齐: 图标条/隐藏/抽屉关闭态均不为侧栏隐藏 UI 发请求。
交互设计取自 PR #166 (intfoo), 贴现有 navCollapsed 体系实现而非
合并其平行 sidebar 组件树 (其桌面两态与 main 现有能力重复)。
验证: tsc 零错误 + build 通过 + 浏览器验收 8 项 PASS (桌面三态
两轮循环含隐藏恢复、移动抽屉开合/遮罩/ESC); 修复验收发现的
overlayPreview 残留导致的"恢复后侧栏 fixed 覆盖主区"bug。
2026-09-02 12:40:56 +08:00
shy3130
22add7179c
merge: PR #167 监控自定义信号全显 + 信息条弹窗性能优化
...
冲突解法: SignalPicker 采用 options 形态 (PR 重构) + 保留 main 的
intradayDisabledSignals/intradayDisabledHint 变量 (含自选分组作用域
禁用分时穿越的增强语义, 自动合并会被 PR 旧内联表达式悄悄丢掉)
+ filterCustomByKind: false (监控场景显示全部自定义信号)。
验证: tsc 零错误, pnpm build 通过。
2026-09-02 10:56:49 +08:00
wshy
27d4a5bbca
Merge pull request #207 from shuolol/feat/strategy-index-data
...
feat(strategy): 策略可读取指数/ETF日K (market_data 模块 + 白名单 + 测试)
2026-09-02 10:53:12 +08:00
wshy
7b754c0ff4
Merge pull request #192 from Marquis03/codex/fix-stocksdk-realtime-normalization
...
fix(stocksdk): normalize realtime quote units and timestamp
2026-09-02 10:53:08 +08:00
shy3130
576850d0fa
feat(data): 数据页同步任务支持手动停止 (二次确认)
...
- 同步运行中顶栏出现「停止」按钮, 点击先弹二次确认: 注明协作式停止
(当前分块完成后中断, 不损坏已写入数据) + 停止后再次拉取需重新走
完整管道 (拉取→指标计算→监控规则), 无法从停止处续跑
- api.ts 新增 pipelineJobCancel, 调用既有 POST /api/pipeline/jobs/{id}/cancel
(取消标志 + 分块回调检查 + JobCancelledError 协作式退出, 后端零改动)
- 补 cancel 端点契约测试: running/pending 可停、终态 400、未知 404、
停止后可立即新建任务
2026-09-01 22:42:59 +08:00
shy3130
84725cd362
fix(pipeline): 解锁设置页 A 股拉取开关 ( #216 维护者补丁)
...
后端 getter/白名单已随 pr-218 修复, 前端 PipelineScopeConfig 的
locked 特判 (v0.1.60 为配合后端硬编码所加) 未解锁 — 不删则 issue
的用户路径 (设置界面取消勾选 A 股) 依然走不通。删除特判, 恢复与
ETF/指数开关对称的行为。
2026-09-01 22:41:33 +08:00
shy3130
67b271285c
Merge branch 'pr-218' into merge/pr-218
2026-09-01 22:40:50 +08:00
shy3130
bfe76e8273
Merge branch 'pr-206' into merge/pr-206
2026-09-01 22:38:50 +08:00
shy3130
d266131f90
Merge branch 'pr-213' into merge/pr-213
2026-09-01 22:33:28 +08:00
shy3130
e8c870af73
Merge branch 'pr-219' into merge/pr-221-220-219
2026-09-01 22:20:01 +08:00
shy3130
d0595eb4d7
Merge branch 'pr-220' into merge/pr-221-220-219
2026-09-01 22:20:01 +08:00
shy3130
a9c00fd567
Merge branch 'pr-221' into merge/pr-221-220-219
2026-09-01 22:20:01 +08:00
shy3130
c7a921cc60
merge: feat/full-minute-dataset (全量分钟数据集开放) 合入 main
...
分支已含 main 全部提交, 合并前验证: 涉改 106 用例 + 前端 tsc 零错误
+ 全量 1340 passed (test_mining_manager 偶发为存量, 合并前 main 可复现)。
2026-09-01 13:13:49 +08:00
shy3130
95cd99ab8c
merge: 同步 main (辐射本地读 + 传输压缩/网络设置) 到全量分钟分支
...
冲突两处均为 minute-refresh status 字段两侧各自新增, 两者全保留
(healthy + provider/provider_effective/repair_only)。
2026-09-01 13:05:21 +08:00