122 lines
3.6 KiB
Markdown
122 lines
3.6 KiB
Markdown
# 股票行情平台
|
||
|
||
全栈股票行情系统:实时大盘云图 · 多周期K线 · 自选股 · 价格预警
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|---|---|
|
||
| 前端 | React 18 + TypeScript + Vite + Ant Design 5 + ECharts + LightweightCharts |
|
||
| 后端 | Python 3.12 + FastAPI + SQLAlchemy 2 + Celery |
|
||
| 数据 | AKShare (免费A股数据) + Tushare Pro (可选) |
|
||
| 存储 | PostgreSQL 16 + Redis 7 |
|
||
| 部署 | Docker Compose + Nginx |
|
||
|
||
## 快速启动
|
||
|
||
### 方式一:Docker Compose(推荐,跨平台通用)
|
||
|
||
> 前提:安装 [Docker Desktop](https://www.docker.com/products/docker-desktop/)(Windows/Mac/Linux 均支持)
|
||
|
||
```powershell
|
||
# 复制环境变量
|
||
Copy-Item .env.example .env
|
||
# 编辑 .env,修改密码等配置(记事本或 VS Code 打开)
|
||
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 查看后端日志
|
||
docker-compose logs -f backend
|
||
```
|
||
|
||
访问:
|
||
- 前端:http://localhost:3000
|
||
- API 文档:http://localhost:8000/api/docs
|
||
- Nginx 入口:http://localhost
|
||
|
||
---
|
||
|
||
### 方式二:Windows 本地开发(不打包进 Docker)
|
||
|
||
> 前提:安装 Python 3.12、Node.js 20、Docker Desktop(仅用于跑数据库)
|
||
|
||
**一键启动脚本(推荐)**
|
||
```powershell
|
||
# 在项目根目录用 PowerShell 运行
|
||
.\scripts\dev-windows.ps1
|
||
```
|
||
|
||
脚本会自动:启动 PostgreSQL+Redis(Docker)→ 启动 FastAPI → 启动 Celery → 启动 Vite
|
||
|
||
**手动启动步骤**
|
||
|
||
```powershell
|
||
# 第1步:只启动数据库(Docker)
|
||
docker-compose -f docker-compose.dev.yml up -d
|
||
|
||
# 第2步:后端
|
||
cd backend
|
||
python -m venv venv
|
||
.\venv\Scripts\Activate.ps1
|
||
pip install -r requirements.txt
|
||
uvicorn app.main:app --reload --port 8000
|
||
|
||
# 第3步:Celery(新开一个 PowerShell 窗口,Windows 必须加 --pool=solo)
|
||
cd backend
|
||
.\venv\Scripts\Activate.ps1
|
||
celery -A celery_app.worker worker -l info --pool=solo
|
||
|
||
# 第4步:前端(新开一个 PowerShell 窗口)
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
访问:
|
||
- 前端:http://localhost:5173
|
||
- API 文档:http://localhost:8000/api/docs
|
||
|
||
## 功能页面
|
||
|
||
| 页面 | 路径 | 说明 |
|
||
|---|---|---|
|
||
| 登录/注册 | `/login` | JWT 认证 |
|
||
| 大盘云图 | `/` | A股实时热力图,WebSocket 推送 |
|
||
| 股票详情 | `/stock/:symbol` | 分时/五日/日K/周K/月K |
|
||
| 自选股 | `/watchlist` | 自选股管理 |
|
||
| 价格预警 | `/alerts` | 价格/涨跌幅预警配置 |
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
stock/
|
||
├── backend/
|
||
│ ├── app/
|
||
│ │ ├── main.py # FastAPI 入口 + WebSocket
|
||
│ │ ├── core/ # 配置、数据库、Redis、JWT
|
||
│ │ ├── api/v1/ # 路由:auth, stocks, watchlist, alerts
|
||
│ │ ├── models/ # SQLAlchemy ORM 模型
|
||
│ │ ├── schemas/ # Pydantic 校验
|
||
│ │ ├── services/ # AKShare 数据服务
|
||
│ │ └── websocket/ # WebSocket 连接管理
|
||
│ └── celery_app/ # 定时任务
|
||
├── frontend/
|
||
│ └── src/
|
||
│ ├── pages/ # Login, Home, StockDetail, Watchlist, Alerts
|
||
│ ├── components/ # Layout, Charts(K线/分时/热力图)
|
||
│ ├── services/ # Axios API 封装
|
||
│ ├── stores/ # Zustand 状态管理
|
||
│ └── hooks/ # useWebSocket
|
||
├── nginx/nginx.conf
|
||
├── docker-compose.yml
|
||
└── .env
|
||
```
|
||
|
||
## 数据源
|
||
|
||
- **AKShare**:免费,支持 A股/港股/美股/基金,日线/分钟K线/实时行情
|
||
- **Tushare Pro**:积分制,专业复权数据(在 `.env` 中配置 `TUSHARE_TOKEN`)
|
||
|
||
> 注:AKShare 调用新浪/东财公开接口,数据有 15-30 分钟延迟(非付费实时数据源)
|