Skip to content

funnywwh/goproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目管理系统

基于Go + Gin + GORM和Vue3 + TypeScript + Ant Design Vue的全栈项目管理软件。

当前版本: v0.4.12
最后更新: 2025年12月02日

📦 v0.4.12 发布说明 | 开发计划 | API文档

技术栈

  • 后端: Go + Gin + GORM + SQLite(支持MySQL)
  • 前端: Vue 3 + TypeScript + Ant Design Vue + Vite
  • 认证: 微信开放平台扫码登录
  • 测试: TDD开发,单元测试覆盖率目标100%

项目结构

project/
├── backend/          # Go后端
│   ├── cmd/server/  # 应用入口
│   ├── internal/    # 内部包
│   │   ├── api/     # API路由层
│   │   ├── service/ # 业务逻辑层
│   │   ├── model/   # 数据模型
│   │   ├── repository/ # 数据访问层
│   │   ├── middleware/ # 中间件
│   │   └── utils/   # 工具函数
│   ├── pkg/         # 可复用包
│   └── migrations/  # 数据库迁移
└── frontend/        # Vue3前端
    └── src/
        ├── api/     # API接口
        ├── views/   # 页面组件
        ├── components/ # 公共组件
        ├── stores/  # 状态管理
        └── router/  # 路由配置

已完成功能

后端

  • ✅ 项目初始化和基础架构
  • ✅ 数据库模型设计(所有表结构)
  • ✅ 微信登录集成
  • ✅ JWT认证机制
  • ✅ RBAC权限系统
  • ✅ 系统初始化功能
    • ✅ 系统初始化状态检查
    • ✅ 微信配置保存(第一步)
    • ✅ 微信扫码初始化(第二步:通过微信登录创建管理员)
    • ✅ 密码登录初始化(第二步:通过用户名密码创建管理员)
    • ✅ 初始化二维码生成
    • ✅ WebSocket 扫码通知
  • ✅ 静态文件服务(支持前端 SPA 路由)
  • ✅ 用户管理API
    • ✅ 用户CRUD操作
    • ✅ 用户昵称功能(username用于登录,nickname用于显示)
    • ✅ 扫码添加用户功能
    • ✅ 软删除用户恢复机制
    • ✅ 并发创建用户冲突处理
  • ✅ 微信账号绑定API(v0.2.0)
    • ✅ 获取微信绑定二维码
    • ✅ 处理微信绑定回调
    • ✅ 微信解绑功能
    • ✅ WebSocket实时通知绑定状态
  • ✅ 部门管理API
  • ✅ 角色和权限管理API
    • ✅ RBAC权限模型(用户-角色-权限)
    • ✅ 多级菜单和菜单权限控制
    • ✅ 菜单权限和操作权限分离(菜单权限控制菜单显示,操作权限控制API访问)
  • ✅ 项目管理API(项目CRUD、成员管理、统计)
    • ✅ 项目创建者自动加入项目成员(角色为"项目经理")
  • ✅ 需求管理API(CRUD、状态流转、统计)
  • ✅ Bug管理API(CRUD、状态流转、分配、统计)
  • ✅ 任务管理API(CRUD、状态流转、进度管理、任务依赖关系)
    • ✅ 任务工时管理(预估工时、实际工时、自动计算进度)
    • ✅ 任务进度更新界面(支持预估工时、实际工时、工作日期)
    • ✅ 进度自动计算(实际工时/预估工时 * 100,范围0-100%)
    • ✅ 资源分配自动创建(更新实际工时时自动创建资源分配记录)
  • ✅ 看板管理API(看板、列、任务拖拽排序)
  • ✅ 甘特图API(任务时间线、依赖关系、进度可视化)
  • ✅ 项目进度跟踪API(统计图表、进度报表)
  • ✅ 版本管理API(版本CRUD,Markdown发布说明,关联需求和Bug)
  • ✅ 测试单管理API(测试单CRUD,多测试类型,关联Bug)
  • ✅ 测试报告管理API(测试报告CRUD,关联测试单)
  • ✅ 资源管理API(资源统计、资源分配、资源利用率分析、冲突检测)
  • ✅ 资源分配管理API(资源分配CRUD,日历视图,冲突检测)
  • ✅ 工作报告API(日报、周报CRUD,支持Markdown)
    • ✅ 工作汇总功能(自动汇总资源分配记录和用户创建的Bug)
  • ✅ 附件管理API(v0.2.0)
    • ✅ 文件上传、下载、关联实体
    • ✅ 附件列表管理
    • ✅ 文件存储管理
  • ✅ 功能模块管理API(模块CRUD,系统资源)
  • ✅ 个人工作台API(聚合显示用户相关事务)
  • ✅ SQLite数据库迁移优化(支持NOT NULL字段添加)
  • ✅ 数据库自动备份功能(v0.4.12)
    • ✅ 定时自动备份(支持每天固定时间备份)
    • ✅ 手动触发备份
    • ✅ 备份文件自动压缩和清理
    • ✅ 备份文件完整性验证
    • ✅ 使用 VACUUM INTO 确保数据一致性
  • ✅ 禅道数据迁移工具(v0.3.0)
    • ✅ 部门、角色、用户迁移
    • ✅ 项目、项目模块、版本迁移
    • ✅ 需求、任务、Bug迁移
    • ✅ 项目成员迁移

