|
| 1 | +# 快速开始 |
| 2 | + |
| 3 | +<cite> |
| 4 | +**本文引用的文件** |
| 5 | +- [README.md](file://README.md) |
| 6 | +- [docs/DEPLOY.md](file://docs/DEPLOY.md) |
| 7 | +- [docs/full-guide.md](file://docs/full-guide.md) |
| 8 | +- [docs/FAQ.md](file://docs/FAQ.md) |
| 9 | +- [.github/workflows/daily_analysis.yml](file://.github/workflows/daily_analysis.yml) |
| 10 | +- [docker/Dockerfile](file://docker/Dockerfile) |
| 11 | +- [docker/docker-compose.yml](file://docker/docker-compose.yml) |
| 12 | +- [requirements.txt](file://requirements.txt) |
| 13 | +- [main.py](file://main.py) |
| 14 | +- [scripts/check_env.py](file://scripts/check_env.py) |
| 15 | +- [src/config.py](file://src/config.py) |
| 16 | +</cite> |
| 17 | + |
| 18 | +## 目录 |
| 19 | +1. [简介](#简介) |
| 20 | +2. [项目结构](#项目结构) |
| 21 | +3. [核心组件](#核心组件) |
| 22 | +4. [架构总览](#架构总览) |
| 23 | +5. [详细组件分析](#详细组件分析) |
| 24 | +6. [依赖关系分析](#依赖关系分析) |
| 25 | +7. [性能考虑](#性能考虑) |
| 26 | +8. [故障排查指南](#故障排查指南) |
| 27 | +9. [结论](#结论) |
| 28 | +10. [附录](#附录) |
| 29 | + |
| 30 | +## 简介 |
| 31 | +本指南面向首次部署与使用“股票智能分析系统”的用户,提供三种部署方式的完整步骤:GitHub Actions 一键部署、本地部署、Docker 部署。文档将详细说明环境变量配置、AI 模型 API 密钥设置、通知渠道配置与自选股列表设置,并给出命令示例与配置要点。同时包含常见问题排查与最佳实践,帮助新手在最短时间内完成首次部署与基本配置。 |
| 32 | + |
| 33 | +## 项目结构 |
| 34 | +系统采用前后端分离与模块化设计,核心入口为 Python 主程序,提供命令行模式、定时任务模式与 Web 服务模式;Docker 镜像内置前端静态资源,支持一键部署;GitHub Actions 提供零服务器的自动化执行。 |
| 35 | + |
| 36 | +```mermaid |
| 37 | +graph TB |
| 38 | +subgraph "本地/服务器" |
| 39 | +A["main.py<br/>主程序入口"] |
| 40 | +B["src/config.py<br/>配置管理"] |
| 41 | +C["requirements.txt<br/>依赖清单"] |
| 42 | +D["docker/Dockerfile<br/>镜像构建"] |
| 43 | +E["docker/docker-compose.yml<br/>编排"] |
| 44 | +end |
| 45 | +subgraph "GitHub Actions" |
| 46 | +F[".github/workflows/daily_analysis.yml<br/>工作流"] |
| 47 | +end |
| 48 | +subgraph "外部服务" |
| 49 | +G["AI 模型提供商<br/>Anspire/AIHubMix/Gemini/OpenAI 等"] |
| 50 | +H["数据源<br/>AkShare/Tushare/YFinance/Longbridge 等"] |
| 51 | +I["通知渠道<br/>企业微信/飞书/Telegram/Discord/Slack/邮件等"] |
| 52 | +end |
| 53 | +A --> B |
| 54 | +A --> C |
| 55 | +D --> A |
| 56 | +E --> A |
| 57 | +F --> A |
| 58 | +A --> G |
| 59 | +A --> H |
| 60 | +A --> I |
| 61 | +``` |
| 62 | + |
| 63 | +图表来源 |
| 64 | +- [main.py:1-120](file://main.py#L1-L120) |
| 65 | +- [src/config.py:1-120](file://src/config.py#L1-L120) |
| 66 | +- [requirements.txt:1-68](file://requirements.txt#L1-L68) |
| 67 | +- [docker/Dockerfile:1-85](file://docker/Dockerfile#L1-L85) |
| 68 | +- [docker/docker-compose.yml:1-69](file://docker/docker-compose.yml#L1-L69) |
| 69 | +- [.github/workflows/daily_analysis.yml:1-120](file://.github/workflows/daily_analysis.yml#L1-L120) |
| 70 | + |
| 71 | +章节来源 |
| 72 | +- [README.md:63-168](file://README.md#L63-L168) |
| 73 | +- [docs/DEPLOY.md:1-150](file://docs/DEPLOY.md#L1-L150) |
| 74 | + |
| 75 | +## 核心组件 |
| 76 | +- 主程序入口:负责解析命令行参数、加载配置、执行分析流程、启动 Web/FastAPI 服务、调度定时任务与通知推送。 |
| 77 | +- 配置管理:统一从 .env/.env 文件或 GitHub Actions Secrets/Variables 读取配置,提供类型安全与校验。 |
| 78 | +- 数据源适配:多数据源优先级与自动切换,支持 A/H/US 多市场。 |
| 79 | +- 通知通道:支持多种渠道与路由策略,具备长消息分块与 Markdown 图片转换能力。 |
| 80 | +- Docker 镜像与编排:多阶段构建前端与后端,暴露 Web 端口,支持数据持久化与健康检查。 |
| 81 | +- GitHub Actions 工作流:定时触发与手动触发,自动注入 Secrets/Variables,上传报告产物。 |
| 82 | + |
| 83 | +章节来源 |
| 84 | +- [main.py:205-368](file://main.py#L205-L368) |
| 85 | +- [src/config.py:32-120](file://src/config.py#L32-L120) |
| 86 | +- [docker/Dockerfile:61-85](file://docker/Dockerfile#L61-L85) |
| 87 | +- [.github/workflows/daily_analysis.yml:356-442](file://.github/workflows/daily_analysis.yml#L356-L442) |
| 88 | + |
| 89 | +## 架构总览 |
| 90 | +系统支持三种部署形态,核心流程一致:加载配置 → 读取自选股 → 获取数据 → AI 分析 → 生成报告 → 推送通知 → 可选:创建飞书云文档与自动回测。 |
| 91 | + |
| 92 | +```mermaid |
| 93 | +sequenceDiagram |
| 94 | +participant U as "用户/系统" |
| 95 | +participant M as "main.py" |
| 96 | +participant CFG as "配置管理" |
| 97 | +participant PIPE as "分析流水线" |
| 98 | +participant DS as "数据源" |
| 99 | +participant LLM as "AI 模型" |
| 100 | +participant NOTI as "通知通道" |
| 101 | +participant DOC as "飞书云文档" |
| 102 | +U->>M : 启动/定时触发/手动触发 |
| 103 | +M->>CFG : 加载 .env/Secrets/Variables |
| 104 | +M->>PIPE : 初始化流水线 |
| 105 | +PIPE->>DS : 拉取日线/实时/新闻/资金流 |
| 106 | +DS-->>PIPE : 原始数据 |
| 107 | +PIPE->>LLM : 结构化分析请求 |
| 108 | +LLM-->>PIPE : 分析结果 |
| 109 | +PIPE-->>M : 汇总结果 |
| 110 | +M->>NOTI : 推送通知/合并推送 |
| 111 | +M->>DOC : 可选:生成飞书云文档 |
| 112 | +M-->>U : 日志/报告/产物 |
| 113 | +``` |
| 114 | + |
| 115 | +图表来源 |
| 116 | +- [main.py:434-629](file://main.py#L434-L629) |
| 117 | +- [src/config.py:193-200](file://src/config.py#L193-L200) |
| 118 | +- [.github/workflows/daily_analysis.yml:356-442](file://.github/workflows/daily_analysis.yml#L356-L442) |
| 119 | + |
| 120 | +## 详细组件分析 |
| 121 | + |
| 122 | +### GitHub Actions 一键部署(推荐) |
| 123 | +- 适用场景:零服务器、自动定时、无需运维。 |
| 124 | +- 优点:免费额度高、自动执行、无需维护。 |
| 125 | +- 缺点:无状态、定时可能有延迟、无法提供 HTTP API。 |
| 126 | +- 关键步骤: |
| 127 | + 1) Fork 仓库并在 Settings → Secrets and variables → Actions 添加必要的 Secrets/Variables。 |
| 128 | + 2) 启用 Actions 工作流。 |
| 129 | + 3) 手动触发或等待定时执行。 |
| 130 | +- 常用配置要点: |
| 131 | + - 至少配置一项 AI 模型密钥(如 ANSPIRE_API_KEYS、AIHUBMIX_KEY、GEMINI_API_KEY、OPENAI_API_KEY)。 |
| 132 | + - 至少配置一个通知渠道(如 WECHAT_WEBHOOK_URL、TELEGRAM、EMAIL 等)。 |
| 133 | + - 设置 STOCK_LIST(自选股列表,逗号分隔)。 |
| 134 | + - 可选:配置搜索服务(ANSPIRE_API_KEYS、SERPAPI_API_KEYS、TAVILY_API_KEYS 等)。 |
| 135 | + - 可选:REPORT_TYPE、REPORT_LANGUAGE、SINGLE_STOCK_NOTIFY、MERGE_EMAIL_NOTIFICATION 等推送行为配置。 |
| 136 | +- 定时时间:默认每周一至周五 18:00(北京时间),可通过 cron 修改。 |
| 137 | +- 手动测试:Actions 页面选择工作流 → Run workflow → 选择模式(full/market-only/stocks-only)。 |
| 138 | + |
| 139 | +章节来源 |
| 140 | +- [README.md:65-139](file://README.md#L65-L139) |
| 141 | +- [.github/workflows/daily_analysis.yml:1-472](file://.github/workflows/daily_analysis.yml#L1-L472) |
| 142 | +- [docs/full-guide.md:42-191](file://docs/full-guide.md#L42-L191) |
| 143 | + |
| 144 | +### 本地部署与 Docker 部署 |
| 145 | +- 本地部署(直接部署): |
| 146 | + - 安装 Python 3.10+,创建虚拟环境,安装依赖。 |
| 147 | + - 复制 .env.example 为 .env,按需填写 AI 模型、通知渠道、自选股、搜索服务等。 |
| 148 | + - 运行 python main.py,或使用 --schedule 启用定时任务模式,--webui/--webui-only 启动 Web 界面。 |
| 149 | +- Docker 部署(推荐): |
| 150 | + - 安装 Docker,准备 .env,一键 docker-compose up -d。 |
| 151 | + - 默认暴露 8000 端口,支持数据持久化(data/logs/reports)。 |
| 152 | + - 可选:挂载本地 static 目录覆盖前端静态资源,或通过 .env 指定 API_PORT。 |
| 153 | + - 常用管理命令:logs、restart、build --no-cache、exec bash、手动执行一次分析。 |
| 154 | +- 代理配置:Docker 方式在 compose 中设置 http_proxy/https_proxy;本地方式在 .env 中设置 USE_PROXY/PROXY_HOST/PROXY_PORT。 |
| 155 | + |
| 156 | +章节来源 |
| 157 | +- [docs/DEPLOY.md:18-99](file://docs/DEPLOY.md#L18-L99) |
| 158 | +- [docs/DEPLOY.md:101-150](file://docs/DEPLOY.md#L101-L150) |
| 159 | +- [docker/Dockerfile:22-85](file://docker/Dockerfile#L22-L85) |
| 160 | +- [docker/docker-compose.yml:13-69](file://docker/docker-compose.yml#L13-L69) |
| 161 | +- [docs/DEPLOY.md:227-247](file://docs/DEPLOY.md#L227-L247) |
| 162 | + |
| 163 | +### 环境变量与配置要点 |
| 164 | +- 必填项(至少满足其一): |
| 165 | + - AI 模型:ANSPIRE_API_KEYS、AIHUBMIX_KEY、GEMINI_API_KEY、ANTHROPIC_API_KEY、OPENAI_API_KEY。 |
| 166 | + - 通知渠道:至少配置一个(如 WECHAT_WEBHOOK_URL、FEISHU_WEBHOOK_URL、TELEGRAM、EMAIL、DISCORD、SLACK、自定义 Webhook 等)。 |
| 167 | + - 自选股:STOCK_LIST(逗号分隔的股票代码)。 |
| 168 | + - 搜索服务:ANSPIRE_API_KEYS、SERPAPI_API_KEYS、TAVILY_API_KEYS、BOCHA_API_KEYS、BRAVE_API_KEYS、MINIMAX_API_KEYS、SEARXNG_BASE_URLS。 |
| 169 | +- 可选项(提升体验): |
| 170 | + - SCHEDULE_ENABLED、SCHEDULE_TIME、MARKET_REVIEW_ENABLED、REPORT_TYPE、REPORT_LANGUAGE、SINGLE_STOCK_NOTIFY、MERGE_EMAIL_NOTIFICATION、ANALYSIS_DELAY、MAX_WORKERS、ENABLE_CHIP_DISTRIBUTION、REALTIME_SOURCE_PRIORITY 等。 |
| 171 | +- GitHub Actions 特有: |
| 172 | + - LITELLM_CONFIG/LITELLM_CONFIG_YAML、LLM_CHANNELS、LLM_PRIMARY_*、LLM_SECONDARY_*、LLM_GEMINI_*、LLM_AIHUBMIX_*、LLM_OPENAI_*、LLM_ANTHROPIC_*、LLM_DEEPSEEK_*、LLM_ANSPIRE_*、LLM_MOONSHOT_*、LLM_DASHSCOPE_*、LLM_ZHIPU_*、LLM_MINIMAX_*、LLM_VOLCENGINE_*、LLM_SILICONFLOW_*、LLM_OPENROUTER_*、LLM_OLLAMA_*。 |
| 173 | + - 数据源:TUSHARE_TOKEN、LONGBRIDGE_*。 |
| 174 | + - 通知路由:NOTIFICATION_REPORT_CHANNELS、NOTIFICATION_ALERT_CHANNELS、NOTIFICATION_SYSTEM_ERROR_CHANNELS。 |
| 175 | + - 其他:REPORT_SUMMARY_ONLY、REPORT_TEMPLATES_DIR、REPORT_RENDERER_ENABLED、REPORT_INTEGRITY_ENABLED、REPORT_HISTORY_COMPARE_N、MARKDOWN_TO_IMAGE_CHANNELS、MD2IMG_ENGINE、PREFETCH_REALTIME_QUOTES。 |
| 176 | + |
| 177 | +章节来源 |
| 178 | +- [docs/full-guide.md:193-200](file://docs/full-guide.md#L193-L200) |
| 179 | +- [.github/workflows/daily_analysis.yml:60-355](file://.github/workflows/daily_analysis.yml#L60-L355) |
| 180 | + |
| 181 | +### 命令行与运行模式 |
| 182 | +- 常用命令: |
| 183 | + - python main.py:正常运行(按配置执行分析与推送)。 |
| 184 | + - python main.py --debug:调试模式,输出详细日志。 |
| 185 | + - python main.py --dry-run:仅获取数据,不进行 AI 分析。 |
| 186 | + - python main.py --stocks 600519,hk00700,AAPL:指定分析特定股票。 |
| 187 | + - python main.py --no-notify:不发送推送通知。 |
| 188 | + - python main.py --check-notify:仅检查通知配置,不发送。 |
| 189 | + - python main.py --single-notify:启用单股推送模式。 |
| 190 | + - python main.py --schedule:启用定时任务模式。 |
| 191 | + - python main.py --market-review:仅运行大盘复盘。 |
| 192 | + - python main.py --serve-only:仅启动 FastAPI 服务(不自动分析)。 |
| 193 | + - python main.py --webui/--webui-only:启动 Web 管理界面。 |
| 194 | +- Web 界面:默认监听 0.0.0.0:8000,云服务器需设置 WEBUI_HOST=0.0.0.0 并放行安全组端口。 |
| 195 | + |
| 196 | +章节来源 |
| 197 | +- [main.py:205-368](file://main.py#L205-L368) |
| 198 | +- [docs/DEPLOY.md:131-146](file://docs/DEPLOY.md#L131-L146) |
| 199 | + |
| 200 | +### 配置验证与环境检查 |
| 201 | +- 使用 scripts/check_env.py 进行配置加载、数据库、数据源、LLM、通知的验证与测试。 |
| 202 | +- 常用参数:--config、--db、--fetch、--llm、--notify、--stock、--all。 |
| 203 | +- 该脚本可辅助定位配置错误、网络连通性与通知通道可用性问题。 |
| 204 | + |
| 205 | +章节来源 |
| 206 | +- [scripts/check_env.py:1-494](file://scripts/check_env.py#L1-L494) |
| 207 | + |
| 208 | +## 依赖关系分析 |
| 209 | +- Python 依赖:dotenv、schedule、SQLAlchemy、litellm、requests、fastapi/uvicorn、通知渠道 SDK 等。 |
| 210 | +- Docker 镜像:多阶段构建,前端在镜像构建阶段打包,后端运行阶段安装依赖,暴露 8000 端口,设置健康检查。 |
| 211 | +- GitHub Actions:工作流中注入 Secrets/Variables,按 mode 执行不同分析模式,上传 reports/logs 产物。 |
| 212 | + |
| 213 | +```mermaid |
| 214 | +graph LR |
| 215 | +R["requirements.txt"] --> IMG["Docker 镜像构建"] |
| 216 | +IMG --> RUN["容器运行"] |
| 217 | +W["daily_analysis.yml"] --> RUN |
| 218 | +RUN --> OUT["分析报告/日志产物"] |
| 219 | +``` |
| 220 | + |
| 221 | +图表来源 |
| 222 | +- [requirements.txt:1-68](file://requirements.txt#L1-L68) |
| 223 | +- [docker/Dockerfile:10-55](file://docker/Dockerfile#L10-L55) |
| 224 | +- [.github/workflows/daily_analysis.yml:356-442](file://.github/workflows/daily_analysis.yml#L356-L442) |
| 225 | + |
| 226 | +章节来源 |
| 227 | +- [requirements.txt:1-68](file://requirements.txt#L1-L68) |
| 228 | +- [docker/Dockerfile:16-85](file://docker/Dockerfile#L16-L85) |
| 229 | +- [.github/workflows/daily_analysis.yml:356-442](file://.github/workflows/daily_analysis.yml#L356-L442) |
| 230 | + |
| 231 | +## 性能考虑 |
| 232 | +- 并发与限流:合理设置 MAX_WORKERS,避免免费数据源限流;必要时启用 ANALYSIS_DELAY 减少 API 压力。 |
| 233 | +- 数据源优先级:根据稳定性与字段完整性调整 REALTIME_SOURCE_PRIORITY。 |
| 234 | +- 代理与网络:国内服务器访问 Gemini/OpenAI 需要代理时,本地设置 USE_PROXY/PROXY_HOST/PROXY_PORT;Docker 在 compose 中设置 http_proxy/https_proxy。 |
| 235 | +- 资源限制:Docker 可通过 deploy.resources 限制内存,避免资源争用。 |
| 236 | +- WebUI 静态资源:Docker 部署需确保前端已打包进镜像,否则会出现 UI 元素异常或布局错乱。 |
| 237 | + |
| 238 | +章节来源 |
| 239 | +- [docs/DEPLOY.md:227-247](file://docs/DEPLOY.md#L227-L247) |
| 240 | +- [docs/DEPLOY.md:306-313](file://docs/DEPLOY.md#L306-L313) |
| 241 | +- [docs/DEPLOY.md:320-343](file://docs/DEPLOY.md#L320-L343) |
| 242 | + |
| 243 | +## 故障排查指南 |
| 244 | +- GitHub Actions 未触发或延迟: |
| 245 | + - 确认仓库已启用 Actions;工作流可能有 5-15 分钟延迟;长时间无提交可能导致 workflow 被禁用。 |
| 246 | +- API 访问超时/429 限流: |
| 247 | + - 检查代理配置;减少并发与请求频率;适当增加 ANALYSIS_DELAY。 |
| 248 | +- 数据获取失败/被限流: |
| 249 | + - 减少自选股数量;启用熔断保护与自动切换;必要时启用东财补丁或串行获取。 |
| 250 | +- 通知通道失败: |
| 251 | + - 使用 --check-notify 或 scripts/check_env.py --notify 检查;确认渠道密钥、URL、签名与关键词配置;Telegram 需确认 Chat ID 与网络可达。 |
| 252 | +- WebUI 页面异常: |
| 253 | + - Docker 需重新构建镜像;本地需先构建前端再启动服务;检查 static/assets 是否存在。 |
| 254 | +- 配置未生效: |
| 255 | + - Docker 部署需重启容器;GitHub Actions 仅读取 Secrets/Variables;本地检查 .env 路径与覆盖顺序。 |
| 256 | +- 美股/港股识别问题: |
| 257 | + - 系统已修复自动识别;如仍异常,可调整数据源优先级或相关开关。 |
| 258 | + |
| 259 | +章节来源 |
| 260 | +- [.github/workflows/daily_analysis.yml:490-500](file://.github/workflows/daily_analysis.yml#L490-L500) |
| 261 | +- [docs/FAQ.md:71-125](file://docs/FAQ.md#L71-L125) |
| 262 | +- [docs/FAQ.md:149-200](file://docs/FAQ.md#L149-L200) |
| 263 | +- [docs/DEPLOY.md:314-343](file://docs/DEPLOY.md#L314-L343) |
| 264 | + |
| 265 | +## 结论 |
| 266 | +通过本快速开始指南,您可以在 5 分钟内完成 GitHub Actions 一键部署,或在本地/Docker 环境中完成部署与配置。建议先从最小配置(AI 模型密钥、通知渠道、自选股、搜索服务)开始,逐步启用高级功能(多模型路由、合并推送、Markdown 图片、飞书云文档等)。遇到问题时,优先使用 --check-notify 与 scripts/check_env.py 进行诊断,并结合 FAQ 与工作流日志定位原因。 |
| 267 | + |
| 268 | +## 附录 |
| 269 | +- 快速命令清单(本地/Docker) |
| 270 | + - 安装依赖:pip install -r requirements.txt |
| 271 | + - 复制并编辑 .env:cp .env.example .env && vim .env |
| 272 | + - 运行分析:python main.py |
| 273 | + - 定时任务:python main.py --schedule |
| 274 | + - Web 界面:python main.py --webui 或 --webui-only |
| 275 | + - Docker 启动:docker-compose -f ./docker/docker-compose.yml up -d |
| 276 | + - Docker 日志:docker-compose -f ./docker/docker-compose.yml logs -f |
| 277 | +- GitHub Actions 最小配置清单 |
| 278 | + - 至少配置:ANSPIRE_API_KEYS 或 AIHUBMIX_KEY 或 GEMINI_API_KEY 或 OPENAI_API_KEY |
| 279 | + - 至少配置一个通知渠道:WECHAT_WEBHOOK_URL/TELEGRAM/EMAIL/DISCORD/SLACK/CUSTOM_WEBHOOK_URLS |
| 280 | + - STOCK_LIST(自选股) |
| 281 | + - 可选:REPORT_TYPE、REPORT_LANGUAGE、SINGLE_STOCK_NOTIFY、MERGE_EMAIL_NOTIFICATION、ANALYSIS_DELAY、MAX_WORKERS、ENABLE_CHIP_DISTRIBUTION、REALTIME_SOURCE_PRIORITY |
| 282 | + |
| 283 | +章节来源 |
| 284 | +- [README.md:140-168](file://README.md#L140-L168) |
| 285 | +- [.github/workflows/daily_analysis.yml:331-355](file://.github/workflows/daily_analysis.yml#L331-L355) |
0 commit comments