31da37b49e
feat(HEL-529): 按第十二版实现三页数据中枢管理后台
...
以 hub-kimi.html + SPEC-V11.md(v12) 为唯一视觉基线,将 /admin/ 重写为
运行总览 / 数据源配置 / 数据血缘 三页单一入口;接入 HEL-543 只读旁路
与既有 admin API,保留调度/发布/审计与危险操作入口,零新依赖。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-14 21:11:45 +08:00
2e9442ac5a
HEL-543 返工: 补充 observability 运行时可关闭开关 (DATAHUB_OBSERVABILITY)
...
总工复核 🔴 :安全边界要求新增观测功能必须可关闭、关闭后现有功能完全照旧,
但此前实现没有任何运行时开关。修复:
- settings.py: 新增 Settings.observability_enabled 字段,沿用既有
DATAHUB_SCHEDULER 的环境变量模式,读取 DATAHUB_OBSERVABILITY
(0/false/off 关闭,默认开启)。
- hub.py: Hub.__init__ 把 settings.observability_enabled 挂到
self.db 上,让 pipeline/realtime_serve/steward/admin_api 已经
在传的 db 参数直接带上开关,零额外改造。
- observability.py: 新增 is_enabled(db),缺失该属性时默认按启用处理
(向后兼容裸 HubDB 用例/测试)。关闭时 observe() 变成纯
透传(不计时、不分类、不碰数据库),record_call() 直接 no-op。
- admin_api.py: 4 个新只读端点关闭时返回明确的
{"enabled": false, ...空结构} 而不是静默返回旧数据。
- 新增 10 个测试:开关默认值/环境变量解析、关闭后 observe() 的透传语义
(含异常原样重新抛出)、关闭后 record_call() 零写入、关闭后重新开启恢复
记录、4 个 admin 端点在关闭态的响应结构。
全量测试 183/183 通过(新增 10 个,含此前 173 个零回归)。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-14 18:34:59 +08:00
ad70d8fccc
HEL-543: add data hub observability side-channel (provider status, source catalog, lineage)
...
- New provider_call_log/provider_health tables (additive-only schema),
wired via a fail-open observability.observe()/record_call() helper.
- Tushare pipeline keeps its existing src_calls record unchanged and now
also feeds the unified provider_health/provider_call_log side channel.
- Eastmoney/Tencent realtime_serve.py call sites and the iFinD steward
call site are wrapped with observability.observe() at the call site
only; no adapter internals, routing, fallback order, or return values
are touched.
- New read-only admin API endpoints: /admin/api/providers/status,
/admin/api/source-catalog, /admin/api/lineage,
/admin/api/lineage/affected.
- New static, read-only source_catalog.py and lineage.py registries
documenting existing providers/interfaces/datasets and known
main-site consumers (cited against backend/features/screener and
backend/features/heaven call sites).
- provider_call_log is purged by the existing pipeline.cleanup() job
alongside src_calls/job_runs.
- 47 new unit/integration tests covering classification, fail-open
behavior under DB/log failures, unchanged payloads/exceptions on
success and failure paths, and the new HTTP endpoints. Full suite:
173 tests, all green.
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-14 18:34:59 +08:00
总管 and multica-agent
88411efa1c
fix(HEL-356): complete Shenwan industry signal
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-09 17:59:58 +08:00
总管 and multica-agent
abee8306be
fix(HEL-356): support Beijing exchange realtime quotes
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-09 11:36:01 +08:00
总管 and multica-agent
16843bdc7e
fix(HEL-356): prewarm published sector quotes
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-09 11:20:17 +08:00
总管 and multica-agent
b640e77264
fix(HEL-356): harden realtime quote completeness
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-09 11:15:56 +08:00
总管 and multica-agent
b950ea4344
fix(HEL-494): keep filtered reference lookups inside datahub
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-09 00:50:33 +08:00
总管 and multica-agent
41f8509a98
fix(HEL-494): retry incomplete sector publications
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-09 00:46:18 +08:00
8a7d1f3698
fix(HEL-494): 网站市场客户端改为纯中枢 Facade,并迁移 iFinD 凭据到中枢
...
生产 gateway 不再读取 Tushare token 或实例化 TushareProvider/TushareClient;问财凭据经带鉴权的中枢接口加密入库,避免发版后 iFinD 未配置。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 23:37:53 +08:00
100752f43c
fix(HEL-494): 切断网站生产装配外源直连,iFinD 与实时观察改走中枢
...
生产 gateway 不再实例化 iFinD、东财图和免费实时聚合器;问财与竞价快照作为中枢内部数据源。全站阻断外源测试覆盖日K、报价、图表、问财和竞价快照。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 22:41:51 +08:00
0b8419abca
fix(HEL-494): 数据中枢独占调度,主网站不再回退旧接口
...
主网站只向中枢要业务数据;来源选择、切源、补数全部在中枢内部完成,失败不再走东财/腾讯/Tushare 保底。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 21:43:31 +08:00
ef13d6feb5
fix(HEL-494): 盘中双免费源故障切换并禁止问天假0覆盖
...
主源东财失败后自动改走腾讯行情,成功结果写入缓存;两源都失败时返回最近真实快照并标明延迟,不再显示假0。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 17:38:38 +08:00
b5d65ecb41
fix(HEL-494): 日K默认45根并修复问天行业0/205覆盖
...
悬浮窗和详情页只画最近45个交易日,中枢仍保留250日历史。盘后缺sw_daily时保留成分日线内核,外显走免费申万;成分行情改为全市场快照+分页,不再截成前60只。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 17:00:01 +08:00
3e828b346c
fix(HEL-494): 修复个股缺失指标、问天遮罩、四爻外显并回补250日K
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 16:26:13 +08:00
c8a9376adb
fix(HEL-490): 真实装配接通中枢并收编估值晚间复核
...
把 query/行情钩子绑到内层 TushareClient,图表接受不完整日K窗口;收编现网 HEL-423 未提交的估值复核,避免换版丢掉。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 15:03:34 +08:00
1c2f2ac057
feat(HEL-490): 剩余行情改由数据中枢主线路提供
...
正式页面以 8766 为主线路,旧接口只作故障备用;compose 钉死全部 DATAHUB_READ_*,避免现网残留 0 造成假完成。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 12:03:30 +08:00
acde4de40d
fix(HEL-484): 中枢分时接口空 date 按当天查询
...
缺少或为空的 date 不再 400,按当天处理;显式历史日期保持原行为。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 10:07:44 +08:00
3d2c1252f1
fix(HEL-482): 开盘前分时回退最近交易日,并接通中枢失败回旧通道
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-08 09:44:00 +08:00
605f97e5df
feat(HEL-463): 接入剩余行情数据到 datahub
...
扩展盘后正式集(涨跌停/人气/龙虎榜/板块日线)与盘中观察 API(报价/指数/分时),网站 bridge 按开关接入并回退旧链路;问天改为按数据依赖跟随开关,不再整栈强制旧路径。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-05 17:30:58 +08:00
16ba83ec01
fix(HEL-461): 切换事务失败写入 release-group 审计日志
...
整组切换中断时除回滚与废弃批次外,同步记录
action=release-group 的失败审计,便于后台追踪。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-05 16:02:11 +08:00
1c740a9d48
fix(HEL-461): 后台整组切换异常统一为 FAILED_PRECONDITION
...
管理后台补数在切换事务中断时不再抛出原始异常,
统一映射为 ApiError FAILED_PRECONDITION,并保留旧完整版本。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-05 15:56:28 +08:00
75c2e33b68
fix(HEL-461): CLI/后台强制重发改为整组边界切换
...
eod-refresh --force 与管理后台补数不再单数据集发布,
统一走 force_republish_boundary,避免绕过 A/B 完整边界。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-05 11:26:27 +08:00
32f565ecb9
fix(HEL-461): 整批发布按完整边界重暂存,主档与快照同事务
...
边界内任有缺失则整组重暂存后统一切换,避免旧新批次混发;
refresh_stocks 失败时主档保持旧值,并补齐回归测试。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-05 08:52:50 +08:00
16841e9ae3
fix(HEL-459): 影子比较按请求字段投影,盘后整批原子发布
...
比较侧只对网站本次请求字段计业务差异,忽略数据中枢额外列;
盘后 A/B/重发改为先整批暂存与交叉校验,再单事务切换公开版本。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-05 08:39:31 +08:00
multica-agent and multica-agent
bed6450992
feat(HEL-457): 估值字段级质量门、股票主档每日发布和资金流历史回补
...
- field_gates 按数据集配置关键字段非空率下限/非有限比例/相对上一批次的塌陷保护,
字段大面积为空的批次拒发并保留上一正式批次,可读失败原因入 batches.error
- 股票主档交易日 20:00/23:10 自动刷新并发布版本化快照(eod_stocks + publications),
覆盖新上市/简称变化/N前缀摘除;/v1/stocks 携带 batch_id/published_at,无变化跳过
- moneyflow 历史回补(默认 60 交易日,跳过已发布日期);未发布点查返回
available_from/available_to 与 history_not_backfilled 标记,缺失不再静默
- eod-refresh 新增 --force --dataset 安全重发(仍走全部质量门,上一批次可回滚)
- 保持 HEL-435 盘后重试机制;新增 22 项测试覆盖字段拒发/正常通过/旧批保留/
主档新增改名/资金流覆盖/重复执行幂等
Co-authored-by: multica-agent <github@multica.ai >
2026-09-04 21:36:20 +08:00
总工 and multica-agent
c9892050c3
feat(HEL-435): 盘后未出数时晚间自动重试并提供安全补跑
...
Co-authored-by: multica-agent <github@multica.ai >
2026-09-03 22:30:15 +08:00
a836cda1b2
feat(HEL-421): 回补历史日历和指数并标记区间不完整
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-02 22:16:05 +08:00
5085cacf0d
fix(HEL-412): 刷新降级不再整次失败,并补齐准备中提示
...
手动刷新与自动补跑共用可用数据判定:日线推算或上一交易日快照记为部分/准备中成功,避免前端误报刷新失败。HTTP JSON 解析错误不再把请求正文写入日志。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-02 18:08:40 +08:00
f5dc0f8076
fix(HEL-396): 禁止空数据批次冒充正式发布
...
统一发布入口在有效行数为 0 时不再写成 published,也不推进正式批次指针。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-02 15:56:29 +08:00
031eefab4d
fix(HEL-386): 清理任务按 ISO 截止时间删除 job_runs/src_calls
...
YYYYMMDD 与 ISO 字符串比较会把同年保留期内记录全部误删。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-02 12:26:09 +08:00
3498dd7a4b
feat(HEL-382): 搭建 datahub 底座和盘后正式数据链路
...
新增独立 xiaobai-datahub 服务(SQLite WAL、Tushare 盘后发布、/v1 契约和管理后台),不改现站页面与数据链路。
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-09-02 12:05:26 +08:00