# 股票分析 **Repository Path**: skylxl/stock-analysis ## Basic Information - **Project Name**: 股票分析 - **Description**: 股票分析系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-29 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Stock Analysis 股票分析平台 前后端分离的股票分析项目。 ## 技术栈 | 端 | 技术 | |---|---| | 后端 | Python 3.13 + FastAPI + SQLAlchemy + MySQL 8 | | 前端 | Vue3 + Element Plus + Vite + TypeScript | ## 项目结构 ``` stock-analysis/ ├── back-end/ # 后端 │ ├── .env # 环境配置(含数据库密码与必盈licence,不入库) │ ├── requirements.txt # Python 依赖 │ └── app/ │ ├── config.py # 配置读取(pydantic-settings) │ ├── database.py # SQLAlchemy 引擎/会话 │ ├── main.py # FastAPI 入口(建库建表 + 启动定时任务) │ ├── api/ # API 路由包:__init__.py 必盈管理(触发/日志/任务/股票池,路由级鉴权)+ auth.py 认证 │ ├── core/ # 基础设施:BaseEntity、雪花ID、upsert、必盈客户端、密码/JWT │ ├── models/ # 数据模型(60+ 张表,含表/列注释) │ └── services/ # biying/ 接口注册表、拉取器、定时调度;auth_service.py 认证服务 ├── front-end/ # 前端 │ ├── vite.config.ts # 已配 /api → 后端代理 │ └── src/ │ ├── main.ts # Element Plus + Router 注册入口 │ ├── router/index.ts # 路由与顶部菜单树(一二三级,数据驱动可扩展) │ ├── layouts/MainLayout.vue # 主布局(顶部树状菜单) │ ├── components/MenuTree.vue # 递归菜单树组件 │ ├── api/ # biying.ts 管理 API + auth.ts 登录/令牌管理 │ ├── views/LoginView.vue # 登录页 │ └── views/biying/ # 接口管理 / 拉取日志 / 定时任务 └── docs/ # 必盈API文档、差异说明 ``` ## 端口约定 | 服务 | 地址 | |---|---| | MySQL 8 | 127.0.0.1:3307 | | 后端 FastAPI | http://127.0.0.1:8010 | | 前端 Vite | http://localhost:5173 | ## 快速开始 ### 1. 数据库 MySQL 8 运行于 `127.0.0.1:3307`,数据库 `stock_analysis` 由后端首次启动时自动创建,无需手动建库。 ### 2. 后端 ```powershell cd back-end # 创建虚拟环境并安装依赖(清华镜像加速) python -m venv .venv .venv\Scripts\pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 启动(--reload 开发模式热重载) .venv\Scripts\python.exe -m uvicorn app.main:app --reload --port 8010 ``` ### 3. 前端 ```powershell cd front-end npm install npm run dev ``` 打开 http://localhost:5173,顶部菜单:数据管理 → 必盈数据 → 接口管理 / 拉取日志 / 定时任务。 ## 必盈数据拉取 - 首次使用顺序:登录(默认账号 `admin / admin123`,见下方配置说明修改)→ 触发"股票列表"(`hslt_list`)与"京市股票列表"(`bj_list_all`)→ 点"同步股票池",此后个股类接口不填代码即按股票池全量拉取。 - 登录认证:JWT 令牌(12 小时有效),未登录访问业务页面自动跳转登录页;后端全部 `/api/biying/*` 接口需携带 `Authorization: Bearer `;首次启动自动引导创建管理员(用户表为空时)。 - 启动后端时自动建库建表(约 62 张,含表/列注释),并注册 64 个定时拉取任务(APScheduler,按各接口文档的数据更新时间编排)。 - 补数据:在页面"接口管理"中点"触发",按接口类型填写参数(股票代码/分时级别/除权方式/时间范围等)后台执行,"拉取日志"可查结果。 - 详见 `docs/必盈API对接差异说明.md`(本地/线上文档差异、权限受限接口、待人工事项)。 ## 配置说明(back-end/.env) `.env` 不入库(见 .gitignore),需本地创建: ```ini DB_HOST=127.0.0.1 DB_PORT=3307 DB_USER=root DB_PASSWORD=<你的MySQL密码> DB_NAME=stock_analysis APP_HOST=127.0.0.1 APP_PORT=8010 BIYING_LICENCE=<必盈数据licence> BIYING_MIN_INTERVAL=0.25 # 登录认证 JWT_SECRET=<长随机串> JWT_EXPIRE_HOURS=12 ADMIN_INIT_PASSWORD=<管理员初始密码> ``` ## API 接口 | 方法 | 路径 | 说明 | |---|---|---| | GET | /api/health | 后端存活检查 | | GET | /api/health/db | 数据库连通检查 | | POST | /api/auth/login | 用户名密码登录,返回 JWT | | GET | /api/auth/me | 当前登录用户信息(需令牌) | | GET | /api/biying/interfaces | 必盈接口列表(70 个,含调度配置,需令牌) | | POST | /api/biying/trigger | 手动触发接口拉取(补数据) | | GET | /api/biying/trigger/status | 手动触发运行状态与最近结果 | | GET | /api/biying/logs | 拉取日志分页查询 | | GET | /api/biying/jobs | 定时任务列表与下次执行时间 | | POST | /api/biying/jobs/start | 启动定时调度(异常恢复) | | POST | /api/biying/pool/sync | 股票列表同步进股票池 | | GET | /api/biying/pool | 股票池统计 | Swagger 文档:http://127.0.0.1:8010/docs