Files
xiaobai-review/xiaobai-datahub/README.md
T
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

2.8 KiB
Raw Blame History

xiaobai-datahub

独立行情数据中枢(HEL-382 / P0)。与 xiaobai-review 同仓库、不同容器、不共享数据库文件。 本阶段不部署现网;只提供可本地运行、可自测的底座和盘后正式数据链路。

做什么

  • SQLite WAL datahub.db,容器名 xiaobai-datahub,端口 8766
  • Tushare 盘后正式数据:交易日历、股票主档、daily、daily_basic、adj_factor、index_daily、moneyflow、stk_auction
  • 暂存 → 校验 → 整批原子发布 → 可回滚
  • /v1 稳定接口(X-Datahub-Token
  • /admin/ 最小管理后台(总览 / 数据源 / 调度 / 发布 / 数据集 / 审计)
  • 东财/腾讯/同花顺/选股宝/AKShare/iFinD 适配器位已预留,本阶段不拉实时源

单位口径(相对现站)

现站 xiaobai-review 按 Tushare 原始单位入库、展示时再换算。中枢在归一化层一次换算:

字段 Tushare / 现站 中枢 canonical
daily.amount / index_daily.amount 千元 元(×1000
daily.vol / index_daily.vol 股(×100
moneyflow.*_amount 万元 元(×1e4
daily_basic.total_mv / circ_mv 万元 元(×1e4
stk_auction.amount

差异为口径升级,golden 测试按上表对照,不为 0 的字段都有说明。

本地启动(不走 Docker

cd xiaobai-datahub
python -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env
# 填入 DATAHUB_ENCRYPTION_KEY / DATAHUB_TOKEN / DATAHUB_ADMIN_PASSWORD / TUSHARE_TOKEN
# 生成 Fernet 密钥:
# python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
.venv/bin/python server.py --host 127.0.0.1 --port 8766

Docker(独立 compose,不改现网 review 服务)

cd xiaobai-datahub
cp .env.example .env   # 填密钥
mkdir -p data
docker compose build
docker compose up -d

仓库根目录另有 compose.datahub.yaml,供总工以后与现有 compose.yaml 叠加部署,本卡不执行现网 up

自测

cd xiaobai-datahub
python -m unittest discover -s tests -v

不调用真实 Tushare;用内存/临时库和假适配器。

备份

每日 00:40 任务把 datahub.db 备份到 data/backups/(保留 14 份)。也可手动:

python -c "from pathlib import Path; from datahub.db import HubDB; HubDB(Path('data/datahub.db')).backup_to(Path('data/backups/manual.db'))"

安全

  • 密钥只以 configured / 末4位 / 更新时间 出现在后台,不进日志、不进 /v1
  • 回滚、补数需重新输入密码 + 确认词
  • 容器非 rootuid 10002)、read_only、cap_drop ALL