Implementation Report

FinDataHub 项目实施分析报告

从数据采集到数据消费 — 三层架构全链路实施状态

2026-08-09 · v1.0 · 全部 P1-P5 阶段

一、实施总览

14.7M
数据总行数
5,751
股票覆盖
2
数据源
0.85
质量评分
6
微服务
100%
P1-P4 完成
阶段内容状态关键指标
P1采集层:双源交叉验证 + AKShare 修复 + 北交所重拉DONE匹配率 96-100%
P2预处理层:7 步 Pipeline + 4 级门控 + 策略画像DONE质量分 0.85
P3使用层:SDK 11 方法 + API 14 端点DONE4 层递进接入
P4AI 接入:Skills + MCP 7 工具DONE自然语言直达数据
P5云端扩展:阿里云 MySQL 同步 + 版本管理 + 血缘追踪DONE14.8GB 全量同步

二、数据规模与质量

stock_daily

12,670,167 行 · 5,751 只股票 · 2021-01-04 ~ 2026-08-07

stock_weekly

1,681,905 行 · 质量分 0.85

stock_monthly

395,487 行 · 质量分 0.85

fina_indicator

244,601 行 · 最新 ROE=2.65%

stock_basic

5,549 行 · 全市场股票基础信息

辅助表(6 张)

_data_issues / _table_meta / _retry_queue 等

图 1:本地数据规模(行数)
图 2:各板块股票分布
图 3:阿里云 RDS 数据分布 (MB)

三、双源交叉验证

图 4:TuShare vs AKShare 匹配率历史趋势
日期对比对数匹配率差异差异字段分布
2026-08-075,53596.1%216pct_chg(217) / pre_close(101)
2026-07-015,51199.8%13pct_chg(12) / pre_close(1)
2025-01-025,33199.9%3pct_chg(2) / vol(1)
2024-01-025,24199.9%3pre_close(3)
2023-01-034,92796.7%161pct_chg(155) / pre_close(6)

差异主要集中在涨跌幅(pct_chg)和昨收价(pre_close)两个字段,成交量/成交额差异极小(共 6 条)。最新日(2026-08-07)匹配率偏低至 96.1%,可能是某数据源更新时序延迟导致。

四、数据质量校验

检查项结果实现
OHLC 关系违规0 行cleaner.py — 自动修正 highhigh / close>high
价格为负0 行gate.py — Gate3 BLOCK 拦截
AKShare 成交额异常637 万行修正cleaner._fix_akshare_broken_amount
科创板 vol 单位688/689 ÷100cleaner._fix_akshare_star_vol
AKShare 涨跌幅重算从 close/pre_close 推导cleaner._recompute_akshare_pct_chg
AKShare pre_close 时效253,513 行更新fix_akshare_preclose.py
北交所数据补齐333 只 / 186,460 行em_fetch.py — 新浪源直连

五、完整模块清单

