Files
Jnote-nodeJs/CHANGELOG.md
dcr_xuxgc d759a9e740 init
2026-06-12 17:49:54 +08:00

138 lines
4.0 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.
# 修改记录
## 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 等进程管理器保持)