# FutureMail API 项目

这是一个基于.NET Core 9.0的未来邮件系统API，支持创建定时邮件、时光胶囊、AI辅助等功能。

## 功能特性

- 用户认证与授权
- 创建和管理未来邮件
- 时光胶囊可视化
- AI写作辅助和情感分析
- 个人时间线和统计数据
- 文件上传功能

## 技术栈

- .NET Core 9.0
- Entity Framework Core (Code First)
- MySQL数据库
- JWT身份验证
- Swagger API文档
- Quartz.NET任务调度

## 快速开始

### 1. 运行项目

最简单的方法是使用提供的启动脚本：

```bash
start_project.bat
```

这将：
- 启动API服务器
- 打开Swagger文档页面
- 打开API测试页面

### 2. 手动运行

如果需要手动运行，请按照以下步骤：

1. 启动API服务器：
   ```bash
   cd FutureMailAPI
   dotnet run
   ```

2. 访问Swagger文档：
   ```
   http://localhost:5003/swagger
   ```

3. 使用API测试页面：
   ```
   打开 api_test.html 文件
   ```

## API文档

详细的API文档请参考：
- [API接口文档详细说明.md](./API接口文档详细说明.md)
- Swagger交互式文档：http://localhost:5003/swagger

## 主要接口

### 认证相关
- `POST /api/v1/auth/register` - 用户注册
- `POST /api/v1/auth/login` - 用户登录
- `POST /api/v1/auth/refresh` - 刷新令牌
- `POST /api/v1/auth/logout` - 用户登出

### 邮件管理
- `POST /api/v1/mails/create` - 创建邮件
- `GET /api/v1/mails` - 获取邮件列表
- `GET /api/v1/mails/{mailId}` - 获取邮件详情
- `PUT /api/v1/mails/{mailId}` - 更新邮件
- `DELETE /api/v1/mails/{mailId}` - 删除邮件
- `POST /api/v1/mails/{mailId}/revoke` - 撤销发送

### 时光胶囊
- `GET /api/v1/capsules` - 获取胶囊视图
- `PUT /api/v1/capsules/{capsuleId}/style` - 更新胶囊样式

### AI助手
- `POST /api/v1/ai/writing-assistant` - AI写作辅助
- `POST /api/v1/ai/sentiment-analysis` - 情感分析

### 个人空间
- `GET /api/v1/timeline` - 获取时间线
- `GET /api/v1/statistics` - 获取统计数据
- `GET /api/v1/user/profile` - 获取用户信息

### 文件上传
- `POST /api/v1/upload/attachment` - 上传附件
- `POST /api/v1/upload/avatar` - 上传头像

## 数据库配置

数据库连接字符串配置在 `appsettings.json` 文件中：

```json
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=FutureMailDB;User=root;Password=yourpassword;"
  }
}
```

请根据您的MySQL配置修改连接字符串。

## 项目结构

```
FutureMailAPI/
├── Controllers/          # API控制器
├── DTOs/                # 数据传输对象
├── Data/                # 数据模型和上下文
├── Helpers/             # 辅助类
├── Middleware/          # 中间件
├── Services/            # 服务类
├── Program.cs           # 应用程序入口点
└── appsettings.json     # 配置文件
```

## 测试

项目包含一个完整的API测试页面 `api_test.html`，可以测试所有主要API接口。

## 注意事项

1. 确保MySQL服务器已安装并运行
2. 首次运行时，EF Core会自动创建数据库和表
3. JWT密钥应在生产环境中更改为安全的值
4. 文件上传功能需要配置适当的存储路径

## 许可证

本项目仅供学习和演示使用。