前端

  • ✅ 项目初始化和基础配置
  • ✅ 路由配置和守卫
  • ✅ 状态管理(Pinia)
  • ✅ 登录页面(支持微信登录和密码登录,默认微信登录)
  • ✅ 系统初始化页面(支持微信扫码和密码登录两种方式)
  • ✅ 工作台页面框架
  • ✅ API请求封装(TypeScript 类型完善)
  • ✅ TypeScript 类型系统完善(所有类型错误已修复)
  • ✅ 用户管理页面
    • ✅ 用户列表展示(显示格式:username(nickname))
    • ✅ 用户编辑功能(支持昵称编辑)
    • ✅ 扫码添加用户功能
    • ✅ 添加用户后昵称设置对话框
    • ✅ 部门选择改为树形选择(a-tree-select)
  • ✅ 微信账号绑定页面(v0.2.0)
    • ✅ 微信绑定二维码显示(WeChatQRCode组件)
    • ✅ 绑定状态显示(用户信息页面)
    • ✅ 微信解绑功能
    • ✅ WebSocket实时通知绑定状态
  • ✅ 项目管理页面(项目详情、统计、成员管理)
  • ✅ 需求管理页面(列表、创建、编辑、详情、统计)
  • ✅ Bug管理页面(列表、创建、编辑、详情、分配、统计)
  • ✅ 任务管理页面(列表、创建、编辑、详情、进度管理、依赖关系)
    • ✅ 任务进度更新界面(预估工时、实际工时、工作日期)
    • ✅ 进度自动计算(根据工时实时计算)
    • ✅ 工时显示(显示当前实际工时)
  • ✅ 看板页面(看板视图、拖拽排序、列管理)
  • ✅ 甘特图页面(任务时间线、依赖关系、进度可视化)
  • ✅ 进度跟踪页面(统计图表、进度报表、成员工作量)
  • ✅ 版本管理页面(版本列表、创建、编辑、关联需求和Bug、状态管理)
  • ✅ 版本详情页面(显示关联需求和Bug)
  • ✅ 测试单管理页面(列表、创建、编辑、多测试类型选择、关联Bug)
  • ✅ 测试报告管理页面(列表、创建、编辑、关联测试单)
  • ✅ 资源统计页面(按项目和人员统计工时)
  • ✅ 资源分配管理页面(资源分配CRUD,日历视图)
  • ✅ 工作报告页面(日报、周报CRUD,支持Markdown)
    • ✅ 工作汇总功能(自动汇总资源分配记录和用户创建的Bug)
  • ✅ 附件管理功能(文件上传、下载、关联实体)
  • ✅ 功能模块管理页面(模块CRUD)
    • ✅ 通用模块管理组件(ModuleManagement)
    • ✅ 支持在项目列表和详情页直接弹出管理对话框
  • ✅ Markdown编辑器组件
  • ✅ 项目详情页优化
    • ✅ 修复页面滚动问题
    • ✅ 项目描述支持Markdown格式渲染显示
  • ✅ 历史记录功能(v0.4.0)
    • ✅ 为项目、需求、任务、Bug、版本详情页面添加历史记录
    • ✅ 支持查看操作历史(创建、编辑、分配、解决等)
    • ✅ 支持添加备注
    • ✅ 历史记录详情可折叠展开
  • ✅ 编辑模态框优化(v0.4.0)
    • ✅ 详情页面的"编辑"按钮直接弹出编辑模态框
    • ✅ 无需跳转页面即可编辑
    • ✅ 支持Markdown编辑器中的图片上传
  • ✅ 详情页面滚动修复(v0.4.0)
    • ✅ 修复所有详情页面的滚动问题
    • ✅ 统一页面样式和交互体验
  • ✅ 数据库备份设置页面(v0.4.12)
    • ✅ 备份配置管理(启用/禁用、备份时间设置)
    • ✅ 手动触发备份功能
    • ✅ 备份状态显示(上次备份时间)