层级模块文件行数职责
L1 采集tushare_fetcherServices/tushare_fetcher/~800TuShare Pro API 封装 + 幂等写入
akshare_fetcherServices/akshare_fetcher/~1200AKShare 腾讯/东财/新浪多接口路由
DatabaseManagertushare_fetcher/core/db.py
akshare_fetcher/core/db.py
50+60继承 BaseDatabaseManager,覆写配置路径
RetryManagerfindatahub_core/retry.py~80指数退避 + 熔断 + 失败队列
L2 预处理DataCleanerfindatahub_core/cleaner.py~2005 个子步骤(类型修正/去重/字段清洗/OHLC/AK修复)
DataImputerfindatahub_core/imputer.py~803 种策略(ffill/linear/median)
OutlierDetectorfindatahub_core/outlier.py~70IQR/MAD 检测 + 标记列
StatsAnalyzerfindatahub_core/stats.py~100描述性统计 + 缺失率 + 分布特征
CorrelationAnalyzerfindatahub_core/correlation.py~120Pearson/Spearman + 冗余检测
PCAProcessorfindatahub_core/pca.py~90PCA 降维 + Normalizer(3 种)
QualityGatefindatahub_core/gate.py~904 级门控 + BLOCK/WARN/INFO
CrossValidatorfindatahub_core/cross_validator.py~150OHLCV 8 字段双源对比
L3 使用Python SDKfindatahub/client.py~33011 个方法(daily/weekly/monthly/fina/search/export 等)
REST APIfindatahub/api.py~27014 个端点(含健康监控)
Skills 层findatahub/skill.md—5 表 schema + 查询示例
MCP 服务findatahub/mcp_server.py~2107 个 MCP 工具(搜索/日线/财务/质量/统计等)
基础设施Pipelinefindatahub_core/pipeline.py~340DAG 编排 + 并行执行 + 反馈回路
BaseDatabaseManagerfindatahub_core/db.py~280连接池 + 幂等 upsert + safe_identifier
ProfileLoaderfindatahub_core/profile.py~50YAML 策略画像加载(3 种)
HealthMonitorfindatahub_core/health.py~60API 耗时/成功率 + REST 端点
P5 云端CloudSyncWorkerflows/cloud_sync.py~180全量 + 增量同步 to RDS
数据版本_data_versions—版本号标记 + 回滚查询
数据血缘_data_lineage—Pipeline Step 自动记录行数/耗时

六、架构重构摘要

重构项效果状态
删除 alpha-common 废弃模块减少 4 文件,消除混淆DONE
两个 fetcher db.py 继承 BaseDatabaseManager670 行 → 110 行(减少 83%)DONE
bootstrap.py 移除反向依赖核心层 0 import fetcherDONE
FetchStepProtocol 协议采集器通过接口注入 PipelineDONE
pyproject.toml 补声明findatahub-client → findatahub-coreDONE
Docs 文档整理10 文件 → 3 分类目录 + 3 READMEDONE
Tests/ 提升到根级5 端到端用例全部通过DONE
设计文档合并14 文档 → 10 (减少 29%)DONE

七、最终目录结构

FinDataHub/
├── App/                          # macOS SwiftUI 桌面应用(29 文件)
├── Docs/                         # 文档中心
│   ├── README.md                 # 总索引
│   ├── pipeline/                 # 数据管道架构
│   │   ├── findatahub-data-pipeline.html    # 架构设计 + 规范(合并)
│   │   ├── rate_limit_pull_plan.md
│   │   └── EXECUTION_PLAN.md     # 已归档
│   ├── macos/                    # macOS App 设计
│   │   ├── DESIGN.md             # HIG 设计 + Liquid Glass(合并)
│   │   └── DEVLOG.md
│   └── tracking/                 # 项目管理
│       └── TODO.md               # 待办 + P1-P4 完成记录(合并)
├── Services/                     # 6 个微服务
│   ├── tushare_fetcher/          # TuShare 采集(db.py 50 行)
│   ├── akshare_fetcher/          # AKShare 采集(db.py 60 行)
│   ├── findatahub-core/          # 核心预处理(18 模块 + 6 flows)
│   ├── findatahub-client/        # SDK + API + MCP
│   ├── kuaixun-service/          # 快讯 API
│   └── kuaixun-frontend/         # 快讯 Vue.js 前端
├── Tests/                        # 跨层集成测试(5 用例)
├── Scripts/                      # 运维部署脚本
└── implementation-report/        # 本报告

八、架构合规状态

核心铁律:依赖单向流动(采集层 → 核心层 → 使用层)
✅ 12 个核心模块 0 反向依赖
✅ FetchStepProtocol 协议(依赖倒置)
✅ pyproject.toml 全部声明
✅ 两个 fetcher db.py 继承 BaseDatabaseManager
✅ bootstrap.py 使用 BaseDatabaseManager 直连
0
反向依赖
6
Service(删1)
3
策略画像
14.8GB
RDS 同步