147 lines
4.3 KiB
Markdown
147 lines
4.3 KiB
Markdown
# A股分析推荐 Agent
|
||
|
||
基于资金驱动的四层漏斗模型,盘中实时分析推荐 A 股。支持趋势突破/缩量回踩/启动型三种策略,结合 LLM (DeepSeek) 生成个股分析。
|
||
|
||
## 技术栈
|
||
|
||
- **Backend**: Python 3.10+ / FastAPI / SQLAlchemy / Tushare / APScheduler
|
||
- **Frontend**: Next.js 14 / React 18 / TypeScript / Tailwind CSS / ECharts
|
||
- **Database**: SQLite (aiosqlite)
|
||
- **LLM**: DeepSeek API(可选,用于 AI 分析)
|
||
|
||
## 前置条件
|
||
|
||
- Python 3.10+
|
||
- Node.js 18+
|
||
- [Tushare Pro](https://tushare.pro/) Token(用于获取 A 股行情数据)
|
||
- DeepSeek API Key(可选,不配置则跳过 AI 分析功能)
|
||
|
||
## 快速开始
|
||
|
||
### 1. 克隆项目
|
||
|
||
```bash
|
||
git clone <repo-url>
|
||
cd astock-agent
|
||
```
|
||
|
||
### 2. 启动 Backend
|
||
|
||
```bash
|
||
cd backend
|
||
|
||
# 创建虚拟环境
|
||
python -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 配置环境变量
|
||
cp .env.example .env
|
||
```
|
||
|
||
编辑 `backend/.env`,填入你的 Token:
|
||
|
||
```env
|
||
ASTOCK_TUSHARE_TOKEN=你的Tushare Token
|
||
ASTOCK_DEBUG=true
|
||
|
||
# 可选:配置后启用 AI 分析功能
|
||
ASTOCK_DEEPSEEK_API_KEY=你的DeepSeek API Key
|
||
```
|
||
|
||
启动服务:
|
||
|
||
```bash
|
||
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||
```
|
||
|
||
首次启动会自动创建 SQLite 数据库和默认管理员账户:
|
||
- 用户名:`admin`
|
||
- 密码:`admin123`
|
||
|
||
### 3. 启动 Frontend
|
||
|
||
```bash
|
||
cd frontend
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 启动开发服务器
|
||
npm run dev
|
||
```
|
||
|
||
前端默认运行在 `http://localhost:3002`,通过 Next.js rewrites 代理 API 请求到后端 `localhost:8000`。
|
||
|
||
### 4. 访问
|
||
|
||
浏览器打开 http://localhost:3002 ,使用默认管理员账户登录。
|
||
|
||
## 环境变量说明
|
||
|
||
| 变量 | 必填 | 默认值 | 说明 |
|
||
|------|------|--------|------|
|
||
| `ASTOCK_TUSHARE_TOKEN` | 是 | - | Tushare Pro 数据接口 Token |
|
||
| `ASTOCK_DEBUG` | 否 | `false` | 开启调试日志 |
|
||
| `ASTOCK_DEEPSEEK_API_KEY` | 否 | - | DeepSeek API Key,配置后启用 AI 分析 |
|
||
| `ASTOCK_DEEPSEEK_BASE_URL` | 否 | `https://api.deepseek.com/v1` | DeepSeek API 地址 |
|
||
| `ASTOCK_FRONTEND_URL` | 否 | `http://localhost:3002` | 前端地址(CORS 白名单) |
|
||
| `ASTOCK_JWT_SECRET` | 否 | `change-me-in-production` | JWT 签名密钥,生产环境务必修改 |
|
||
| `ASTOCK_ADMIN_USERNAME` | 否 | `admin` | 默认管理员用户名 |
|
||
| `ASTOCK_ADMIN_PASSWORD` | 否 | `admin123` | 默认管理员密码 |
|
||
|
||
完整配置项见 `backend/app/config.py`。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
astock-agent/
|
||
├── backend/
|
||
│ ├── app/
|
||
│ │ ├── main.py # FastAPI 入口
|
||
│ │ ├── config.py # 配置管理
|
||
│ │ ├── api/ # API 路由(行情、板块、推荐、个股、聊天、认证)
|
||
│ │ ├── analysis/ # 分析引擎(信号检测、板块扫描、选股)
|
||
│ │ ├── core/ # 认证、缓存等核心模块
|
||
│ │ ├── data/ # 数据层(Tushare、腾讯行情客户端)
|
||
│ │ ├── db/ # 数据库表定义与初始化
|
||
│ │ ├── engine/ # 调度器(定时扫描任务)
|
||
│ │ └── llm/ # LLM 集成(DeepSeek)
|
||
│ ├── requirements.txt
|
||
│ ├── .env.example
|
||
│ └── Dockerfile
|
||
├── frontend/
|
||
│ ├── src/
|
||
│ │ ├── app/ # Next.js 页面(总览、推荐、板块、个股、对话)
|
||
│ │ ├── components/ # 组件(图表、卡片、导航等)
|
||
│ │ ├── hooks/ # 自定义 Hooks
|
||
│ │ └── lib/ # 工具函数、API 客户端
|
||
│ ├── tailwind.config.ts
|
||
│ ├── next.config.js
|
||
│ └── package.json
|
||
└── .gitignore
|
||
```
|
||
|
||
## 构建生产版本
|
||
|
||
```bash
|
||
# Backend
|
||
cd backend
|
||
pip install -r requirements.txt
|
||
uvicorn app.main:app --host 0.0.0.0 --port 8000
|
||
|
||
# Frontend
|
||
cd frontend
|
||
npm run build
|
||
npm run start
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
- 首次启动后,系统会在 A 股交易时段(9:30-11:30, 13:00-15:00)自动执行扫描任务
|
||
- 也可以在推荐列表页手动点击「立即扫描」触发
|
||
- 数据库为 SQLite,数据文件 `astock.db` 自动生成在 `backend/` 目录下
|
||
- Tushare API 有请求频率限制,请勿过于频繁地手动触发扫描
|