# 项目名称

## 简介
本项目旨在通过Flask框架构建一个Web应用，支持数据的导入、导出以及机器学习模型的训练和预测。项目使用SQLAlchemy进行数据库操作，并集成了Celery用于异步任务处理。

## 环境搭建

### 创建Conda环境

1. 确保已安装Anaconda。
2. 根据`environment.yml`文件新建conda环境：
   ```bash
   conda env create -f environment.yml
   ```
3. 激活新创建的环境：
   ```bash
   conda activate your_env_name
   ```

### 安装并配置Redis

1. 下载并安装Redis（Celery依赖）:
   - Windows用户: 从[https://github.com/tporadowski/redis/releases](https://github.com/tporadowski/redis/releases)下载Redis 5.0.x版本
   - Linux用户: `sudo apt-get install redis-server`
   - macOS用户: `brew install redis`

2. 版本要求:
   - 推荐使用Redis 5.0及以上版本
   - 最低支持版本: Redis 4.0
   - 项目已在Redis 5.0.14.1上测试通过

3. 启动Redis服务:
   - Windows: `redis-server.exe redis.windows.conf`
   - Linux/macOS: `redis-server`

4. 验证Redis是否正常运行:
   ```bash
   redis-cli ping
   ```
   如果返回`PONG`，则表示Redis服务正常运行。

## 项目结构

- `app/`: 包含Flask应用的主要代码。
  - `__init__.py`: 初始化Flask应用。
  - `config.py`: 配置文件。
  - `utils.py`: 工具函数。
  - `model.py`: 机器学习模型相关操作。
  - `tasks.py`: Celery任务定义。
  - `celery_app.py`: Celery配置。
- `model_optimize/`: 包含数据处理和模型优化的代码。
- `uploads/`: 用于存储上传的文件。
- `ssl/`: 存储SSL证书和密钥。

## 主要功能

### 数据导入与导出

- 支持Excel和CSV格式的数据导入。
- 根据表名导出数据为Excel或CSV格式。

### 机器学习模型

- 支持多种机器学习模型的训练和预测。
- 提供模型评分功能。

### 异步任务

- 使用Celery处理异步任务。

## 使用方法

### 启动应用

1. 确保Redis服务正在运行。

2. 激活conda环境：
   ```bash
   conda activate your_env_name
   ```

3. 启动Flask应用：
   ```bash
   python run.py
   ```

4. 启动Celery：
   ```bash
   watchfiles --filter python "celery -A app.celery_app.celery worker --loglevel=info" .
   ```
   > 说明：执行上述命令需要先安装 watchfiles:
   ```bash
   pip install watchfiles
   ```


## 配置

在`app/config.py`中可以修改数据库路径、上传文件夹路径等配置。默认配置包括：

- 数据库路径: `SoilAcidification.db`
- 上传文件夹: `uploads/datasets`
- 模型保存路径: `pkl`
- Celery配置:
  - Broker URL: `redis://localhost:6379/0`
  - Result Backend: `redis://localhost:6379/0`

## 依赖

请确保已安装以下依赖：

- Flask
- SQLAlchemy
- Celery
- Redis
- Pandas
- Scikit-learn
- XGBoost
- Watchfiles

## 许可证