Commit Graph
586 Commits
Author SHA1 Message Date
shy3130 58f8d7b883 feat(strategy): 新增 7 个矩阵原生内置策略, 公开计数 18→25
- 趋势/形态: 均线粘合突破 · 平台整理突破 · 放量创60日新高
- 量价/涨停: 涨停基因活跃股 (max_change_pct 参数过滤当日已大涨)
- 反转/波动: MACD 零下回升 · 长下影反击 (close_position>=0.5 兼容假阴线) · RSI 中轴回踩
- 阈值统一小数制口径 (change_pct/momentum 除以 100), 一致性测试计数 26
2026-08-31 22:30:44 +08:00
shy3130 be799abfa0 fix(intraday): since 增量时区崩溃 — 客户端直传原始时间串, 服务端归一 aware 输入
客户端 toISOString 生成带 Z 的 UTC, Python 3.12 解析为 aware datetime,
与行内 naive 北京时间比较 TypeError (第二轮轮询 500), 且换算差 8 小时。
- 客户端: since 直接回传最旧最后一根的原始 datetime 字符串 (同格式同时区,
  字典序即时间序), 消灭一切换算
- 服务端: fromisoformat 后 aware 输入先转北京墙钟再去 tzinfo, 防御旧客户端
2026-08-31 22:01:46 +08:00
shy3130 ed2f81c312 feat(realtime): 首用门禁 — 本地无数据时禁止开启实时行情
日K/enriched 均空 (与看板首用弹窗同口径) 时开启实时行情返回 409 并给
同步指引, 不落偏好。展示/监控/梯队全部依赖本地数据底座, 空数据下轮询
只是空转耗配额且缺 instruments 维表。只拦开启不影响关闭, 已开后清库
下次重开自然被拦。
2026-08-31 21:45:07 +08:00
shy3130 320969497a perf(intraday): 分时链路增量传输 + SSE 续画 + 视口感知
- minute-batch 支持 since 增量响应: 只回 >= since 的K (含动态最后一根),
  客户端按 (symbol, datetime) upsert 合并, 轮询流量从全天序列降到每轮一两根
- 自选分时 SSE 续画: enriched tick 前端续写分钟序列最后一根/滚动追加新K
  (纯视图叠加不写缓存, 服务端定版值始终权威); tick 新鲜时轮询降为 30s 兜底
- 视口感知: 从虚拟器直读渲染中 symbol 集合 (可见+overscan), 数据层只拉视口内;
  since 只按本轮请求集合取最旧尾部, 视口外落后不放大窗口; 集合变化 300ms
  防抖补拉; 剔除指数保持端点契约
- since 过滤专项测试: 含 since 当根 / 早于全部K / 无 since 三态
2026-08-31 21:45:06 +08:00
shy3130 869c49bb0b fix(kline): 分钟增量起点改为最后一根本身 — 形成中的动态K需重拉覆盖 2026-08-31 20:54:56 +08:00
shy3130 b78ba9940d perf(kline): 分钟批量补拉取到即落盘 + 尾部增量窗口
- 补拉结果经 _write_minute_partition upsert 落盘 (持仓库写锁, 与全量分钟
  服务/盘后同步同一纪律), 下一轮命中本地, 大自选从每轮全天重拉降为增量
- 完整性判定由 0.9 根数比例改为 期望-2 根: 比例阈值会让持久化数据在 90%
  处冻结尾巴
- 分类三态: fresh 直读本地零请求 / 尾部落后从最后一根+1min 增量拉 /
  中间有洞 (间距非 1min/午休 91min) 退回全天重拉回填, 防增量窗口漏数据
- 落盘失败降级为仅返回本轮数据 (持久化是优化而非正确性前提)
2026-08-31 20:53:23 +08:00
shy3130 bfe01e06d9 feat(data): 无除权因子能力时同步前置二次确认
除权因子不可用时同步静默降级 (日K不复权入库、enriched 直接用 raw 价),
此前无任何提示。现于两个同步入口 (数据页同步按钮、首用欢迎弹窗开始获取)
检测能力矩阵 usable 标志, 不可用先弹确认: 告知不复权口径与除权事件后
需重新校准, 支持不再提示 (localStorage)。矩阵未加载完成时 fail-open 不拦截。
2026-08-31 20:34:27 +08:00
shy3130 bfc2eede3e style(monitor): 设置监控页右列「全量分钟」移至「连板梯队降级修正」上方 2026-08-31 20:04:14 +08:00
shy3130 bfcad563d3 feat(frontend): 自选分时请求带 prefer_local, 策略页行为不变
- klineMinuteBatch 加 preferLocal 参数, 响应类型补 full_minute_local
- 仅 Watchlist 分时轮询传 true (全量分钟健康时股票不走批量补拉);
  Screener 不传, 严格限定本轮只辐射自选场景
