astock-agent/README.md
2026-04-13 14:32:41 +08:00

147 lines
4.3 KiB
Markdown
Raw 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.

# 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 有请求频率限制,请勿过于频繁地手动触发扫描