138 lines
4.0 KiB
Markdown
138 lines
4.0 KiB
Markdown
# 修改记录
|
||
|
||
## 2026-06-10
|
||
|
||
### 1. 优化图片上传性能
|
||
**文件**: `server/src/routes/settings.js`
|
||
|
||
**问题**: 批量上传图片到 RUSTFS 时串行执行,每张图片需等待上一张完成,导致上传时间过长。
|
||
|
||
**解决方案**: 将 `for...of` 串行上传改为 `Promise.all` 并行上传。
|
||
|
||
**改动内容**:
|
||
- 将批量上传接口 `/upload-images` 的串行逻辑改为并行
|
||
- 使用 `Promise.all()` 同时上传所有图片
|
||
|
||
---
|
||
|
||
### 2. 新增服务端配置页面
|
||
**目标**: 在前端设置界面添加配置页面,支持动态修改 .env 配置并重启后端服务。
|
||
|
||
#### 后端新增文件
|
||
|
||
**`server/src/config/envManager.js`**
|
||
- `readEnv()` - 读取并解析 .env 文件
|
||
- `writeEnv(config)` - 将配置对象写入 .env 文件
|
||
- `getSafeConfig()` - 返回安全展示的配置(密码用 `******` 替代)
|
||
|
||
**`server/src/routes/config.js`**
|
||
- `GET /api/config` - 获取当前配置(密码隐藏)
|
||
- `PUT /api/config` - 更新配置并写入 .env 文件
|
||
- `POST /api/config/restart` - 优雅重启后端服务
|
||
|
||
#### 后端修改文件
|
||
|
||
**`server/src/index.js`**
|
||
- 注册新路由 `app.use('/api/config', configRouter)`
|
||
|
||
#### 前端新增文件
|
||
|
||
**`src/views/ServerConfigView.vue`**
|
||
- 配置分组显示:数据库、RUSTFS、服务器
|
||
- 密码字段显示为 `******`,修改时留空则不修改原密码
|
||
- 保存按钮 - 调用 API 保存配置到 .env
|
||
- 重启按钮 - 调用 API 优雅重启服务(需 PM2 等进程管理器)
|
||
|
||
#### 前端修改文件
|
||
|
||
**`src/router/index.js`**
|
||
- 添加路由 `/server-config` -> ServerConfigView(懒加载)
|
||
|
||
**`src/i18n/index.js`**
|
||
- 添加 `serverConfig` 中英文翻译
|
||
|
||
**`src/components/SiteHeader.vue`**
|
||
- 导航栏添加"服务端配置"链接
|
||
|
||
---
|
||
|
||
### 使用说明
|
||
|
||
1. **启动后端**(需使用 PM2 管理进程):
|
||
```bash
|
||
pm2 start npm -- run dev
|
||
```
|
||
|
||
2. **访问配置页面**: 启动后端后访问 `/server-config`
|
||
|
||
3. **保存配置**: 点击"保存配置"按钮,配置会写入 `.env` 文件
|
||
|
||
4. **重启服务**: 点击"重启服务"按钮,后端会优雅退出(`process.exit(0)`),PM2 会自动重启
|
||
|
||
### 注意事项
|
||
|
||
- 密码字段显示为 `******`,如需修改请输入新密码,留空则保持原密码不变
|
||
- 重启功能需要配合 PM2 等进程管理器使用,否则服务将无法自动恢复
|
||
|
||
---
|
||
|
||
### 3. 新增文章编辑功能
|
||
|
||
**目标**: 提供完整的文章新建和编辑功能。
|
||
|
||
#### 前端新增文件
|
||
|
||
**`src/views/PostEditorView.vue`**
|
||
- 新建文章页面 (`/post/new`)
|
||
- 编辑文章页面 (`/post/edit/:id`)
|
||
- 包含标题、日期、摘要、正文等字段
|
||
- 保存后自动返回文章列表
|
||
|
||
#### 前端修改文件
|
||
|
||
**`src/views/HomeView.vue`**
|
||
- 页面头部添加"新建文章"按钮
|
||
|
||
**`src/views/PostDetail.vue`**
|
||
- 添加"编辑"和"删除"按钮
|
||
- 支持从文章详情页直接编辑或删除
|
||
|
||
**`src/router/index.js`**
|
||
- 添加路由 `/post/new` -> PostEditorView
|
||
- 添加路由 `/post/edit/:id` -> PostEditorView
|
||
|
||
**`src/i18n/index.js`**
|
||
- 添加 `home.newPost` 翻译
|
||
- 添加 `postEditor` 完整翻译(中英文)
|
||
|
||
---
|
||
|
||
### 4. 后端定时任务调度器
|
||
|
||
**目标**: 将定时任务调度逻辑从前端移到后端,确保即使没有人打开页面,任务也会按计划执行。
|
||
|
||
#### 新增文件
|
||
|
||
**`server/src/config/cronScheduler.js`**
|
||
- `start()` - 启动调度器,每 10 秒检查一次到期任务
|
||
- `stop()` - 停止调度器
|
||
- `checkAndRunTasks()` - 检查并执行到期的任务
|
||
- `executeTask(task)` - 执行单个定时任务
|
||
|
||
#### 后端修改文件
|
||
|
||
**`server/src/index.js`**
|
||
- 导入 `cronScheduler` 模块
|
||
- 在服务器启动时调用 `cronScheduler.start()`
|
||
|
||
#### 功能说明
|
||
|
||
- 调度器每 10 秒检查一次所有已启用的定时任务
|
||
- 当任务的 `nextRun` 时间已到,立即执行任务
|
||
- 执行后自动计算下一次执行时间并更新数据库
|
||
- 任务在后端运行,不依赖前端页面打开
|
||
|
||
### 注意事项
|
||
|
||
- 定时任务由后端调度,前端 CronView 仍可手动执行和查看任务状态
|
||
- 后端调度需在服务器运行期间持续工作(由 PM2 等进程管理器保持) |