2026-08-31 17:10:09 +08:00
shy3130 df5cae143e feat(minute): 自选分时接入全量分钟本地供给 (prefer_local + freshness 判定)
- MinuteRefreshService.is_healthy(): 偏好开 + 线程活 + 最近一轮距今
  ≤ max(2×间隔, 30s)。last_round_at 只在取数+落盘成功后更新, 连续失败
  自动超时判不健康, 冷启动修复轮期间天然不健康
- /api/kline/minute-batch 加 prefer_local 标志: 服务健康时股票 incomplete
  不再批量补拉, 本地有多少给多少 (服务下一轮落盘补全; 停牌票补拉也是空,
  无损); ETF 不在全量分钟 universe 内维持补拉; 不健康回落现状兜底。
  响应加 full_minute_local 标记
- 大自选 (数百上千只) 不再每 6s 轮询持续打批量分钟接口
- 4 个新用例: 健康跳过股票补拉/ETF 仍补, 不健康回落, 无标志不受影响,
  is_healthy 三条件边界
2026-08-31 17:10:02 +08:00
shy3130 6d72efc624 docs: 指数固定清单契约 + 自定义源指数补充协议
- CONTRIBUTING 能力路由矩阵小节: 实时指数为产品级固定契约不走路由矩阵
  (index_const 单一权威, 指数页固定四只, 指数偏好已删, 监控标的不受限);
  自定义源 get_realtime_indices 可选协议与 fuyao 连坐语义注记
- plugin-development: get_realtime_indices 方法契约与软失败语义
2026-08-31 16:50:38 +08:00
shy3130 58b86a962b feat(frontend): 指数页固定核心四只, 删除全指数搜索与侧栏指数配置
- /indices 指数页保留: 左侧固定核心四只(核心指数卡片), 删除搜索框与
  全量指数列表; 右侧日K/分时详情与同步指数日K按钮不变
- 侧栏指数条固定四只常驻显示, 点击跳指数详情
- 监控设置"左侧菜单指数"配置卡删除(四选多选+固定显示开关)
- api.ts: 删 indexList/indexSearch, Preferences 移除 5 个指数偏好字段;
  queryKeys 同步清理
2026-08-31 16:50:28 +08:00
shy3130 3c6ed99922 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 e287a55e82 fix(capabilities): redetect 同步刷新 app.state 快照并升级 tickflow SDK 0.1.25
- /api/capabilities/redetect 重新探测后同步写回 app.state.capabilities,
  minute_refresh 等门控服务即时读到新档位, 不再需要重启
- tickflow 0.1.24 缺 intraday_universe 方法导致 Expert 档全量分钟探测失败,
  升级到 0.1.25
- 全量分钟轮次异常与模式补充 warning 日志, 便于线上诊断
2026-08-31 16:50:12 +08:00
shy3130 4d27f3139e Merge branch 'feat/capability-routing': TickFlow 列式直转提速与除权因子时区修复, 分钟增量间隔上限 120s 2026-08-30 22:29:57 +08:00
shy3130 d29f9c0ea8 perf(data): TickFlow 取数切换 as_dataframe=False 列式直转; 修复除权因子日期 UTC 偏移一天
- 全部 K 线取数点改走 CompactKlineData 列式直转 polars (无 pandas 中转,
  全市场单轮本地转换 ~1.1s → ~0.1s), 时区口径统一 _timestamp_to_beijing_datetime
