# research_report **Repository Path**: ximo-aipc/research_report ## Basic Information - **Project Name**: research_report - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-19 - **Last Updated**: 2025-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 深度调研报告生成系统(Root README) 🤖 基于 AI 大模型的智能深度调研报告生成平台(前端:Vue 3 + Vite;后端:FastAPI) [![Python Version](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://python.org) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![FastAPI](https://img.shields.io/badge/Backend-FastAPI-green.svg)](https://fastapi.tiangolo.com) [![Vue](https://img.shields.io/badge/Frontend-Vue%203-4FC08D.svg)](https://vuejs.org) [![TypeScript](https://img.shields.io/badge/Language-TypeScript-3178C6.svg)](https://typescriptlang.org) [![PocketFlow](https://img.shields.io/badge/Workflow-PocketFlow-blue.svg)](https://github.com/li-xiu-qi/pocketflow) --- ## 一、项目简介 - 前端:Vue 3 + Vite + TypeScript(目录:web) - 后端:FastAPI(目录:backend) - 能力:公司/行业/宏观研究全流程,工作流编排(PocketFlow),多数据源集成,AI 分析与多格式输出(Markdown/Docx/图表) ## 二、系统架构 ```mermaid flowchart LR %% 前端层 subgraph Frontend["前端层 (Web Frontend | Vite:7789)"] FE_Pages["页面组件 (Pages)\n• 研究页面: 公司/行业/宏观\n• 报告页面: 列表/详情/生成/下载\n• 监控页面: 系统/任务状态\n• 配置页面: API/偏好/设置"] FE_API["API客户端 (API Client | Axios)"] FE_Pages --> FE_API end %% 开发代理层 subgraph DevProxy["开发代理层 (Dev Proxy)"] ViteProxy["Vite代理 (Vite Proxy) -> :8000"] end %% 后端层 subgraph Backend["后端层 (FastAPI Backend | :8000)"] subgraph Routers["路由层 (Routers | /api/v1)"] R_Company["公司路由 (/company)\nstart-research | status/:id | result/:id"] R_Industry["行业路由 (/industry)\nstart-research | status/:id | result/:id"] R_Macro["宏观路由 (/macro)\nstart-research | status/:id | result/:id"] subgraph ReportsGroup["报告路由组 (/reports)"] R_Reports_Main["报告主路由\ncompany | industry | macro | task/:id | status/:id | all"] R_Reports_Search["报告搜索 (search)\nkeyword | type | date_range"] R_Reports_Download["报告下载 (download)\n/:id | /batch | /export"] end R_Research["研究路由 (/research)\nexecute"] R_System["系统路由 (/system)\nhealth | config | tasks | logs | cache/status"] R_Files["文件路由 (/files)\nupload | download | list"] subgraph StreamingGroup["流式路由组 (/streaming)"] R_SSE["服务端推送 (SSE)\n/events | /progress | /status"] R_WebSocket["WebSocket连接 (WS)\n/ws | /realtime | /notifications"] end end subgraph Services["服务层 (Service Layer)"] Orchestrator["研究编排器 (Research Orchestrator)"] ServiceCore["研究服务核心 (Research Services)"] TaskService["任务服务 (TaskService)"] TaskManager["任务管理器 (TaskManager)"] Workflow["工作流引擎 (Workflow Engine | PocketFlow)"] Adapters["数据源适配器 (Data Source Adapters)"] EventBus["事件总线 (Event Bus | SSE/WS)"] end end %% 存储层 subgraph Storage["存储层 (Storage & Data)"] CacheDB["缓存存储 (Cache)\nresearch_data/03_cache"] ReportsDir["报告存储 (Reports)\nresearch_data/04_reports"] SysTasks["系统任务存储 (System Tasks)\nresearch_data/05_system"] LogsDir["日志存储 (Logs)\nlogs/"] TemplatesDir["模板存储 (Templates)\nreport_templates/"] end %% 可选组件层 subgraph Optional["可选组件层 (Optional Components)"] Redis["Redis缓存 (Redis Cache)\n高性能缓存 | 会话存储"] Database["数据库 (Database)\nPostgreSQL | MySQL | SQLite"] ObjectStorage["对象存储 (Object Storage)\nMinIO | AWS S3 | 阿里云OSS"] MessageQueue["消息队列 (Message Queue)\nRabbitMQ | Apache Kafka"] end %% 外部数据源 subgraph External["外部数据源 (External Sources)"] AKShare["AKShare金融数据\n股票 | 期货 | 基金"] YF["YFinance国际数据\n全球股票 | 汇率"] NewsAPI["新闻搜索API\n实时资讯 | 政策信息"] EconomicAPI["经济数据API\n宏观指标 | 统计数据"] end %% 主要数据流 FE_API --> ViteProxy --> R_Company FE_API --> ViteProxy --> R_Industry FE_API --> ViteProxy --> R_Macro FE_API --> ViteProxy --> R_Reports_Main FE_API --> ViteProxy --> R_Reports_Search FE_API --> ViteProxy --> R_Reports_Download FE_API --> ViteProxy --> R_Research FE_API --> ViteProxy --> R_System FE_API --> ViteProxy --> R_Files %% 流式连接 FE_API -.->|"实时连接"| R_SSE FE_API -.->|"双向通信"| R_WebSocket R_SSE --> EventBus R_WebSocket --> EventBus %% 服务调用 R_Research --> Orchestrator R_Company --> ServiceCore R_Industry --> ServiceCore R_Macro --> ServiceCore R_Reports_Main --> ServiceCore R_Reports_Search --> ServiceCore R_Reports_Download --> ServiceCore R_System --> ServiceCore %% 核心服务交互 ServiceCore --> Workflow ServiceCore --> Adapters ServiceCore --> EventBus Adapters --> AKShare Adapters --> YF Adapters --> NewsAPI Adapters --> EconomicAPI %% 任务管理 TaskService --> TaskManager --> SysTasks EventBus --> TaskManager %% 存储交互 R_Reports_Main --> ReportsDir R_Reports_Download --> ReportsDir R_System --> LogsDir ServiceCore --> CacheDB TemplatesDir -.-> R_Reports_Main %% 可选组件连接 (虚线表示可选) TaskManager -.->|"可选"| Redis ServiceCore -.->|"可选"| Database ReportsDir -.->|"可选"| ObjectStorage EventBus -.->|"可选"| MessageQueue %% 响应链路 ServiceCore -->|"JSON响应"| ViteProxy --> FE_API --> FE_Pages EventBus -.->|"实时事件"| R_SSE -.-> ViteProxy -.-> FE_API -.-> FE_Pages EventBus -.->|"推送通知"| R_WebSocket -.-> FE_API -.-> FE_Pages ``` ## 三、快速开始(≈5 分钟) 1. 克隆与进入 ```bash git clone https://github.com/li-xiu-qi/research_report cd research_report ``` 1. Python 环境与依赖 ```bash python3.11 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` 1. Node 前端依赖 ```bash cd web && npm install && cd - ``` 1. 一键启动(推荐) ```bash ./start_web_app.sh start # 支持: start | stop | restart | status | help ``` 1. 访问 - 前端:[http://localhost:7789](http://localhost:7789) - API 文档:[http://localhost:8000/docs](http://localhost:8000/docs) - 健康检查:[http://localhost:8000/health](http://localhost:8000/health) ## 四、配置说明(最小可用) 在项目根目录创建 .env(可选,按需添加): ```env # ===== AI 模型 ===== OPENAI_API_KEY=your_openai_api_key OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4 # ===== 后端服务 ===== API_HOST=0.0.0.0 API_PORT=8000 # ===== 系统参数 ===== LOG_LEVEL=INFO MAX_WORKERS=3 CACHE_EXPIRE_DAYS=30 # ===== 任务管理(可选) ===== TASK_STORAGE_TYPE=memory # memory | file | redis TASK_STORAGE_DIR=./research_data/05_system/tasks TASK_CLEANUP_INTERVAL_HOURS=6 TASK_MAX_AGE_HOURS=24 ``` 说明: - 前端开发端口固定 7789(见 web/vite.config.ts) - 后端默认 8000(见 backend/core/config/__init__.py Settings.api_port),如需修改请同步前端代理 ## 五、开发模式(分别启动) - 终端1(后端) ```bash source .venv/bin/activate uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000 ``` - 终端2(前端) ```bash cd web && npm run dev ``` ## 六、前后端交互(Vite 代理) - 开发代理:/api、/health、/ws、/stream → [http://localhost:8000](http://localhost:8000)(详见 web/vite.config.ts) - 直连后端:通过 VITE_API_BASE_URL 覆盖(见 web/README.md) ## 七、后端 API 速查(可直接复制运行) - 统一研究执行(推荐统一入口) ```bash # 公司研究 - 全流程 echo '{ "research_type": "company", "operation_type": "full_research", "parameters": {"company_name": "商汤科技", "company_code": "00020", "market": "HK"} }' | curl -sS -X POST http://localhost:8000/api/v1/research/execute \ -H 'Content-Type: application/json' -d @- | jq . # 行业研究 - 素材收集 echo '{ "research_type": "industry", "operation_type": "collect_materials", "parameters": {"industry_name": "人工智能", "template_name": "default"} }' | curl -sS -X POST http://localhost:8000/api/v1/research/execute \ -H 'Content-Type: application/json' -d @- | jq . ``` - 查询统一任务状态(所有任务统一查询) ```bash # 返回任务详情与进度 curl -sS http://localhost:8000/api/v1/reports/task/ | jq . ``` - 报告直达(Docx 生成快捷入口) ```bash # 公司报告(Docx) echo '{"company_name":"商汤科技"}' | \ curl -sS -X POST http://localhost:8000/api/v1/reports/company -H 'Content-Type: application/json' -d @- | jq . # 行业报告(Docx) echo '{"industry_name":"人工智能"}' | \ curl -sS -X POST http://localhost:8000/api/v1/reports/industry -H 'Content-Type: application/json' -d @- | jq . # 宏观报告(Docx) echo '{"macro_topic":"中国宏观经济"}' | \ curl -sS -X POST http://localhost:8000/api/v1/reports/macro -H 'Content-Type: application/json' -d @- | jq . ``` - 系统与监控 ```bash # 系统健康(资源与依赖) curl -sS http://localhost:8000/api/v1/system/health | jq . # 系统配置(安全屏蔽敏感项) curl -sS http://localhost:8000/api/v1/system/config | jq . # 活跃任务列表 curl -sS http://localhost:8000/api/v1/system/tasks | jq . # 取消任务 curl -sS -X DELETE http://localhost:8000/api/v1/system/tasks/ | jq . # 系统日志(如存在 logs/api.log) curl -sS 'http://localhost:8000/api/v1/system/logs?lines=200' | jq . ``` ## 八、任务与输出路径 - 日志 - 后端运行日志:logs/backend.log(由 start_web_app.sh 产生) - 前端运行日志:logs/frontend.log(由 start_web_app.sh 产生) - API 日志:logs/api.log(后端按需写入) - 数据与输出 - 研究数据根:research_data/ - 缓存:research_data/03_cache - 报告输出:research_data/04_reports - 系统任务:research_data/05_system - 报告模板:report_templates/ ## 九、脚本常用命令 ```bash # 启动 ./start_web_app.sh start # 停止 ./start_web_app.sh stop # 重启 ./start_web_app.sh restart # 状态 ./start_web_app.sh status # 帮助 ./start_web_app.sh help ``` ## 十、快速排障 - 健康检查 ```bash curl -s http://localhost:8000/health | cat ``` - 端口冲突排查 ```bash lsof -i :8000 -sTCP:LISTEN | cat lsof -i :7789 -sTCP:LISTEN | cat ``` - 常见问题 - 缺包:先激活虚拟环境,再 `pip install -r requirements.txt` - 前端连不上后端:确认 8000 正常,或设置 VITE_API_BASE_URL,或检查 Vite 代理 - 端口占用:使用 lsof 查占用进程或调整端口 ## 十一、深入文档 - 前端说明:web/README.md(页面路由、组件、API 调用、构建与部署) - 后端说明:backend/README.md(API 路由、统一任务管理、研究服务) - Nginx 部署:deploy/nginx/README.md - 重构指南与进度:docs/README_重构指南.md、docs/重构进度存档/README.md ## 十二、许可证 MIT(见 LICENSE) ### 目录结构(简要) ``` research_report/ ├── web/ # Vue 3 + Vite 前端 ├── backend/ # FastAPI 后端 ├── utils/ # 工具与文档转换 ├── docs/ # 文档与重构记录 ├── deploy/nginx/ # Nginx 反向代理部署脚本 ├── report_templates/ # 报告模板 ├── research_data/ # 数据/缓存/输出 ├── start_web_app.sh # 一键启动前后端(开发) ├── start_with_file_storage.sh # 启动并使用文件型任务存储 ├── requirements.txt # Python 依赖 ├── pyproject.toml # Python 项目配置 (>=3.11) └── README.md ``` ## 🧰 环境要求 - Python 3.11+ - Node.js 18+ - npm 9+ - 可选:Nginx(反向代理与统一入口) ## ⚙️ 安装与配置 ### 1) 克隆项目 ```bash git clone https://github.com/li-xiu-qi/research_report cd research_report ``` ### 2) 创建并激活虚拟环境(必须) ```bash python3.11 -m venv .venv source .venv/bin/activate ``` ### 3) 安装后端依赖 ```bash pip install -r requirements.txt # 可选(更快):使用 uv # uv venv && source .venv/bin/activate && uv pip sync requirements.txt ``` ### 4) 安装前端依赖 ```bash cd web && npm install && cd - ``` ### 5) 配置环境变量(示例) 在项目根目录创建 `.env`,按需配置: ```env # ===== AI 模型配置 ===== OPENAI_API_KEY=your_openai_api_key OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4 # ===== 服务端口 ===== FRONTEND_PORT=7789 BACKEND_PORT=8000 # ===== 系统参数 ===== LOG_LEVEL=INFO MAX_WORKERS=3 CACHE_EXPIRE_DAYS=30 # ===== 任务管理(可选) ===== TASK_STORAGE_TYPE=memory # memory | file | redis TASK_STORAGE_DIR=./research_data/05_system/tasks TASK_CLEANUP_INTERVAL_HOURS=6 TASK_MAX_AGE_HOURS=24 ``` ## 🚀 启动与访问 ### 方式一:一键脚本(推荐) ```bash ./start_web_app.sh start # 或直接 ./start_web_app.sh # 常用命令:start | stop | restart | status | help ``` 启动后访问: - 前端界面:`http://localhost:7789` - 后端文档:`http://localhost:8000/docs` - 健康检查:`http://localhost:8000/health` ### 方式二:文件型任务存储 ```bash ./start_with_file_storage.sh ``` ### 方式三:分别启动前后端(开发) ```bash # 终端1:后端(需先激活虚拟环境) source .venv/bin/activate uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000 # 终端2:前端 cd web && npm run dev ``` ## 🌐 前后端交互 - 前端默认开发端口:`7789`(Vite) - 后端 API 基址:`http://localhost:8000` - 可通过前端环境变量 `VITE_API_BASE_URL` 覆盖(详见 `web/README.md`) ## 📚 模块与文档 - 前端说明:`web/README.md` - 后端说明:`backend/README.md` - 文档转换:`utils/document_converter/README.md` - Nginx 部署:`deploy/nginx/README.md` - 重构指南与进度:`docs/README_重构指南.md`、`docs/重构进度存档/README.md` ## 🧪 快速自检 ```bash # 后端健康检查 curl -s http://localhost:8000/health | cat # 端口被占用时(示例) lsof -i :8000 -sTCP:LISTEN | cat lsof -i :7789 -sTCP:LISTEN | cat ``` ## 🛠️ 常见问题 - 启动报缺包:先激活虚拟环境,再 `pip install -r requirements.txt` - 前端连不上后端:确认后端 8000 端口可访问,或在前端设置 `VITE_API_BASE_URL` - 端口冲突:使用 `lsof` 查占用进程或修改 `.env` 端口 - 任务查询 404:使用统一查询端点(见后端 README 的任务管理章节) ## 📄 许可证 MIT License,详见 `LICENSE`。 --- 提示:首次设置请务必创建并激活虚拟环境,再进行依赖安装与启动。 ## 🛠️ 安装与配置 ### 环境要求 - **Python**: 3.8+ (推荐 3.11+) - **内存**: 8GB+ 推荐 - **网络**: 稳定的互联网连接(用于数据获取和AI API调用) - **API密钥**: OpenAI API密钥或兼容的LLM服务 ### 快速安装 1. **克隆项目** ```bash git clone https://github.com/li-xiu-qi/research_report cd research_report ``` 2. **安装依赖** ```bash # 使用pip安装 pip install -r requirements.txt # 或使用uv安装(推荐,更快) uv install ``` 3. **环境配置** 创建 `.env` 文件: ```env # ===== AI模型配置 ===== OPENAI_API_KEY=your_openai_api_key OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4 # ===== 服务端口配置 ===== FRONTEND_PORT=8501 BACKEND_PORT=8000 # ===== 系统配置 ===== LOG_LEVEL=INFO MAX_WORKERS=3 CACHE_EXPIRE_DAYS=30 # ===== 任务管理配置 ===== TASK_STORAGE_TYPE=memory # memory, file, redis TASK_STORAGE_DIR=./data/tasks # 文件存储目录 TASK_CLEANUP_INTERVAL_HOURS=6 # 清理间隔(小时) TASK_MAX_AGE_HOURS=24 # 任务最大保留时间(小时) # ===== 可选配置 ===== # 使用其他兼容API # OPENAI_BASE_URL=https://api.deepseek.com/v1 # OPENAI_MODEL=deepseek-chat ``` 4. **创建必要目录** ```bash # 系统会自动创建,也可手动创建 mkdir -p research_data/{cache,data_collection,data_processing,report_generation,final_outputs,logs} mkdir -p research_data/cache/{company_info,industry_info,macro_info,financial_data} ``` ## 🎮 使用指南 ### 🚀 快速启动 #### 方式一:一键启动(推荐) ```bash # 启动完整系统(前端+后端) ./start.sh # 查看启动选项 ./start.sh -h ``` #### 方式二:分别启动前后端 ```bash # 终端1:启动后端服务 cd backend python main.py # 终端2:启动前端服务 cd web npm run dev ``` #### 方式三:开发模式 ```bash # 后端开发模式(支持热重载) cd backend uvicorn main:app --reload --host 0.0.0.0 --port 8000 # 前端开发模式(支持热重载) cd web npm run dev ``` ### 🌐 Web界面使用 启动后访问: - **前端界面**: http://localhost:7789 (Vue 3应用) - **后端API文档**: http://localhost:8000/docs (Swagger UI) - **后端健康检查**: http://localhost:8000/health #### 前端功能模块 1. **⚡ 专项研究** - 核心研究功能 - 🏢 公司研究:完整公司分析、财务深度分析 - 🏭 行业研究:行业概况、竞争格局、发展趋势 - 📈 宏观研究:经济指标、政策分析、市场环境 2. **📝 报告输出** - 报告生成与管理 - 📊 公司研究报告生成 - 🏭 行业研究报告生成 - 🌍 宏观研究报告生成 - 📋 素材管理和缓存清理 3. **🎯 智能生成** - 高级功能 - 🔗 完整工作流执行 - 🤖 AI驱动的智能分析 - 📈 自定义分析模板 4. **⚙️ 系统配置** - 系统管理 - 🔧 API配置管理 - 💾 缓存状态监控 - 📊 系统性能监控 ### 💻 编程接口 #### 前端API客户端 ```python from frontend.utils.api_client import APIClient # 创建API客户端 client = APIClient(base_url="http://localhost:8000") # 检查后端健康状态 health = client.check_health() print(health) # 启动公司研究 response = client.start_research( research_type="company", operation_type="full-research", data={ "company_name": "商汤科技", "company_code": "00020", "market": "HK" } ) # 获取任务状态 task_id = response["data"]["task_id"] status = client.get_task_status("company", task_id) ``` #### 后端服务调用 ```python from backend.services.real_research_service import RealResearchService from backend.models.schemas import ResearchType, OperationType # 创建研究服务 service = RealResearchService() # 执行公司研究 async for response in service.execute_research_operation( research_type=ResearchType.COMPANY, operation_type=OperationType.FULL_RESEARCH, parameters={ "company_name": "商汤科技", "company_code": "00020", "market": "HK" } ): print(f"状态: {response.status}, 消息: {response.message}") ``` #### 工作流引擎使用 ```python from plugin.industry_workflow_fixed import IndustryResearchFlow # 创建行业研究工作流 flow = IndustryResearchFlow( industry_name="人工智能", api_key="your_api_key", base_url="https://api.openai.com/v1", model="gpt-4" ) # 执行工作流 for status in flow.run(): print(status.get('message', '')) if 'final_report' in status: print("报告生成完成:", status['final_report']) break ``` #### 统一任务管理系统使用 ```python from backend.core.task_manager import get_task_manager, TaskType from backend.core.dependencies import get_task_manager_instance # 获取任务管理器实例 task_manager = get_task_manager() # 创建任务 task_id = await task_manager.create_task( task_type=TaskType.INDUSTRY_RESEARCH, metadata={ "industry_name": "人工智能", "template_name": "default" } ) # 更新任务状态 await task_manager.update_task( task_id=task_id, status=ResponseStatus.PROGRESS, progress=50, message="正在分析行业数据..." ) # 查询任务状态 task = await task_manager.get_task(task_id) print(f"任务状态: {task.status.value}, 进度: {task.progress}%") # 获取任务统计 stats = await task_manager.get_task_statistics() print(f"总任务数: {stats['total']}, 活跃任务: {stats['active']}") ``` #### 数据分析智能体 ```python from data_analysis_agent.data_analysis_agent import DataAnalysisAgent from data_analysis_agent.config.llm_config import LLMConfig # 配置LLM config = LLMConfig( api_key="your_api_key", base_url="https://api.openai.com/v1", model="gpt-4" ) # 创建分析智能体 agent = DataAnalysisAgent( company_name="商汤科技", company_code="00020", market="HK", llm_config=config ) # 生成财务分析报告 report = agent.generate_financial_analysis_report() ``` ## 📊 数据源与集成 ### 专业数据源 #### 金融数据源 - **AKShare**: 中国金融数据接口,提供股票、期货、基金等数据 - **YFinance**: 国际金融数据,支持全球股票市场数据 - **东方财富**: 财务报表、公司公告、股东信息 - **同花顺**: 股权结构、股东变动信息 #### 宏观经济数据 - **国家统计局**: GDP、CPI、PPI等官方经济指标 - **央行数据**: 货币供应量、利率、汇率数据 - **Wind数据**: 专业金融数据终端(可选集成) - **Bloomberg API**: 国际金融市场数据(可选集成) #### 搜索引擎集成 - **智能搜索生成器**: AI驱动的搜索关键词生成 - **多引擎聚合**: DuckDuckGo、百度、必应搜索结果聚合 - **内容过滤**: 智能筛选高质量信息源 - **实时更新**: 支持最新资讯和政策信息获取 ### 缓存与存储策略 #### 分层缓存架构 ``` research_data/cache/ ├── company_info/ # 公司基础信息(长期缓存) ├── financial_data/ # 财务数据(定期更新) ├── industry_info/ # 行业信息(中期缓存) └── macro_info/ # 宏观数据(实时更新) ``` #### 缓存策略 - **智能缓存**: 根据数据类型和时效性自动管理缓存 - **增量更新**: 支持数据增量获取,避免全量重复 - **版本控制**: 数据版本管理,支持历史数据回溯 - **自动清理**: 可配置的缓存过期和自动清理机制 ## 🧩 核心模块详解 ### 🖥️ 前端架构 (Streamlit) #### 组件化设计 - **主应用**: `frontend/app.py` - 单页面应用,统一导航 - **页面组件**: 模块化页面设计,支持独立开发和测试 - **API客户端**: 统一的后端通信接口,支持错误处理和重试 - **进度监控**: 实时任务状态显示和进度条 #### 用户体验优化 ```python # 错误处理装饰器 @retry_on_timeout(max_retries=3, delay=1.0) @safe_api_call def api_call_with_retry(): # 自动重试和错误恢复 pass ``` ### ⚙️ 后端架构 (FastAPI) #### API路由设计 ```python # 模块化路由 app.include_router(company.router, prefix="/api/v1/company") app.include_router(industry.router, prefix="/api/v1/industry") app.include_router(macro.router, prefix="/api/v1/macro") ``` #### 统一任务管理系统 - **全局任务管理器**: 单例模式的TaskManager,统一管理所有任务 - **多存储后端**: 支持内存、文件、Redis等多种存储方式 - **任务类型管理**: 支持公司研究、行业研究、宏观研究等多种任务类型 - **生命周期管理**: 完整的任务创建、更新、查询、删除流程 - **自动清理**: 定期清理过期任务,可配置清理策略 - **统一查询**: 所有任务都可通过 `/api/v1/reports/task/{task_id}` 查询 - **线程安全**: 支持并发访问,确保数据一致性 - **依赖注入**: 通过FastAPI依赖注入管理任务管理器实例 ### ⚡ PocketFlow工作流引擎 #### 节点式设计 ```python class BaseNode: def prep(self, shared): pass # 准备阶段 def exec(self, prep_res): pass # 执行阶段 def post(self, shared, prep_res, exec_res): pass # 后处理 ``` #### 智能决策流程 1. **决策节点**: AI判断下一步操作(搜索/生成/完成) 2. **搜索节点**: 智能信息搜索和数据收集 3. **生成节点**: 基于收集信息生成报告章节 4. **完成节点**: 整合所有章节形成最终报告 ### 🤖 AI分析智能体 #### 核心能力 - **代码生成**: 基于自然语言生成Python分析代码 - **自动执行**: 安全的代码执行环境 - **结果解析**: 智能解析执行结果并生成报告 - **图表生成**: 自动生成专业的财务图表 #### 分析流程 ```python # 典型分析流程 query = "分析公司的盈利能力趋势" code = agent.generate_analysis_code(query) result = agent.execute_code(code) report = agent.format_result(result) ``` ### 🔄 统一任务管理系统 #### 核心架构 ```python # 任务管理器核心组件 class TaskManager: """全局任务管理器(单例模式)""" async def create_task(self, task_type: TaskType, metadata: Dict) -> str: """创建新任务""" pass async def get_task(self, task_id: str) -> Optional[TaskData]: """获取任务状态""" pass async def update_task(self, task_id: str, **kwargs) -> bool: """更新任务状态""" pass ``` #### 任务类型枚举 ```python class TaskType(str, Enum): # 公司研究任务 COMPANY_RESEARCH = "company_research" COMPANY_MATERIALS = "company_materials" COMPANY_REPORT = "company_report" COMPANY_DOCX = "company_docx" # 行业研究任务 INDUSTRY_RESEARCH = "industry_research" INDUSTRY_MATERIALS = "industry_materials" INDUSTRY_REPORT = "industry_report" INDUSTRY_DOCX = "industry_docx" # 宏观研究任务 MACRO_RESEARCH = "macro_research" MACRO_MATERIALS = "macro_materials" MACRO_REPORT = "macro_report" MACRO_DOCX = "macro_docx" ``` #### 存储后端支持 - **MemoryTaskStorage**: 内存存储,适合开发和测试 - **FileTaskStorage**: 文件存储,适合单机部署 - **RedisTaskStorage**: Redis存储(可扩展),适合分布式部署 - **DatabaseTaskStorage**: 数据库存储(可扩展),适合企业级部署 #### 统一查询接口 ```python # 所有任务都可通过统一端点查询 GET /api/v1/reports/task/{task_id} # 响应格式 { "status": "success", "data": { "task_id": "uuid", "task_type": "industry_materials", "status": "progress", "progress": 50, "message": "正在收集行业信息...", "result": null, "error": null, "metadata": {...}, "created_at": "2025-01-01T00:00:00", "updated_at": "2025-01-01T00:01:00" } } ``` #### 自动清理机制 ```python # 配置清理策略 task_cleanup_interval_hours: int = 6 # 清理间隔 task_max_age_hours: int = 24 # 任务保留时间 # 自动清理过期任务 async def cleanup_expired_tasks(max_age_hours: int = 24) -> int: """清理已完成或失败的过期任务""" pass ``` ### 🔌 数据源集成层 #### 统一数据接口 ```python class DataProvider: async def get_data(self, request: DataRequest) -> DataResponse: # 统一的数据获取接口 pass ``` #### 数据源适配器 - **MacroEconomicDataProvider**: 宏观经济数据 - **FinancialDataProvider**: 金融市场数据 - **CompanyDataProvider**: 公司基础数据 - **SearchEngineProvider**: 搜索引擎数据 ## 📈 功能链路详解 ### 🏢 公司研究完整链路 #### 前端触发流程 1. **用户操作**: Streamlit界面选择"专项研究" → "公司研究" 2. **参数输入**: 公司名称、股票代码、市场类型 3. **API调用**: `frontend/utils/api_client.py::start_research()` #### 后端处理流程 4. **路由接收**: `backend/api/v1/company.py::start_full_company_research()` 5. **任务创建**: 生成UUID,初始化任务状态 6. **后台执行**: `backend/services/real_research_service.py::_execute_company_operation()` #### 核心业务执行(预定义流程,无决策节点) 7. **直接调用研究引擎**: - 创建 `IntegratedResearchReportGenerator` 实例 - **不经过决策节点**,而是固定的两阶段流程 8. **阶段一 - 数据收集**: - `stage1_data_collection()` - 财务数据、竞争对手、股票信息 9. **阶段二 - 深度分析**: - `stage2_deep_report_generation()` - AI分析智能体、图表生成 #### 公司研究的特殊性 - **固定流程**: 不使用智能决策,而是预定义的两阶段流程 - **数据驱动**: 主要依赖结构化的财务数据分析 - **AI智能体**: 使用专门的 `DataAnalysisAgent` 进行财务分析 ### 🏭 行业研究智能决策链路 #### 工作流内部决策循环 1. **工作流启动**: `plugin/industry_workflow_fixed.py::IndustryResearchFlow` 2. **内部节点循环**: - **起始节点**: `IndustryDecisionNode` (工作流内部的决策节点) - **搜索分支**: `SearchInfo` 节点 → 收集行业信息 - **生成分支**: `GenerateSection` 节点 → 生成报告章节 - **完成分支**: `CompleteReport` 节点 → 整合最终报告 - **循环机制**: 搜索和生成节点完成后都返回决策节点 #### 决策节点的智能判断 ```python # 行业决策节点的核心逻辑 class IndustryDecisionNode(BaseNode): def exec(self, prep_res): industry, context, generated_sections, generation_count, shared = prep_res # 判断逻辑 if len(context) < 3: # 信息不足 return {"action": "search", "search_terms": [...]} elif len(generated_sections) < 5: # 可以生成新章节 return {"action": "generate", "section": {...}} else: # 完成报告 return {"action": "complete"} ``` #### 关键差异说明 - **决策节点位置**: 在工作流内部,不是独立的服务层组件 - **循环机制**: 决策→执行→返回决策,形成智能循环 - **状态管理**: 通过shared状态在节点间传递信息 ### 📈 宏观研究数据集成链路 #### 工作流内部决策循环(类似行业研究) 1. **工作流启动**: `plugin/macro_workflow_fixed.py::MacroResearchFlow` 2. **内部节点循环**: - **起始节点**: `MacroDecisionNode` (工作流内部的决策节点) - **搜索分支**: `SearchInfo` 节点 → 收集宏观经济信息 - **生成分支**: `GenerateSection` 节点 → 生成分析章节 - **完成分支**: `CompleteReport` 节点 → 整合最终报告 #### 宏观数据特殊处理 3. **数据源集成**: `backend/infrastructure/external/data_sources.py` 4. **宏观指标获取**: GDP、CPI、利率、汇率等经济指标 5. **AI分析处理**: 基于宏观数据进行趋势分析和政策影响评估 6. **报告生成**: 生成宏观经济分析报告和投资建议 #### 宏观研究的特点 - **数据驱动**: 大量依赖实时的宏观经济数据 - **政策敏感**: 需要分析政策变化对经济的影响 - **时效性强**: 宏观数据更新频率高,需要及时获取 ### 📊 支持的分析类型 #### 财务分析维度 - **盈利能力**: 营收增长率、净利率、ROE、ROA - **运营效率**: 资产周转率、存货周转率、应收账款周转率 - **偿债能力**: 流动比率、速动比率、资产负债率 - **现金流分析**: 经营/投资/筹资现金流分析 - **成长性分析**: 收入增长、利润增长、市场份额变化 #### 估值分析方法 - **相对估值**: P/E、P/B、PEG、P/S等估值倍数 - **绝对估值**: DCF现金流折现模型、DDM股利折现模型 - **行业对比**: 同业公司估值水平对比分析 - **合理价值**: 综合多种方法的估值区间判断 #### 风险评估体系 - **财务风险**: 偿债风险、盈利波动风险、现金流风险 - **经营风险**: 行业周期风险、竞争格局变化风险 - **市场风险**: 流动性风险、市场波动风险、汇率风险 - **治理风险**: 管理层变动、股权结构、关联交易风险 ## 🎯 典型输出示例 ### 📝 标准研报结构 #### 公司研究报告 ```markdown # 商汤科技(00020.HK) 深度研究报告 ## 1. 📋 公司概况 - 基本信息:公司名称、成立时间、主营业务 - 股权结构:股东构成、持股比例、治理架构 - 核心竞争优势:技术壁垒、市场地位、商业模式 ## 2. 📊 财务分析 - 盈利能力:营收增长、毛利率、净利率趋势 - 运营效率:资产周转、存货管理、应收账款 - 偿债能力:流动性分析、杠杆水平、现金流 - 成长性分析:收入增长、利润增长、市场扩张 ## 3. 🏭 行业分析 - 行业概况:市场规模、增长趋势、发展阶段 - 竞争格局:主要竞争对手、市场份额、竞争优势 - 产业链分析:上下游关系、供应链稳定性 - 发展趋势:技术发展、政策影响、市场机会 ## 4. 💰 估值分析 - 相对估值:P/E、P/B等倍数与同业对比 - 绝对估值:DCF模型、敏感性分析 - 合理价值:综合估值区间、目标价格 - 投资建议:买入/持有/卖出评级及理由 ## 5. ⚠️ 风险提示 - 主要风险:技术风险、市场风险、政策风险 - 风险量化:概率评估、影响程度分析 - 应对策略:风险缓解措施、投资者建议 ``` #### 行业研究报告 ```markdown # 人工智能行业深度分析报告 ## 1. 🌍 行业概况 - 市场规模:全球及中国AI市场规模及增长预测 - 发展阶段:技术成熟度、商业化程度 - 政策环境:国家政策支持、监管框架 ## 2. 🏭 竞争格局 - 主要参与者:头部企业、新兴公司、国际巨头 - 市场份额:各细分领域的竞争态势 - 技术路线:不同技术方向的发展状况 ## 3. 📈 发展趋势 - 技术趋势:算法进展、硬件发展、应用创新 - 市场趋势:需求变化、商业模式演进 - 投资机会:重点关注领域、投资价值分析 ``` ### 📈 可视化图表输出 #### 财务分析图表 - 📊 **营收增长趋势图**: 近5年营收及增长率变化 - 📉 **盈利能力对比图**: 毛利率、净利率行业对比 - 💹 **估值水平分析图**: P/E、P/B历史估值区间 - 🎯 **现金流分析图**: 经营/投资/筹资现金流趋势 #### 行业分析图表 - 🏭 **市场份额饼图**: 主要企业市场占有率 - 📈 **行业增长曲线**: 市场规模历史及预测增长 - 🔄 **产业链关系图**: 上下游企业关系网络 - 🌍 **区域分布图**: 行业地理分布热力图 #### 宏观分析图表 - 📊 **经济指标趋势**: GDP、CPI、利率等宏观指标 - 📉 **政策影响分析**: 政策发布时间线及市场反应 - 💱 **汇率波动图**: 主要货币汇率变化趋势 - 🏦 **货币政策图**: 央行政策工具使用情况 ## 🔧 系统配置 ### 🤖 AI模型配置 #### 支持的LLM提供商 ```env # OpenAI官方 OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4 # DeepSeek OPENAI_BASE_URL=https://api.deepseek.com/v1 OPENAI_MODEL=deepseek-chat # 智谱AI OPENAI_BASE_URL=https://open.bigmodel.cn/api/paas/v4 OPENAI_MODEL=glm-4 # 月之暗面 OPENAI_BASE_URL=https://api.moonshot.cn/v1 OPENAI_MODEL=moonshot-v1-8k # 其他兼容OpenAI API的服务 OPENAI_BASE_URL=your_custom_endpoint OPENAI_MODEL=your_custom_model ``` ### ⚙️ 系统参数配置 #### 服务配置 ```env # 服务端口 FRONTEND_PORT=8501 # Streamlit前端端口 BACKEND_PORT=8000 # FastAPI后端端口 # 日志配置 LOG_LEVEL=INFO # DEBUG/INFO/WARNING/ERROR LOG_FILE_PATH=./logs/ # 日志文件路径 # 并发控制 MAX_WORKERS=3 # 最大并发任务数 TASK_TIMEOUT=3600 # 任务超时时间(秒) ``` #### 缓存配置 ```env # 缓存策略 CACHE_EXPIRE_DAYS=30 # 缓存过期天数 AUTO_CLEANUP=true # 自动清理过期缓存 CACHE_SIZE_LIMIT=10GB # 缓存大小限制 # 数据更新策略 FINANCIAL_DATA_UPDATE_INTERVAL=24h # 财务数据更新间隔 MACRO_DATA_UPDATE_INTERVAL=1h # 宏观数据更新间隔 ``` #### 安全配置 ```env # API安全 API_RATE_LIMIT=100 # API调用频率限制(次/分钟) CORS_ORIGINS=* # 跨域请求允许的源 # 数据安全 ENCRYPT_CACHE=false # 是否加密缓存数据 BACKUP_ENABLED=true # 是否启用数据备份 ``` ## 🔧 开发指南 ### 🏗️ 前端开发 #### Streamlit组件开发 ```python # frontend/components/my_component.py import streamlit as st from utils.api_client import APIClient def render_my_component(): """自定义组件渲染函数""" st.markdown("### 我的组件") # 使用API客户端 api_client = APIClient() if st.button("执行操作"): with st.spinner("处理中..."): result = api_client.my_api_call() st.success("操作完成") st.json(result) ``` #### 页面开发规范 ```python # frontend/components/new_page.py def render_new_page(): """新页面渲染函数""" # 1. 页面标题和描述 st.markdown("### 页面标题") st.info("页面功能描述") # 2. 用户输入区域 with st.form("input_form"): param1 = st.text_input("参数1") param2 = st.selectbox("参数2", ["选项1", "选项2"]) submitted = st.form_submit_button("提交") # 3. 结果显示区域 if submitted: # 调用API并显示结果 pass ``` ### ⚙️ 后端开发 #### API路由开发 ```python # backend/api/v1/new_module.py from fastapi import APIRouter, BackgroundTasks, Depends from backend.models.schemas import NewRequest, DataResponse router = APIRouter() @router.post("/new-endpoint", response_model=DataResponse) async def new_endpoint( request: NewRequest, background_tasks: BackgroundTasks, service = Depends(get_service) ): """新API端点""" task_id = str(uuid.uuid4()) # 初始化任务状态 task_storage[task_id] = { "status": ResponseStatus.PENDING, "progress": 0, "message": "任务已创建" } # 后台执行任务 background_tasks.add_task(execute_task, task_id, request) return DataResponse( status=ResponseStatus.SUCCESS, message="任务已启动", data={"task_id": task_id} ) ``` #### 业务服务开发 ```python # backend/services/new_service.py class NewService: """新业务服务""" def __init__(self): self.initialized = False async def process_data(self, data): """处理数据的异步方法""" try: # 业务逻辑处理 result = await self._do_processing(data) return {"status": "success", "data": result} except Exception as e: return {"status": "error", "message": str(e)} ``` ### � 工作流开发 #### 自定义节点开发 ```python # plugin/custom_nodes.py from pocketflow import BaseNode class CustomNode(BaseNode): """自定义工作流节点""" def prep(self, shared): """准备阶段:从共享状态获取数据""" return shared.get("input_data") def exec(self, prep_res): """执行阶段:处理数据""" # 自定义处理逻辑 processed_data = self.process(prep_res) return processed_data def post(self, shared, prep_res, exec_res): """后处理阶段:更新共享状态""" shared["output_data"] = exec_res return "next_action" # 返回下一个动作 ``` #### 工作流集成 ```python # plugin/custom_workflow.py from pocketflow import Flow from .custom_nodes import CustomNode class CustomWorkflow(Flow): """自定义工作流""" def __init__(self, **kwargs): # 创建节点 node1 = CustomNode() node2 = AnotherNode() # 连接节点 node1.next(node2, "success") # 初始化工作流 super().__init__(start=node1) ``` ### 🧪 测试开发 #### 单元测试 ```python # tests/test_api.py import pytest from fastapi.testclient import TestClient from backend.main import app client = TestClient(app) def test_health_check(): """测试健康检查接口""" response = client.get("/health") assert response.status_code == 200 assert response.json()["status"] == "healthy" def test_company_research(): """测试公司研究接口""" data = { "company_name": "测试公司", "company_code": "000001", "market": "A" } response = client.post("/api/v1/company/full-research", json=data) assert response.status_code == 200 ``` #### 集成测试 ```bash # 运行所有测试 python -m pytest tests/ -v # 运行特定测试 python -m pytest tests/test_api.py::test_health_check -v # 生成测试覆盖率报告 python -m pytest tests/ --cov=backend --cov-report=html ``` ## 🚀 性能优化 ### 💾 缓存优化策略 #### 分层缓存设计 ```python # 缓存层级 L1: 内存缓存 (Redis) - 热点数据,毫秒级访问 L2: 文件缓存 (本地) - 常用数据,秒级访问 L3: 数据库缓存 - 历史数据,分钟级访问 ``` #### 智能缓存策略 - **数据时效性判断**: 根据数据类型自动判断是否需要更新 - **增量数据获取**: 只获取变化的数据,减少网络传输 - **预加载机制**: 预测用户需求,提前加载相关数据 - **缓存压缩**: 使用压缩算法减少存储空间 ### ⚡ 并发优化 #### 异步处理架构 ```python # 异步任务处理 async def process_multiple_companies(companies): tasks = [process_company(company) for company in companies] results = await asyncio.gather(*tasks, return_exceptions=True) return results ``` #### 并发控制策略 - **线程池管理**: 使用ThreadPoolExecutor控制并发数 - **任务队列**: 使用队列管理长时间运行的任务 - **负载均衡**: 智能分配任务到不同的处理节点 - **资源限制**: 防止过度并发导致的资源耗尽 ### 🔧 资源管理 #### 内存优化 ```python # 内存使用监控 import psutil def monitor_memory(): memory = psutil.virtual_memory() if memory.percent > 80: # 触发缓存清理 clear_old_cache() ``` #### 网络优化 - **连接池**: 复用HTTP连接,减少连接开销 - **请求重试**: 智能重试机制,处理网络异常 - **超时控制**: 合理设置超时时间,避免长时间等待 - **限流保护**: 控制API调用频率,避免被限制 ### 📊 监控与调优 #### 性能监控指标 - **响应时间**: API接口响应时间监控 - **吞吐量**: 系统处理能力监控 - **错误率**: 系统错误率统计 - **资源使用**: CPU、内存、磁盘使用率 #### 自动调优机制 ```python # 自适应并发控制 class AdaptiveConcurrencyController: def __init__(self): self.max_workers = 3 self.success_rate = 1.0 def adjust_concurrency(self, success_rate): if success_rate > 0.95 and self.max_workers < 10: self.max_workers += 1 elif success_rate < 0.8 and self.max_workers > 1: self.max_workers -= 1 ``` ## 🤝 贡献指南 欢迎参与项目开发! ### 📝 开发流程 1. **Fork项目** - 点击右上角Fork按钮 2. **创建分支** - `git checkout -b feature/awesome-feature` 3. **开发测试** - 使用热部署模式进行开发 4. **提交代码** - `git commit -m 'Add awesome feature'` 5. **推送分支** - `git push origin feature/awesome-feature` 6. **创建PR** - 在GitHub上创建Pull Request ### 🐛 Bug报告 请在Issues中提供: - 详细的错误描述 - 复现步骤 - 环境信息(Python版本、依赖版本等) - 错误日志 ### 💡 功能建议 欢迎提出新功能建议: - 描述功能的用途和价值 - 提供具体的使用场景 - 讨论实现的可行性 ## 📜 免责声明 - ⚠️ 本系统生成的研报仅供参考,不构成投资建议 - 📊 数据来源于公开渠道,准确性以官方披露为准 - 💰 投资有风险,决策需谨慎 - 🤖 AI生成内容可能存在偏差,请结合专业判断使用 - 📈 历史业绩不代表未来表现 ## 🆘 技术支持 ### 📞 获取帮助 - 🐛 **Bug报告**:在GitHub Issues中提交 - 💬 **功能讨论**:参与GitHub Discussions - 📚 **文档查看**:查看项目Wiki和代码注释 - 📧 **邮件联系**:发送到项目维护者邮箱 ### 🔧 常见问题 #### 启动相关问题 **Q: 启动时出现环境变量错误?** A: 请检查`.env`文件是否正确配置,确保`OPENAI_API_KEY`等必需变量已设置。 **Q: 前端无法连接后端?** A: 检查后端服务是否正常启动,确认端口配置正确(默认8000)。 **Q: 端口被占用怎么办?** A: 修改`.env`文件中的端口配置,或使用`lsof -i :8000`查找占用进程。 #### 功能相关问题 **Q: 数据采集失败?** A: 检查网络连接,某些数据源可能需要VPN访问。确认API密钥配置正确。 **Q: AI分析响应慢?** A: 检查AI模型配置,可以尝试使用更快的模型如`gpt-3.5-turbo`。 **Q: 报告生成失败?** A: 查看日志文件确认具体错误,通常是数据不完整或模板配置问题。 #### 性能相关问题 **Q: 内存占用过高?** A: 调整`MAX_WORKERS`参数控制并发数,清理过期缓存数据。 **Q: 系统响应慢?** A: 检查缓存状态,确认数据源网络连接稳定,考虑增加系统资源。 #### 任务管理相关问题 **Q: 任务查询返回404错误?** A: 这是v3.1.0已解决的问题。确保使用统一查询端点 `/api/v1/reports/task/{task_id}`。 **Q: 任务状态不更新?** A: 检查任务管理器是否正常初始化,查看后端日志确认任务更新是否成功。 **Q: 任务自动清理不工作?** A: 检查配置文件中的清理参数,确认任务清理调度器已启动。 **Q: 多个任务ID冲突?** A: 统一任务管理器使用UUID确保唯一性,如果仍有冲突请检查系统时间。 #### 开发相关问题 **Q: 如何添加新的数据源?** A: 在`backend/infrastructure/external/`目录下创建新的数据提供商类。 **Q: 如何自定义工作流?** A: 参考`plugin/industry_workflow_fixed.py`,创建自定义节点和工作流。 ## 📄 版本历史 ### v3.1.0 (Latest) - 统一任务管理系统 - 🔄 **统一任务管理**: 企业级任务管理系统,解决404查询问题 - 📊 **多存储后端**: 支持内存、文件、Redis等多种存储方式 - 🔧 **自动清理**: 定期清理过期任务,可配置清理策略 - 🎯 **统一查询**: 所有任务都可通过统一端点查询状态 - 🛡️ **线程安全**: 支持并发访问,确保数据一致性 - 🔌 **依赖注入**: 完善的依赖管理和生命周期控制 - 📈 **任务统计**: 提供详细的任务统计和监控功能 - 🔄 **向后兼容**: 保持现有API接口不变,无缝升级 ### v3.0.0 - 前后端分离架构 - 🏗️ **架构重构**: 采用Streamlit + FastAPI前后端分离架构 - ⚡ **工作流引擎**: 集成PocketFlow智能工作流引擎 - 🔌 **数据源集成**: 专业金融数据源集成,支持多种数据提供商 - 🤖 **AI增强**: 升级AI分析能力,支持多种大语言模型 - 📊 **实时监控**: 异步任务处理,实时进度监控 - 💾 **智能缓存**: 分层缓存架构,智能数据管理 - 🔧 **开发体验**: 完善的开发工具和测试框架 ### v2.0.0 - 智能化升级 - ✨ 新增热部署开发支持 - 🔧 重构为全局缓存架构 - 🚀 优化启动脚本和多模式支持 - 🤖 增强AI分析能力 - 📊 改进数据采集流程 ### v1.x.x - 基础功能 - 🎯 基础研报生成功能 - 📈 财务数据分析 - 🏭 行业研究工作流 - 📝 Word文档输出 ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 --- ## 🌟 项目亮点 ### 🏗️ 现代化架构 - **前后端分离**: Vue 3现代化前端 + FastAPI高性能后端 - **微服务设计**: 模块化架构,清晰的分层设计,易于扩展和维护 - **统一任务管理**: 企业级任务管理系统,解决分布式任务状态问题 - **异步处理**: 支持高并发,提升系统性能和用户体验 ### ⚡ 智能工作流 - **PocketFlow引擎**: 轻量级工作流框架,支持复杂业务流程 - **AI驱动决策**: 智能判断下一步操作,自动化程度高 - **实时监控**: 可视化任务执行状态和进度 ### 🔌 专业数据集成 - **多源数据**: 集成AKShare、YFinance、东方财富等权威数据源 - **智能缓存**: 分层缓存架构,避免重复数据获取 - **实时更新**: 支持数据增量更新和自动刷新 ### 🤖 AI驱动分析 - **多模型支持**: 兼容OpenAI、DeepSeek、智谱AI等多种大语言模型 - **智能生成**: 自动生成分析代码、图表和专业报告 - **深度分析**: 财务分析、行业研究、宏观分析全覆盖 --- **⭐ 如果这个项目对您有帮助,请给我们一个星标!** **🚀 快速体验:`./start.sh` 一键启动前后端服务!** **📖 详细文档:查看各模块的详细使用说明和开发指南** **🤝 欢迎贡献:参与项目开发,共同完善这个强大的研究平台**