Files
simon 6ec198687c feat(djapi): 新增日报查询 API(news/reports + news/events)及文档
- api/report/ 包:query(连库+SQL)/ views(2 视图)/ serializers(OpenAPI)/ tests(17 单测)
- urls.py 注册 news/reports/、news/events/;settings.py SPECTACULAR 加「日报」tag
- .env.example 补 NEWS_DB_* 占位配置;README/continuation.md 更新
- docs/news_report_api.md 使用手册;CLAUDE*.md 修正 CLI 路径为 finance/ 前缀
2026-08-05 20:51:42 +08:00
..

djapi

Django 5.2 项目,提供 A 股金融数据 API 和新闻联播视频处理能力。

架构

djapi/
├── manage.py              # Django 入口
├── djapi/                  # 项目配置
│   ├── settings.py         # Django 设置、CORS、DRF
│   ├── urls.py             # 根路由 + OpenAPI schema
│   └── wsgi.py             # WSGI 入口
├── api/                    # 唯一 app
│   ├── views.py            # 视图层(薄转发,调用 stock 模块)
│   ├── urls.py             # /api/* 路由(~20 个端点)
│   ├── stock/              # 股票数据模块
│   │   ├── config.py       # Tushare token、扫描参数
│   │   ├── stock_utils.py  # 通用工具(tscode 校验、NaN 修正、view 包装器)
│   │   ├── stock_basic.py  # 日线行情、基本信息、行业查询
│   │   ├── getStockParam.py    # 个股参数
│   │   ├── getStockEp.py       # TTM / 季度 EPS
│   │   ├── getIndexs.py        # 指数行情
│   │   ├── stockMargin.py      # 融资融券
│   │   ├── getStockFina.py     # 财务报表分析
│   │   ├── getStockDiv2.py     # 股息率计算(TTM 分红 + 毛刺平滑)
│   │   ├── smoothBrush.py      # 数据平滑算法
│   │   ├── divSearch.py        # 全市场股息率批量扫描
│   │   ├── xwlbDaily.py        # 新闻联播数据查询
│   │   └── mysqlHandle.py      # MySQL 连接封装
│   └── video/               # 新闻联播视频处理(独立模块)
│       ├── getVideo5.py     # 主流程:抓取→下载→识别→入库
│       ├── audioRead.py     # 音频转换、分割、ASR 识别
│       ├── deepseek.py      # DeepSeek API 封装
│       ├── ai.py            # AI 调用函数
│       ├── newsProcess.py   # 新闻分割+标题提取
│       └── main.py          # 定时任务入口
├── static/                  # 静态文件(collect 后的 admin 资源)
├── uwsgi.ini                # uWSGI 配置
└── requirements.txt         # Python 依赖

数据流

股票 APIHTTP 请求views.py 提取参数 → viewFunc_tsCodeAndDate() 统一包装 → stock/*.py 调用 Tushare API → pandas DataFrame → JsonResponse

视频处理main.pygetVideo5.py 抓取 CCTV 视频页 → yt-dlp 下载 → ffmpeg 提取 MP3 → pydub 静音分割 → DashScope Paraformer ASR → MySQL → newsProcess.py 调用 DeepSeek 分割新闻+生成标题 → MySQL

外部依赖

服务 用途 相关文件
Tushare A 股行情、财报、分红、指数 api/stock/*.py
DeepSeek API 新闻文本分割、摘要 api/video/deepseek.py, ai.py
DashScope (Qwen) ASR 语音识别、文本纠错 api/video/audioRead.py, ai.py
MySQL 股票数据、新闻联播数据 mysqlHandle.pystock 和 video 各一份)
yt-dlp + ffmpeg 视频下载、音频提取 api/video/getVideo5.py

快速开始

# 安装依赖
pip install -r requirements.txt

# 开发服务器
python manage.py runserver 0.0.0.0:8000

# 数据库初始化
python manage.py migrate
python manage.py createsuperuser

# uWSGI 部署
uwsgi --ini uwsgi.ini
uwsgi --reload uwsgi.pid
uwsgi --stop uwsgi.pid

API 概览

基础 URL/api/

端点 参数 说明
stockbasic/ tscode, start_date, end_date 日线行情
stockinfo/ tscode 个股基本信息
stockparam/ tscode, start_date, end_date 个股参数(市值等)
industrys/ industry 按行业查股票列表
indexByName/ index_name 按名称查指数
indexDatas/ index_name, start_date, end_date 指数日行情
stockep/ tscode, start_date, end_date TTM EPS
quarterlyEps/ tscode, start_date, end_date 季度 EPS
finance/ tscode, start_date, end_date 财务报表分析
getdiv/ tscode, start_date, end_date 股息率(含 TTM
dailymargin/ trade_date, exchange_id 每日融资融券汇总
stockmargin/ tscode, start_date, end_date 个股融资融券
xwlbNews/ start_date, end_date 新闻联播(原始识别文本)
xwlbFine/ start_date, end_date 新闻联播(AI 分割后)
news/reports/ report_type, start_date, end_date, id 日报查询(默认最近 24h;传 id 返回单份详情含事件)
news/events/ days, importance, report_type, section, limit 重要事件聚合(跨日报,最近 N 天 importance≥阈值)

日报查询接口详细说明见 docs/news_report_api.md(表结构见 djapi/docs/db_schema.md)。

API 文档(Swagger):/api/docs/ OpenAPI Schema/api/schema/

部署

  • 服务器路径:/home/simon/myquant/djapi/
  • uWSGI 监听 127.0.0.1:5004nginx 反向代理
  • 域名:api.doorcome.cnechart.doorcome.cn
  • 虚拟环境:/opt/miniconda/envs/django
  • Python 版本:3.10

TODO

  • 将硬编码的 API Key / Token / 数据库密码迁移到环境变量
  • 视图片段从 JsonResponse 迁移到 DRF ViewSet + Serializer,完善 Swagger 文档
  • 添加接口限流和认证机制
  • 补充单元测试(当前 tests.py 为空)
  • config.py 中的交易所、行业列表等改为可动态配置
  • video 模块的 db.sqlite3 不应随代码提交,添加到 .gitignore
  • 数据库密码、API Key 出现在多个 __pycache__/*.pyc 中,需要清理历史
  • video 模块中废弃脚本(wasted/)确认后清理