- 除权因子 trade_date 原取 UTC 日期, 北京零点事件整体早一天 → 转北京墙钟后取日期
- 盘中分钟增量间隔上限 300s → 120s (universe 仅回最新 3 根, 超限必留缺口)
2026-08-30 22:29:33 +08:00
shy3130 0417216439 Merge branch 'feat/capability-routing' (v0.2.2): 能力路由矩阵、fuyao 插件、分钟策略回测、盘中/复盘增强、首用引导改版 2026-08-30 19:47:19 +08:00
shy3130 1a7e6ad32c Merge remote-tracking branch 'origin/main' into feat/capability-routing
# Conflicts:
#	README.md
#	backend/app/backtest/worker.py
2026-08-30 19:47:11 +08:00
shy3130 80ecb6e409 chore(release): 版本号统一升级至 v0.2.2 2026-08-30 19:43:52 +08:00
shy3130 a8a6c81fff Merge remote-tracking branch 'origin/feat/volume-delta-alert' into feat/capability-routing
# Conflicts:
#	backend/app/services/quote_service.py
2026-08-30 19:42:43 +08:00
shy3130 bbe44af63b docs(readme): 声明/联系/交流群/打赏文案润色 2026-08-30 19:40:15 +08:00
shy3130 10f01ea091 style(onboarding): 不可用能力提示改为「该能力目前不可用」 2026-08-30 19:20:51 +08:00
shy3130 9a4621c8de feat(onboarding): 能力路由步骤进入时按 tickflow-fuyao-stocksdk 优先级自动设置路由 2026-08-30 19:19:08 +08:00
shy3130 dbd0e7f316 style(onboarding): 注册链接独占一行显示 2026-08-30 19:14:28 +08:00
shy3130 7ed2660d63 feat(onboarding): Key 表单附注册链接, TickFlow 链接带邀请码 2026-08-30 19:09:53 +08:00
shy3130 299790d38f docs(readme): 修改readme相关内容 2026-08-30 19:05:49 +08:00
shy3130 560a2d7735 feat(onboarding): API Key 表单常驻展开, 不再折叠收起 2026-08-30 19:05:48 +08:00
shy3130 2cd0ea987b feat(onboarding): 数据源步骤改为只读展示, 仅保留 API Key 配置 2026-08-30 19:05:48 +08:00
shy3130 0bcb0849dc feat(onboarding): 数据源步骤双 Key 入口与 fuyao 增强路由 2026-08-30 19:05:47 +08:00
shy3130 6b49231d67 feat(onboarding): 第3步由「能力探测」改为「能力路由检测」
- 以能力路由矩阵呈现(7 数据集逐行: 生效源+可用性+候选提示),
  替代以 TickFlow 档位为中心的旧视图, 多源下矩阵即真相
- 不可用行针对性提示: 有候选给「可切换候选: X」; TickFlow 未配 Key
  给「配置 Key 后可解锁」; 底部汇总 N/M 可用与 None 档说明
- 步骤名/注释同步改为能力路由; 移除不再使用的 TickFlow 档位视图代码
- 浏览器实测: 7 行矩阵渲染正确, 可用性/候选/汇总与当前环境一致
2026-08-30 19:05:46 +08:00
shy3130 3225713826 feat(onboarding): 引导页支持填写 TickFlow API Key
- 数据源卡片网格下新增入口「为 TickFlow 填写 API Key(可选)」,
  复用内联 Key 表单(TICKFLOW_API_KEY, 密码框自动聚焦)
- 文案区分: 留空=免费 None 模式可直接用, 填 Key 按档位解锁更多数据集;
  TickFlow 不自动切换数据源(与插件不同, Key 与选源正交)
- 走 /tickflow-key 先探后存: 浏览器实测假 Key 返回「Key 无效或已过期」
  且 secrets.json 未落盘
2026-08-30 19:05:45 +08:00
shy3130 a499da95c4 fix(onboarding): 引导页支持内联配置缺 Key 型插件(如 fuyao)
此前 fuyao 因未配 Key 被自检判为不可用, 向导数据源步骤按「缺依赖」
一律禁用, 文案误导(需安装依赖)且无处可配。

- 区分两类不可用: 缺依赖(真禁用) vs 缺 Key(api_key_env 声明型,
  卡片可点, 显示「需配置 API Key,点击填写」)
- 点击展开内联 Key 表单: 官网申请链接 + 先探后存(POST /plugin-key,
  无效不落盘), 验证成功自动选用该数据源
- 浏览器实测: fuyao 卡片可点、表单呈现/自动聚焦/空值禁用正确,
  无效 Key 返回实探错误且不落盘, 取消正常关闭
2026-08-30 19:05:44 +08:00
shy3130 25c2802d6f feat(onboarding): 首用引导更新为多源口径并增加后续步骤
- 获取数据说明保持数据源中立(TickFlow 免费服务器/当前源), 本地分析
  提示不再 TickFlow 专属
