Files
auv/docs/api-data-sources.md

8.2 KiB
Raw Permalink Blame History

数据接口 & 数据源一览

架构概览

前端 (fetch)  →  后端 FastAPI (路由层)  →  数据源服务层  →  第三方 API
  • 前端统一走后端代理,前端不直接调第三方
  • 每个接口有主源 + 备选降级,降级对前端透明
  • 后端服务层有 SQLite 缓存(6-24h)和内存缓存(60s)

1. 股票搜索 /api/stock/search

项目 内容
前端调用 fetchStockSearch(keyword)src/lib/stock-api.ts
路由 GET /api/stock/search?keyword=routes/stock.py:12
用途 模糊搜索股票(名称/代码/拼音)

数据源:

优先级 方式 可靠性
主选 腾讯智能搜索 smartbox.gtimg.cn HTTPS JSONP 稳定,覆盖全
降级 腾讯行情接口 qt.gtimg.cn HTTPS 文本 仅当 keyword=6位代码且搜索无结果时

2. 实时行情 /api/stock/quote

项目 内容
前端调用 fetchStockQuote(code)src/lib/stock-api.ts:137
路由 GET /api/stock/quote?code=routes/stock.py:38
用途 获取当前实时价格、开盘价、昨收、最高最低、成交量额、盘口
前端使用 股票详情页基本信息区(价格、涨跌幅、内外盘)

数据源:

优先级 方式 可靠性
主选 腾讯行情 qt.gtimg.cn HTTPS GBK文本 A股全量覆盖,无IP限流
降级 无响应则返回 404

字段映射: 名称、当前价、昨收、今开、最高、最低、成交量(手)、成交额(万)、外盘、内盘、涨跌额、涨跌幅


3. 历史 K 线 / 每日行情明细 /api/stock/history

项目 内容
前端调用 fetchStockHistory(code, days)src/lib/stock-api.ts:182
路由 GET /api/stock/history?code=&days=routes/stock.py:49
用途 日K前复权 OHLCV、涨跌幅、成交额
前端使用 K线图 + 每日行情明细表(涨跌幅列)

数据源:

优先级 API 可靠性
主选 东方财富 push2his kline/get (curl_cffi chrome120) ⚠️ IP 限流严重,常被拒
备选① 腾讯 web.ifzq.gtimg.cn HTTPS 稳定可靠
备选② 新浪 money.finance.sina.com.cn HTTPS 偶有超时

当前实际工作源: 腾讯(备选①)

增强字段(东方财富源独有,走腾讯时无):

  • turnover — 成交额(元)
  • amplitude — 振幅(%
  • changePercent — 涨跌幅(%)(腾讯已通过连续收盘价计算补齐)
  • turnoverRate — 换手率(%

东方财富 push2his kline/get 与 fund-flow 同域名但路径不同,kline/get 有额外反爬。 即使使用 curl_cffi + chrome120 指纹也无法绕过,暂不修复。


4. 资金流向 /api/stock/fund-flow

项目 内容
前端调用 fetchStockFundFlow(code, name, days)src/lib/stock-api.ts:248
路由 GET /api/stock/fund-flow?code=&name=&days=routes/stock.py:147
用途 日度主力净流入、超大单/大单/中单/小单明细、占比、累计值
前端使用 每日行情明细表(主力净流入列 + 成交额列),资金流向图表

数据源:

优先级 API 可靠性
主选 东方财富 push2his fflow/daykline/get (httpx) 稳定,无 IP 限流
备选 MX 妙想 API mkapi2.dfcfs.com (HTTP POST + apikey) ⚠️ 有每日配额,多 key 轮询+缓存

字段映射(东方财富):

f51=日期, f52=主力净流入, f53=小单, f54=中单, f55=大单, f56=超大单
f57-f61=各占比%, f62=收盘价, f63=涨跌幅

MX API 当前保留为备选。配置 MX_APIKEYMX_APIKEY_{1-9} 环境变量启用。 MX 数据只有主力净流入 + 成交额,无大/中/小单拆分(拆分的比例是估算的)。


5. 公司概况 /api/stock/profile

项目 内容
前端调用 fetchCompanyProfile(code)src/lib/stock-api.ts:337
路由 GET /api/stock/profile?code=routes/stock.py:80
用途 公司全名、行业、高管、联系方式、注册信息、发行信息
前端使用 股票详情页「公司概况」tab

数据源:

优先级 API 可靠性
主选 东方财富 F10 emweb.securities.eastmoney.com HTTPS 稳定,24h 缓存
降级

6. 财务指标 /api/stock/financial

项目 内容
前端调用 fetchFinancialData(code, years)src/lib/stock-api.ts:415
路由 GET /api/stock/financial?code=&years=routes/stock.py:91
用途 每股指标、盈利能力、成长能力、偿债能力、营运能力
前端使用 股票详情页「财务分析」tab(表格+图表)

数据源:

优先级 API 可靠性
主选 东方财富数据中心 datacenter.eastmoney.com HTTPS 稳定,6h 缓存
降级

7. 主营构成 /api/stock/business-segments

项目 内容
前端调用 fetchBusinessSegments(code, byType, years)src/lib/stock-api.ts:382
路由 GET /api/stock/business-segments?code=&by_type=&years=routes/stock.py:119
用途 收入构成(按产品/行业/地区)、成本构成、利润占比、毛利率
前端使用 股票详情页「经营分析」tab(饼图)

数据源:

优先级 API 可靠性
主选 东方财富数据中心 datacenter.eastmoney.com HTTPS 稳定,6h 缓存
降级

8. 板块资金流向 /api/sectors

项目 内容
前端调用 fetchSectors(type)src/lib/stock-api.ts:461
路由 GET /api/sectors?type=routes/sectors.py:9
用途 行业/概念板块列表,按主力净流入排序
前端使用 /sectors 板块资金流向页面

数据源:

优先级 API 可靠性
主选 东方财富 push2 push2.eastmoney.com (curl_cffi chrome120) 有 IP 限流,60s 内存缓存 + session 重建
备选 AkShare ak.stock_fund_flow_industry/concept 慢(同步调用),列名需适配

字段映射(东方财富 push2):

f62=主力净流入, f184=主力净流入占比
f66/f69=超大单净流入/占比, f72/f75=大单净流入/占比
f78/f81=中单净流入/占比, f84/f87=小单净流入/占比
f70=成交额

push2.eastmoney.com 有较激进的 IP 限流。通过 curl_cffi 模拟浏览器 TLS 指纹 + 持久化 session + 60s 缓存 + 自动 UT 刷新 + session 重建来缓解。


9. 估值数据(外部)

股票详情页「估值分析」tab 的数据从外部服务加载(landing-page),不由后端代理。


数据源总结

第三方源 域名 使用场景 限流情况 是否需要反爬
腾讯财经 qt.gtimg.cn, web.ifzq.gtimg.cn, smartbox.gtimg.cn 搜索、行情、K线 基本无限流
新浪财经 money.finance.sina.com.cn K线降级 宽松
东方财富 push2his push2his.eastmoney.com 资金流向、K线 部分路径限流kline/get 被禁,fflow/daykline/get 正常) 需 curl_cffi
东方财富 push2 push2.eastmoney.com 板块数据 IP 限流严重 需 curl_cffi
东方财富数据中心 datacenter.eastmoney.com 财务数据、主营构成 宽松
东方财富 F10 emweb.securities.eastmoney.com 公司概况 宽松
MX 妙想 mkapi2.dfcfs.com 资金流向备选 每日配额(113错误码)
AkShare 同花顺/东方财富 板块降级 慢但无限制