This commit is contained in:
dcr_xuxgc
2026-06-12 17:49:54 +08:00
commit d759a9e740
69 changed files with 14243 additions and 0 deletions

138
CHANGELOG.md Normal file
View File

@@ -0,0 +1,138 @@
# 修改记录
## 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 等进程管理器保持)