Files
emall-web/PROJECT_DOCUMENTATION.md
2025-10-17 16:28:41 +08:00

445 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ChronoMail - 时光胶囊邮箱 详细文档
## 项目概述
ChronoMail是一个基于Vue3和Electron的时光胶囊邮箱应用用户可以撰写邮件并设定未来的发送时间将此刻的心情、想法和祝福寄给未来的自己或他人。项目采用深空主题设计营造时光穿梭的视觉体验。
## 技术架构
### 前端技术栈
- **Vue 3**: 使用Composition API进行组件开发
- **Vue Router 4**: 负责前端路由管理和导航守卫
- **Vant 4**: 移动端UI组件库提供丰富的交互组件
- **Axios**: HTTP客户端用于API请求和响应处理
- **Electron**: 跨平台桌面应用框架
### 项目结构
```
ChronoMail/
├── public/ # 静态资源
│ ├── favicon.svg # 网站图标
│ └── index.html # HTML模板
├── src/ # 源代码
│ ├── api/ # API接口模块
│ │ ├── index.js # API方法集合
│ │ └── request.js # Axios实例和拦截器配置
│ ├── assets/ # 静态资源
│ │ └── styles/ # 样式文件
│ ├── router/ # 路由配置
│ │ └── index.js # 路由定义和守卫
│ ├── store/ # 状态管理
│ │ └── index.js # 全局状态和操作方法
│ ├── utils/ # 工具函数
│ │ └── index.js # 通用工具方法
│ ├── views/ # 页面组件
│ │ ├── Login.vue # 登录页
│ │ ├── Register.vue # 注册页
│ │ ├── Home.vue # 首页/时光胶囊
│ │ ├── Compose.vue # 撰写邮件
│ │ ├── Inbox.vue # 收件箱
│ │ ├── Sent.vue # 发件箱
│ │ ├── Profile.vue # 个人中心
│ │ ├── Timeline.vue # 时间线
│ │ ├── CapsuleDetail.vue # 胶囊详情
│ │ └── ApiDemo.vue # API示例
│ ├── App.vue # 根组件
│ └── main.js # 应用入口
├── .env.development # 开发环境变量
├── .env.production # 生产环境变量
├── babel.config.js # Babel配置
├── vue.config.js # Vue CLI配置
└── package.json # 项目依赖和脚本
```
## 核心功能模块
### 1. 用户认证模块
- **登录功能**: 用户通过邮箱和密码登录系统
- **注册功能**: 新用户注册账号
- **Token管理**: 自动刷新和存储访问令牌
- **路由守卫**: 保护需要登录的页面
### 2. 邮件管理模块
- **撰写邮件**: 创建带有未来发送时间的邮件
- **收件箱**: 查看接收到的邮件
- **发件箱**: 查看已发送的邮件
- **草稿箱**: 管理未发送的邮件草稿
- **邮件操作**: 编辑、删除、撤销发送等
### 3. 时光胶囊模块
- **3D胶囊视图**: 在深空背景中展示时光胶囊
- **胶囊交互**: 点击胶囊查看详情
- **胶囊样式**: 自定义胶囊外观
- **倒计时显示**: 显示距离发送的时间
### 4. AI助手模块
- **写作辅助**: AI帮助生成邮件开头
- **内容建议**: 提供邮件内容建议
- **情感分析**: 分析邮件内容的情感倾向
### 5. 个人空间模块
- **时间线**: 展示用户的邮件历史
- **数据统计**: 邮件发送/接收统计
- **个人信息**: 管理用户资料
## 页面功能详解
### 1. 登录页面 (Login.vue)
- 用户登录表单
- 记住登录状态选项
- 跳转注册页面链接
- 深空主题背景设计
### 2. 注册页面 (Register.vue)
- 用户注册表单
- 密码确认验证
- 用户协议同意选项
- 跳转登录页面链接
### 3. 首页/时光胶囊 (Home.vue)
- 个性化欢迎语
- 3D时光胶囊展示
- 星空动态背景
- 搜索和通知功能
- 底部导航栏
- 悬浮撰写按钮
### 4. 撰写邮件 (Compose.vue)
- 收件人类型选择(自己/指定/公开)
- 发送时间选择(预设时间/自定义时间)
- 邮件标题和内容编辑
- 附件上传功能
- AI写作辅助
- 胶囊样式选择
- 存入草稿和发送按钮
### 5. 收件箱 (Inbox.vue)
- 邮件列表展示
- 邮件状态筛选
- 邮件详情查看
- 搜索功能
### 6. 发件箱 (Sent.vue)
- 已发送邮件列表
- 邮件状态显示
- 撤销发送功能
- 邮件详情查看
### 7. 个人中心 (Profile.vue)
- 用户信息展示
- 订阅信息显示
- 功能设置选项
- 退出登录功能
### 8. 时间线 (Timeline.vue)
- 按时间顺序展示邮件
- 邮件情感标记
- 月份统计图表
### 9. 胶囊详情 (CapsuleDetail.vue)
- 邮件完整内容展示
- 发送/接收信息
- 附件查看
- 相关操作按钮
## 状态管理
项目使用Vue 3的响应式API进行状态管理主要状态包括
### 用户状态 (userState)
```javascript
{
isLoggedIn: boolean, // 登录状态
token: string, // 访问令牌
refreshToken: string, // 刷新令牌
userInfo: { // 用户信息
userId: string,
username: string,
email: string,
avatar: string
},
subscription: { // 订阅信息
plan: string,
remainingMails: number,
features: object
}
}
```
### 邮件状态 (mailState)
```javascript
{
inboxList: [], // 收件箱邮件列表
sentList: [], // 发件箱邮件列表
draftList: [], // 草稿箱邮件列表
currentMail: {}, // 当前查看的邮件
totalCounts: { // 各类邮件计数
inbox: number,
sent: number,
draft: number
}
}
```
### 胶囊状态 (capsuleState)
```javascript
{
capsules: [], // 时光胶囊列表
scene: string, // 场景类型
background: string // 背景配置
}
```
### 时间线状态 (timelineState)
```javascript
{
timeline: [], // 时间线数据
statistics: {} // 统计数据
}
```
## API接口设计
### 认证相关
- `POST /api/v1/auth/register` - 用户注册
- `POST /api/v1/auth/login` - 用户登录
- `POST /api/v1/auth/refresh` - 刷新令牌
- `POST /api/v1/auth/logout` - 退出登录
### 邮件管理
- `GET /api/v1/mails` - 获取邮件列表
- `POST /api/v1/mails` - 创建邮件
- `GET /api/v1/mails/{id}` - 获取邮件详情
- `PUT /api/v1/mails/{id}` - 更新邮件
- `DELETE /api/v1/mails/{id}` - 删除邮件
- `POST /api/v1/mails/{id}/revoke` - 撤销发送
### 时光胶囊
- `GET /api/v1/capsules` - 获取胶囊视图
- `PUT /api/v1/capsules/{id}/style` - 更新胶囊样式
### AI助手
- `POST /api/v1/ai/writing-assistant` - 写作辅助
- `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` - 上传头像
## 环境配置
### 开发环境 (.env.development)
```
VUE_APP_API_BASE_URL=http://localhost:3000/api/v1
VUE_APP_TITLE=ChronoMail - 未来邮箱
```
### 生产环境 (.env.production)
```
VUE_APP_API_BASE_URL=https://api.chronomail.com/api/v1
VUE_APP_TITLE=ChronoMail - 未来邮箱
```
## 开发指南
### 1. 安装依赖
```bash
npm install
```
### 2. 启动开发服务器
```bash
npm run serve
```
### 3. 构建生产版本
```bash
npm run build
```
### 4. 运行Electron应用
```bash
npm run electron:serve
```
### 5. 代码检查
```bash
npm run lint
```
## 组件开发规范
### 1. 组件结构
```vue
<template>
<!-- 模板内容 -->
</template>
<script>
import { ref, computed, onMounted } from 'vue'
import { useRouter } from 'vue-router'
export default {
name: 'ComponentName',
setup() {
// 响应式数据
const data = ref('')
// 计算属性
const computedData = computed(() => {
// 计算逻辑
return data.value
})
// 方法
const method = () => {
// 方法实现
}
// 生命周期
onMounted(() => {
// 初始化逻辑
})
// 返回需要在模板中使用的数据和方法
return {
data,
computedData,
method
}
}
}
</script>
<style scoped>
/* 组件样式 */
</style>
```
### 2. 状态管理
- 使用响应式API创建状态
- 通过操作方法修改状态
- 避免直接修改状态,使用提供的操作方法
### 3. API调用
- 使用统一的API模块
- 处理加载状态和错误情况
- 使用async/await处理异步操作
## 样式设计
### 1. 主题色彩
- 主色调:深空蓝 (#0A0E27)
- 强调色:星云紫 (#6A5ACD)
- 点缀色:星光蓝 (#4285F4)
- 背景色:深空黑 (#050714)
### 2. 字体规范
- 主标题24px粗体
- 副标题18px中等
- 正文14px常规
- 辅助文本12px常规
### 3. 间距规范
- 大间距24px
- 中间距16px
- 小间距8px
- 微间距4px
### 4. 组件样式
- 使用Vant组件库作为基础
- 通过CSS变量覆盖默认样式
- 使用scoped样式避免污染
## 部署说明
### 1. Web应用部署
1. 执行构建命令:`npm run build`
2. 将dist目录上传至Web服务器
3. 配置服务器路由重定向
### 2. Electron应用打包
1. 安装electron-builder`npm install electron-builder --save-dev`
2. 配置package.json的build字段
3. 执行打包命令:`npm run electron:build`
## 性能优化
### 1. 代码分割
- 使用路由懒加载
- 按需加载组件
- 分离第三方库
### 2. 资源优化
- 图片压缩和懒加载
- 字体文件优化
- CSS代码压缩
### 3. 缓存策略
- 静态资源长期缓存
- API响应缓存
- 离线数据缓存
## 测试策略
### 1. 单元测试
- 组件渲染测试
- 方法逻辑测试
- 状态管理测试
### 2. 集成测试
- 页面跳转测试
- API调用测试
- 用户交互测试
### 3. 端到端测试
- 关键流程测试
- 跨浏览器兼容性测试
- 移动端适配测试
## 常见问题
### 1. API请求失败
- 检查网络连接
- 确认API地址配置
- 验证Token有效性
### 2. 页面加载缓慢
- 检查资源大小
- 优化图片资源
- 启用Gzip压缩
### 3. 移动端适配问题
- 检查视口设置
- 调整字体大小
- 优化触摸交互
## 未来规划
### 1. 功能扩展
- 多媒体邮件支持
- 群组邮件功能
- 邮件模板库
### 2. 技术升级
- 迁移到Vite构建工具
- 引入TypeScript
- 实现PWA功能
### 3. 用户体验优化
- 个性化主题
- 智能推荐系统
- 社交分享功能
## 联系方式
如有问题或建议,请联系开发团队。
---
*最后更新时间2024年6月*