stockany2 / docs /ARCHITECTURE.md
fiewolf1000's picture
Upload 67 files
0f10134 verified
# 系统架构文档
本文档详细描述了智能股票分析系统的架构设计,旨在为开发人员提供清晰的指导,以便进行后续的维护和功能扩展。
## 1. 概览
系统采用模块化的分层架构,主要由**表现层 (Presentation Layer)****应用层 (Application Layer)****核心逻辑层 (Core Logic Layer)****数据层 (Data Layer)** 构成。这种设计旨在实现高内聚、低耦合,使系统更易于扩展和维护。
## 2. 目录结构
```
/
|-- app/ # 核心应用代码
| |-- analysis/ # 分析模块
| | |-- stock_analyzer.py
| | |-- fundamental_analyzer.py
| | |-- ...
| |-- core/ # 核心组件 (如数据库)
| | |-- database.py
| |-- web/ # Web服务 (Flask)
| | |-- web_server.py
| | |-- templates/
| | |-- static/
|-- configs/ # 配置文件
|-- data/ # 数据文件 (日志、缓存、数据库)
|-- docs/ # 项目文档
|-- scripts/ # 脚本 (启动、部署)
|-- tradingagents/ # 智能体交易模块
|-- run.py # 应用入口
|-- requirements.txt # Python依赖
|-- .env # 环境变量
```
## 3. 分层架构
### 3.1. 表现层 (Presentation Layer)
- **组件**: `app/web/templates/``app/web/static/`
- **职责**: 负责用户界面的渲染和交互。使用 **Flask** 的模板引擎(Jinja2)动态生成HTML页面,并通过JavaScript、CSS和图像等静态资源提供丰富的用户体验。
### 3.2. 应用层 (Application Layer)
- **组件**: `app/web/web_server.py`, `run.py`
- **职责**: 作为系统的入口,处理HTTP请求和响应。
- **`web_server.py`**: 定义了所有API端点和Web路由。它负责解析用户请求,调用核心逻辑层的服务,并将结果返回给表现层。
- **`run.py`**: 应用的启动脚本,负责初始化和运行Flask服务。
### 3.3. 核心逻辑层 (Core Logic Layer)
- **组件**: `app/analysis/`, `app/core/`, `tradingagents/`
- **职责**: 实现系统的核心业务逻辑,包括数据分析、模型计算和第三方服务集成。
- **`app/analysis/`**: 包含多个独立的分析模块,每个模块负责一个特定的分析领域(如技术分析、基本面分析、资金流分析等)。这种设计使得每个分析功能都可以独立开发和测试。
- **`app/core/`**: 提供核心共享组件,例如数据库连接和会话管理 (`database.py`)。
- **`tradingagents/`**: 一个独立的模块,用于实现更复杂的智能体分析功能。
### 3.4. 数据层 (Data Layer)
- **组件**: `data/`, `akshare` (第三方库)
- **职责**: 负责数据的持久化存储和访问。
- **`data/`**: 存储应用的持久化数据,包括:
- `stock_analyzer.db`: SQLite数据库文件。
- `logs/`: 应用日志。
- `news/`: 缓存的新闻数据。
- **`akshare`**: 作为主要的数据源,提供股票市场数据。
## 4. 关键流程
### 4.1. 应用启动流程
1. 用户执行 `scripts/start.sh` 脚本。
2. 脚本运行 `run.py`。
3. `run.py` 导入并启动 `app/web/web_server.py` 中的Flask应用。
4. Flask应用初始化所有路由和核心服务。
### 4.2. 用户请求处理流程 (以股票分析为例)
1. 用户在前端页面提交股票分析请求。
2. JavaScript将请求发送到 `web_server.py` 中定义的API端点 (例如 `/api/start_stock_analysis`)。
3. `web_server.py` 接收请求,并调用 `app/analysis/stock_analyzer.py` 中的分析方法。
4. `stock_analyzer.py` 通过 `akshare` 获取数据,进行计算和分析。
5. 分析结果返回给 `web_server.py`。
6. `web_server.py` 将结果格式化为JSON,并返回给前端。
7. 前端JavaScript接收到JSON数据,并动态更新页面内容。
## 5. 设计原则
- **模块化**: 将系统划分为多个独立的模块,每个模块都有明确的职责。
- **分层**: 通过分层架构,将UI、业务逻辑和数据访问分离。
- **可扩展性**: 易于添加新的分析模块或更换数据源,而无需修改系统的核心结构。
- **可维护性**: 清晰的代码结构和文档,便于开发者理解和维护。