Files
stock/README.md
2026-06-11 01:41:47 +08:00

122 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 股票行情平台
全栈股票行情系统:实时大盘云图 · 多周期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+RedisDocker→ 启动 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 分钟延迟(非付费实时数据源)