Skip to content

v0.4.12

Choose a tag to compare

@funnywwh funnywwh released this 01 Dec 11:13
· 97 commits to main since this release

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. 修复登录密码修改检测绕过漏洞 🔒

修复内容

  • 后端增强:在 GetUserInfo API 中添加 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 升级

  1. 代码更新

    git pull origin main
  2. 后端编译

    cd backend
    go build -o server cmd/server/main.go
  3. 前端构建

    cd frontend
    npm install
    npm run build
  4. 数据库迁移:系统会自动迁移数据库,添加新的权限

  5. 配置备份

    • 访问系统管理 → 备份设置
    • 配置备份时间和启用状态
    • 建议在系统低峰期执行备份(如凌晨2点)

注意事项

  • 此版本合并了 v0.4.10 和 v0.4.11 的所有更新
  • 数据库自动备份功能需要配置备份时间和启用状态
  • 备份文件保存在数据库文件所在目录的 backups 文件夹中
  • 备份文件自动压缩为 .gz 格式,保留最近7天的备份
  • 首次登录用户必须完成密码修改才能访问系统其他功能
  • 微信登录用户不受影响,不会被强制修改密码

安全建议

  • 建议用户设置强密码(包含大小写字母和数字)
  • 建议定期检查备份文件是否正常生成
  • 建议将备份文件同步到其他存储位置(如云存储)
  • 建议在系统低峰期执行备份

下载地址: GitHub Releases