项目状态

已完成功能模块 ✅

  1. 项目管理 - 项目管理,成员管理,项目统计,标签管理
  2. 需求管理和Bug追踪 - 需求/Bug的CRUD、状态流转、分配、统计,Markdown支持
  3. 任务管理和看板系统 - 任务CRUD、状态流转、进度管理、任务依赖、看板拖拽、甘特图、进度跟踪
  4. 版本管理 - 版本管理、版本关联需求和Bug、状态管理
  5. 任务工时管理 - 预估工时、实际工时、自动计算进度、资源分配自动创建
  6. 测试管理 - 测试单管理、测试报告管理、测试统计和覆盖率分析
  7. 资源管理 - 资源统计、资源分配、资源利用率分析、冲突检测
  8. 工作报告系统 - 日报、周报管理、工作汇总、审批流程(v0.2.0优化)
  9. 微信账号绑定 - 微信绑定、解绑、WebSocket实时通知(v0.2.0)
  10. 附件管理 - 文件上传、下载、关联实体、附件列表管理(v0.2.0)
  11. 禅道数据迁移 - 支持从禅道系统迁移数据到本系统(v0.3.0)
    • ✅ 部门、角色、用户迁移
    • ✅ 项目、项目模块、版本迁移
    • ✅ 需求、任务、Bug迁移
    • ✅ 项目成员迁移
  12. 通用组件封装 - 模块管理组件封装为通用组件(v0.3.0)
  13. 历史记录系统 - 完整的操作历史记录和备注功能(v0.4.0)
    • ✅ 项目、需求、任务、Bug、版本操作历史记录
    • ✅ 字段变更详情记录和显示
    • ✅ 手动添加备注功能
    • ✅ 历史记录可折叠展开
  14. 编辑模态框优化 - 详情页面直接编辑功能(v0.4.0)
    • ✅ 所有详情页面支持模态框编辑
    • ✅ 无需跳转即可完成编辑操作
    • ✅ 提升用户体验和操作效率
  15. 数据库自动备份 - 完整的数据安全保障功能(v0.4.12)
    • ✅ 定时自动备份(每天固定时间)
    • ✅ 手动触发备份
    • ✅ 备份文件自动压缩和清理(保留7天)
    • ✅ 备份文件完整性验证
    • ✅ 使用 VACUUM INTO 确保数据一致性

进行中 ⏳

  • 单元测试补充(各模块测试覆盖率提升至100%)
  • 禅道数据迁移工具完善(支持更多数据类型的迁移)

v0.4.12 更新内容(2025年12月02日)

  • ✅ 数据库自动备份功能:支持定时备份和手动备份,确保数据安全
  • ✅ 备份文件验证:自动验证备份文件完整性和有效性
  • ✅ 用户体验优化:统一弹窗详情和非弹窗详情内容
  • ✅ 安全修复:修复登录密码修改检测绕过漏洞
  • ✅ 前端构建优化:优化代码分割策略,提升加载性能

v0.4.0 更新内容(2025年11月27日)

  • ✅ 历史记录功能:为项目、需求、任务、Bug、版本详情页面添加完整的操作历史记录
  • ✅ 编辑模态框:详情页面支持直接弹出编辑模态框,无需跳转
  • ✅ 滚动修复:修复所有详情页面的滚动问题,统一用户体验
  • ✅ 备注功能:支持在历史记录中添加备注
  • ✅ 字段变更追踪:详细记录和显示字段变更历史

待开发功能 📋

  1. 插件管理系统 - 插件安装、配置、前端界面支持、插件市场
  2. 关系图生成 - 数据库ER图、业务关系图

开发指南

后端开发

  1. 启动开发服务器:
cd backend
go run cmd/server/main.go