- FetchDataCard 增加 fuyao(同花顺 REST) Key 解锁提示(财务/龙虎榜/
  盘前风向标/竞价异动), 附设置页直达链接
- WelcomeFetchModal 新增「获取完成后的推荐步骤」: 配 fuyao Key →
  分钟落盘(可选, 分钟回测/板块分时) → 自选/策略/回测研究闭环
- tsc 通过, 看板页 HMR 后渲染正常
2026-08-30 19:05:43 +08:00
shy3130 893cf960e3 fix(chart): 关闭 lightweight-charts TradingView 归属角标
- layout.attributionLogo=false: 板块分时图与个股日K两处一致
- licence 链接要求改由 README 技术栈 Lightweight Charts 外链承担
- 实测: 个股分析页图表渲染正常, DOM 无 tv-attr-logo 残留

# Conflicts:
#	README.md
2026-08-30 19:05:35 +08:00
shy3130 3f27d412d1 docs(readme): 架构图重排为数据向上流的精简分层, 数据集口径改为多数据集
- flowchart BT: 数据源自下而上流向前端, 修正箭头方向歧义
- 节点标签精简为专业短词, 细节保留在关键机制表
- 能力路由不再写死数量(现 6 个数据集, 注册表持续扩展):
  图内改「多数据集 · 按能力独立路由」, 正文/核心功能表/features.md 同步
- 浏览器实测: 779×1045, 六层序 呈现→应用→研究→计算→存储→数据源

# Conflicts:
#	README.md
2026-08-30 19:05:34 +08:00
shy3130 b4f2605b81 docs(readme): README 按分支能力重写并新增技术架构章节, features.md 补齐
- 新增 🏗️ 技术架构: 六层 mermaid 分层图(数据源插件化/能力路由/Polars
  计算/研究执行/FastAPI 服务/React 前端) + 六条关键机制 + 技术栈表,
  数字均对照代码核验(15 列存储/68 列现算/62 因子/18 策略)
- 核心功能表/页面详情/路线图补 v0.3: 能力路由矩阵、fuyao 源、分钟体系、
  交易日探针、龙虎榜+风向标、全时段异动、导出与载入复测、成分股弹窗
- features.md 补: 分钟策略回测与结果沉淀、异动监控三tab(偏离值阈值
  按板块分档精确化)、复盘龙虎榜/风向标注入、指标现算口径
2026-08-30 19:05:33 +08:00
shy3130 75c2ab29f7 feat(frontend): 异动中心三tab、回测导出与载入复测、看板成分股弹窗与板块分时
- 异动监控重构为按交易时间线三tab: 竞价异动(风向标+当日/次日对照+追高标记,
  fuyao 未配置统一引导态)/盘中异动(信号筛选+连板/量比/振幅/换手表)/偏移异动
- 复盘页移除风向标卡片(AI 注入保留在后端)
- 回测结果导出 CSV(BOM, 概要/净值/交易明细/分标的统计四段)
- 候选方案「载入复测」: 弹窗→策略页传递, 23 项配置回填复跑
- 看板概念/行业排名行点击弹出成分股(dimensionKindForSourceField 判型),
  领涨股带涨跌幅与板块徽章
- 成分股弹窗新增板块等权分时: 双线(板块/全市场)+0%基线, 伪时间戳轴
  HH:MM 标签, 分钟未落盘引导态, 60s 轮询续期
2026-08-30 19:05:32 +08:00
shy3130 fb7785ceb9 feat(abnormal,dashboard): 盘中异动聚合、维度 source_field 与板块分时端点
- abnormal_moves 新增 build_intraday: enriched 七类当日信号聚合,
  优先级(涨停>炸板>翘板>跌停>新高>新低>放量)+涨跌幅排序, GET /api/abnormal/intraday
- 维度排名项携带 group_source 与 source_field(configId.field),
  前端可精确判定概念/行业而非字符串包含
- ext_data 新增 dimension-intraday: 成分股×当日分钟分区等权聚合,
  prev_close 优先/首根退化基准、成分网格化 ffill、全市场对照线,
  小数制涨跌幅契约、60s 进程内缓存、点击触发不预计算
