v0.4.12
v0.4.12 发布说明
发布日期: 2025年12月01日
版本概述
v0.4.12 版本合并了 v0.4.10 和 v0.4.11 的所有更新,并新增了数据库自动备份功能。本次更新包括用户体验优化、安全修复和重要的数据安全保障功能。同时优化了首次登录修改密码界面,显示用户名和昵称信息,提升用户体验。
主要更新
1. 数据库自动备份功能 💾(新增)
功能特点
- 自动定时备份:支持设置每天固定时间自动备份数据库
- 手动触发备份:支持通过前端界面手动触发备份
- 数据一致性保障:使用 SQLite 的
VACUUM INTO命令确保备份时数据一致(不支持时自动回退到文件复制) - 自动压缩:备份文件自动压缩为
.gz格式,节省存储空间 - 自动清理:自动清理7天前的旧备份,避免占用过多存储空间
- 备份验证:自动验证备份文件完整性和有效性
- 权限控制:需要
system:settings权限才能访问备份设置
技术实现
- 使用
VACUUM INTO命令创建一致的数据库快照,支持在线备份 - 使用
time.AfterFunc精确调度,支持到秒级精度 - 使用互斥锁防止同时执行多个备份
- 配置变更后自动重新计算下次执行时间
- 备份文件完整性验证(SQLite 文件头检查)
- 详细的日志记录(开始时间、结束时间、耗时、压缩比例等)
涉及的模块
- ✅
backend/internal/utils/backup.go- 备份函数 - ✅
backend/internal/utils/scheduler.go- 定时任务调度器 - ✅
backend/internal/api/system.go- 系统设置API - ✅
frontend/src/views/system/BackupSettings.vue- 备份设置页面
2. 项目弹窗详情内容完善 🎯
完善了项目列表弹窗详情的内容,使其与非弹窗详情页面完全一致:
- 添加统计概览(总任务数、总Bug数、总需求数、项目成员数)
- 添加任务统计、Bug统计、需求统计,支持点击跳转
- 添加完整的历史记录时间线
- 添加项目成员列表
- 补充顶部操作按钮(需求管理、任务管理、Bug管理、看板、甘特图等)
3. 任务弹窗详情内容完善 📋
添加了依赖任务部分,支持点击跳转到依赖任务详情。
4. 版本弹窗详情样式优化 🎨
优化了关联需求和关联Bug的链接样式,统一使用 a-button type="link"。
5. 前端构建配置优化 🛠️
优化了代码分割策略,将大型库分离到独立的 chunk,减少主 chunk 大小,提升加载性能。
6. 修复登录密码修改检测绕过漏洞 🔒
修复内容
- 后端增强:在
GetUserInfoAPI 中添加is_first_login字段,基于LoginCount == 1 && Password != ""判断 - 前端状态管理:在 auth store 中添加
isFirstLogin状态 - 路由守卫增强:添加首次登录检查,强制跳转到修改密码页面
- 状态同步:修改密码成功后,清除
isFirstLogin状态,并更新后端LoginCount为 2
修复效果
- ✅ 首次登录用户必须完成密码修改才能访问系统其他功能
- ✅ 无法通过修改URL、刷新页面等方式跳过修改密码检测
- ✅ 微信登录用户不受影响,不会被误判
7. 修复其他相关问题 🔧
- 修复修改密码后状态不同步问题
- 修复
GetUserInfo判断逻辑不准确问题(微信用户不会被误判) - 修复路由守卫时序问题
- 修复 AppHeader 中修改密码未清除状态问题
8. 初始化修改密码界面优化 🎨
优化了首次登录修改密码界面的用户体验:
- 显示用户信息:在修改密码表单上方显示用户名和昵称
- 信息确认:用户可以在设置密码前确认当前账号信息
- 自动加载:如果用户信息未加载,自动从后端获取并显示
- 样式优化:使用描述列表组件展示用户信息,界面更清晰美观
更新内容
新增文件
后端:
backend/internal/utils/backup.go- 备份函数backend/internal/utils/scheduler.go- 定时任务调度器backend/internal/api/system.go- 系统设置API
前端:
frontend/src/api/system.ts- 备份配置API接口frontend/src/views/system/BackupSettings.vue- 备份设置页面
修改文件
后端:
backend/internal/utils/backup.go- 备份函数,支持 VACUUM INTO 和文件复制回退,添加备份验证backend/internal/utils/scheduler.go- 定时任务调度器,精确调度和配置重载backend/internal/utils/migrate.go- 添加系统设置权限backend/cmd/server/main.go- 启动定时任务、修改备份调用、添加路由backend/internal/api/system.go- 系统设置API,备份配置和手动触发backend/internal/api/auth.go- GetUserInfo 添加 is_first_login 字段,ChangePassword 更新 LoginCount
前端:
frontend/src/views/system/BackupSettings.vue- 备份设置页面,支持配置和手动触发frontend/src/api/system.ts- 备份配置API接口frontend/src/views/project/Project.vue- 完善弹窗详情内容frontend/src/views/task/Task.vue- 添加依赖任务部分frontend/src/views/version/Version.vue- 优化链接样式frontend/vite.config.ts- 优化代码分割策略frontend/src/types/user.ts- User 接口添加 is_first_login 字段frontend/src/stores/auth.ts- 添加 isFirstLogin 状态frontend/src/router/index.ts- 路由守卫增强,添加备份设置路由frontend/src/views/auth/*.vue- 登录和修改密码相关页面状态同步,修改密码界面显示用户信息frontend/src/components/AppHeader.vue- 修改密码状态清除frontend/src/config/menu.ts- 添加备份设置菜单项
升级指南
从 v0.4.9 升级
-
代码更新:
git pull origin main
-
后端编译:
cd backend go build -o server cmd/server/main.go -
前端构建:
cd frontend npm install npm run build -
数据库迁移:系统会自动迁移数据库,添加新的权限
-
配置备份:
- 访问系统管理 → 备份设置
- 配置备份时间和启用状态
- 建议在系统低峰期执行备份(如凌晨2点)
注意事项
- 此版本合并了 v0.4.10 和 v0.4.11 的所有更新
- 数据库自动备份功能需要配置备份时间和启用状态
- 备份文件保存在数据库文件所在目录的
backups文件夹中 - 备份文件自动压缩为
.gz格式,保留最近7天的备份 - 首次登录用户必须完成密码修改才能访问系统其他功能
- 微信登录用户不受影响,不会被强制修改密码
安全建议
- 建议用户设置强密码(包含大小写字母和数字)
- 建议定期检查备份文件是否正常生成
- 建议将备份文件同步到其他存储位置(如云存储)
- 建议在系统低峰期执行备份
下载地址: GitHub Releases