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