- 板块分时 7 测 + 盘中异动 4 测
2026-08-30 19:05:32 +08:00
shy3130 3d627aba5e 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 cff3b07527 feat(recap): 龙虎榜卡片信息密度与可读性增强
- 摘要行扩为净买/净卖/机构净买/机构净卖各 Top5, 四行药丸左缘固定槽对齐
- fmtVolume 负数按绝对值分级补万/亿单位 (净卖席位原显示裸数字)
- 个股名称后复用 boardTag 加创/科/北板块徽章 (表格/药丸/游资chips)
- 三榜表格数值列头可点击排序 (升降切换, 空值恒垫底, 切tab重置)
- 游资席位金额去掉「净买」前缀
- AI 复盘提示词龙虎榜摘要四段统一 Top5
2026-08-30 19:05:30 +08:00
shy3130 381038e94f 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 9d290f003d 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 3b09fac15e feat(realtime): 自选实时分流与数据落盘可靠性
- quote_service 实时通道重构与自选分流, 旧 watchlist 批量测试相应移除
- repository.replace_with_retry 原子写重试; pipeline_jobs 任务记录落盘
- stock-sdk provider 适配增强; 分时图组件与预览入口调整
2026-08-30 19:05:27 +08:00
shy3130 d70a960750 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 cda69fb9e1 feat(routing): 能力路由矩阵支持不可路由能力行
- CAPABILITY_REGISTRY 新增 full_minute 行 (field=None, 生效源恒为 TickFlow)
- 全量分钟排于财务数据之后; 非路由候选标签改为非交互展示保留完整高亮
- 设置页数据集标签/服务中状态覆盖非路由能力
2026-08-30 19:05:25 +08:00
shy3130 657d4d9948 feat(minute): 全量分钟能力位与两阶段日内分钟落盘
- tickflow SDK 0.1.25: intraday.universe 标的池单请求拉全市场当日分钟
- 新能力位 Cap.INTRADAY_UNIVERSE (TickFlow Expert 专有) + 探测/别名/schema v6
- 分钟刷新两阶段: 冷启动与缺口修复走 intraday_batch 全天突发(分块容错), 稳态走 universe 增量
- 覆盖看门狗: 落后>3min / 无数据 / 连续空轮自动升级全量自愈
- 刷新间隔钳制 [3,300]s 默认 6s; 监控页全量分钟开关与状态入口
- CONTRIBUTING: 分钟 K 北京时间墙钟契约 (naive, 入口强制归一)
2026-08-30 19:05:25 +08:00
shy3130 246a7df57d refactor(ui): 检测档位集群移至 API Key 标题行右侧
- 档位徽章/说明/重检测/可用功能悬停图标从卡片头部移到
  「TickFlow API Key」标题行右侧 (档位由 Key 检测得出, 语义归位)
- 卡片头部只留 第三方/已适配全档位/服务中 徽章
- 可用功能浮层锚点改右对齐, 向左展开不越入能力表栏
2026-08-30 19:05:24 +08:00
shy3130 d5582c3c8d docs(data): 沉淀能力路由矩阵契约, 同步插件接入文档
- CONTRIBUTING §4 新增「能力路由矩阵契约」: 注册表单一权威、usable 统一
  门控、能力层中立原则、独立路由禁特殊值(same_as_daily 已下线)、
  分时/depth5 边界注记
- custom-data-source: 除权因子接入示例移除 same_as_daily
- plugin-development: manifest 字段表补 homepage 可选字段
2026-08-30 19:05:23 +08:00
shy3130 6fb46b100a feat(ui): 能力徽章与数据源页重构——路由门控、中立文案、详情卡重排
- 侧栏数据源徽章: 六能力方格(按注册序) + 悬浮路由卡(逐格同色对应,
  fixed 定位逃逸侧栏裁剪, 渲染后按实际高度钳制视口防遮挡)
- 各页能力门控切换为矩阵 usable 视角: Data/Financials/Monitor 缺能力时
  提示并引导数据源配置; 门控判定不再绑定 TickFlow 套餐
- 设置页数据源区: 能力路由卡(点标签切换, 乐观更新)、TickFlow 详情改为
  左 API Key 右能力档位表、检测档位收进头部徽章集群(+/重检测)、
  可用功能收进悬停图标、订阅档位面板移除
- 插件详情与 TickFlow 同构: 能力适配表(服务中/已适配/未就绪/—) +
  Key 区申请话术嵌官网链接(manifest homepage)
- 能力层文案中立化: 通用界面不出现档位/订阅词汇, 能力不可用警示按
  usable 判定(TickFlow 档位不足与源未就绪同待遇)
- API Key 输入框与保存按钮改为一行左右布局
2026-08-30 19:05:22 +08:00
shy3130 b4aa5918fc 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