服务器启动后会自动:

  • 初始化数据库连接
  • 执行数据库迁移
  • 启动 API 服务(默认端口:8080)
  • 提供静态文件服务(如果 frontend/dist 目录存在)
  1. 运行测试:
go test ./...
  1. 数据库迁移: 数据库会在启动时自动迁移(通过GORM AutoMigrate)

  2. 静态文件服务: 后端会自动查找并服务前端构建后的静态文件(frontend/dist),支持 SPA 路由。

前端开发

  1. 安装依赖:
cd frontend
npm install
  1. 启动开发服务器:
npm run dev
  1. 构建生产版本:
npm run build
# 或使用 yarn
yarn build

构建后的文件在 frontend/dist 目录,后端会自动服务这些静态文件。

配置说明

后端配置

编辑 backend/config.yaml

  • 数据库配置(SQLite或MySQL)
  • JWT密钥
  • 微信开放平台AppID和AppSecret
  • 服务器端口等

前端配置

编辑 frontend/.env

  • API基础URL

API文档

API采用RESTful风格,主要端点:

  • /api/init/* - 系统初始化(检查状态、保存微信配置、完成初始化)
  • /api/auth/* - 认证相关(登录、微信登录、用户信息)
    • /api/auth/wechat/bind/qrcode - 获取微信绑定二维码(v0.2.0)
    • /api/auth/wechat/bind/callback - 处理微信绑定回调(v0.2.0)
    • /api/auth/wechat/unbind - 解绑微信(v0.2.0)
  • /api/permissions/* - 权限管理
  • /api/users/* - 用户管理
  • /api/departments/* - 部门管理
  • /api/projects/* - 项目管理
  • /api/requirements/* - 需求管理
  • /api/bugs/* - Bug管理
  • /api/tasks/* - 任务管理
  • /api/versions/* - 版本管理
  • /api/test-cases/* - 测试单管理
  • /api/test-reports/* - 测试报告管理
  • /api/resources/* - 资源管理(统计、利用率、冲突检测)
  • /api/resource-allocations/* - 资源分配管理
  • /api/reports/* - 工作报告(v0.2.0优化)
    • /api/reports/work-summary - 获取工作汇总(v0.2.0)
  • /api/daily-reports/* - 日报管理
  • /api/weekly-reports/* - 周报管理
  • /api/attachments/* - 附件管理(v0.2.0)
  • /api/modules/* - 功能模块管理
  • /api/boards/* - 看板管理
  • /api/dashboard/* - 工作台数据
  • /api/system/* - 系统设置(v0.4.12)
    • /api/system/backup-config - 备份配置管理(GET/POST)
    • /api/system/backup/trigger - 手动触发备份(POST)

数据迁移

系统提供了从禅道(Zentao)到本系统的数据迁移工具:

支持迁移的数据类型

  • ✅ 部门(zt_dept -> departments)
  • ✅ 角色和权限(zt_group + zt_grouppriv -> roles + permissions)
  • ✅ 用户(zt_user -> users)
  • ✅ 项目(zt_project -> projects)
  • ✅ 项目模块(zt_module -> modules)
  • ✅ 版本(zt_build -> versions)
  • ✅ 需求(zt_story -> requirements)
  • ✅ 任务(zt_task -> tasks)
  • ✅ Bug(zt_bug -> bugs)
  • ✅ 项目成员(zt_team -> project_members)

使用方法

详细使用说明请参考 数据迁移工具文档

详细 API 文档请参考 docs/API设计文档.md

数据迁移工具

系统提供了从禅道(Zentao)到本系统的数据迁移工具,支持迁移以下数据类型:

  • ✅ 部门(zt_dept -> departments)
  • ✅ 角色和权限(zt_group + zt_grouppriv -> roles + permissions)
  • ✅ 用户(zt_user -> users)
  • ✅ 项目(zt_project -> projects)
  • ✅ 项目模块(zt_module -> modules)
  • ✅ 版本(zt_build -> versions)
  • ✅ 需求(zt_story -> requirements)
  • ✅ 任务(zt_task -> tasks)
  • ✅ Bug(zt_bug -> bugs)
  • ✅ 项目成员(zt_team -> project_members)

使用方法

  1. 配置文件:复制 backend/cmd/migrate/migrate-config.yaml.examplemigrate-config.yaml,并修改数据库连接信息

  2. 运行迁移

cd backend
go run cmd/migrate/main.go -config cmd/migrate/migrate-config.yaml

详细使用说明请参考 数据迁移工具文档

开发规范

  1. TDD开发:先写测试,再实现功能
  2. 代码规范:遵循Go和TypeScript最佳实践
  3. 数据库兼容:使用GORM抽象层,支持SQLite和MySQL
  4. Markdown支持:需求、Bug、任务等模块支持Markdown格式

系统初始化

首次使用系统需要进行初始化:

  1. 访问初始化页面:系统会自动检测是否已初始化,未初始化会跳转到 /init 页面

  2. 第一步:配置微信(可选)

    • 输入微信开放平台的 AppID 和 AppSecret
    • 或跳过此步骤,直接使用密码登录初始化
    • 注意:微信配置也可以在系统初始化后,通过"系统管理 > 微信设置"菜单进行配置
  3. 第二步:创建管理员

    • 方式一:微信扫码(默认)
      • 扫描二维码完成微信登录
      • 自动创建管理员账号(使用微信昵称)
    • 方式二:密码登录
      • 输入用户名、密码、昵称
      • 创建管理员账号

初始化完成后,系统会生成 JWT Token,自动登录并跳转到工作台。

微信账号绑定(v0.2.0)

已登录用户可以绑定微信账号,绑定后可以使用微信扫码登录:

  1. 绑定微信

    • 点击用户信息菜单中的"绑定微信"
    • 扫描二维码完成绑定
    • 系统会通过WebSocket实时通知绑定状态
  2. 解绑微信

    • 点击用户信息菜单中的"解绑微信"
    • 确认后即可解绑
  3. 使用微信登录

    • 绑定后,在登录页面可以使用微信扫码登录
    • 无需输入用户名和密码

使用说明

附件管理(v0.2.0)

系统支持在需求、Bug、任务等模块中上传和管理附件:

  1. 上传附件

    • 在需求、Bug、任务等详情页面,可以上传相关文档
    • 支持多种文件类型(图片、文档、压缩包等)
    • 文件存储在 backend/uploads/ 目录
  2. 查看和下载附件

    • 在相关实体的详情页面查看附件列表
    • 点击附件名称即可下载
  3. 管理附件

    • 管理员可以在附件管理页面查看所有附件
    • 支持删除不再需要的附件

工作报告(v0.2.0优化)

系统支持日报和周报功能,并已优化用户体验:

  1. 创建日报/周报

    • 进入"工作报告"菜单
    • 选择"日报"或"周报"标签
    • 点击"新增"按钮创建报告
    • 系统会自动汇总工作内容(包含资源分配记录和用户创建的Bug)
  2. 工作内容汇总

    • 创建日报/周报时,系统会自动汇总指定日期范围内的工作
    • 汇总内容包括:需求、任务、Bug的工作记录和工时
    • 汇总格式为Markdown,可以直接编辑
  3. 提交和审批

    • 填写完成后,点击"提交"按钮
    • 系统自动设置状态为"已提交"
    • 审批人可以在"审批"标签页查看待审批的报告
    • 支持审批通过或拒绝,并添加批注
  4. Markdown支持

    • 工作内容支持Markdown格式
    • 列表页自动限制为2行显示,点击可查看完整内容

注意事项

  • 数据库模型已全部定义,所有核心功能模块的API和前端页面已实现
  • 微信登录需要配置真实的AppID和AppSecret(可选,也可以使用密码登录)
  • 微信配置可以在系统初始化时配置,也可以在"系统管理 > 微信设置"菜单中配置
  • 生产环境请修改JWT密钥和数据库配置
  • 后端支持静态文件服务,可以直接部署后端服务,无需单独的 Web 服务器(如 Nginx)
  • 附件文件存储在 backend/uploads/ 目录,请定期备份
  • 数据库备份文件存储在数据库文件所在目录的 backups 文件夹中,自动保留最近7天的备份
  • 建议配置自动备份功能,在系统低峰期执行备份(如凌晨2点)

下一步

按照计划继续实现剩余功能模块,每个模块遵循TDD开发流程:

  1. 编写详细设计文档
  2. 编写单元测试
  3. 实现功能
  4. 确保测试覆盖率100%

About

类似禅道的项目管理软件,支持微信登录

Resources

Stars

Watchers

Forks

Packages

No packages published