# prjflow **Repository Path**: mindsynt/prjflow ## Basic Information - **Project Name**: prjflow - **Description**: 项目流(prjflow)是基于Go+Vue3的现代化开源项目管理软件,支持微信扫码登录和禅道数据迁移。专为中小团队设计,提供项目管理、需求跟踪、任务看板、Bug管理、测试用例、版本控制等全流程功能。支持Docker一键部署,界面简洁易用,数据安全可控。类似禅道但更轻量现代,是团队协作的理想选择。 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-12-29 - **Last Updated**: 2025-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目流 #### 官网 [https://prjflow.com](https://prjflow.com) 即将上线 ### 项目管理系统 基于Go + Gin + GORM和Vue3 + TypeScript + Ant Design Vue的全栈项目管理软件。 **当前版本**: v0.5.6\ **最后更新**: 2025年12月20日 > 📦 [v0.5.6 发布说明](./docs/v0.5.6发布说明.md) | [开发计划](./docs/开发计划.md) | [API文档](./docs/API设计文档.md) ### ## 技术栈 * **后端**: 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 确保数据一致性 16. ✅ **项目品牌化** - 项目重命名和Logo集成(v0.5.6) * ✅ 项目名从 goproject 改为 prjflow * ✅ 添加 prjflow logo 到所有页面 * ✅ 根据Logo配色优化界面背景 * ✅ 更新所有构建脚本和文档 ### 进行中 ⏳ * 单元测试补充(各模块测试覆盖率提升至100%) * 禅道数据迁移工具完善(支持更多数据类型的迁移) ### v0.5.6 更新内容(2025年12月20日) * ✅ Bug管理功能优化:添加Bug编号列、优化查询功能、修复统计问题 * ✅ 界面层级问题修复:修复弹窗层级问题,确保预览窗口和模态框正确显示 * ✅ 工作报告功能增强:添加解决的Bug统计、优化统计显示 * ✅ 日志导出功能改进:优化日志导出格式和性能 * ✅ 项目重命名:项目名从 goproject 改为 prjflow * ✅ Logo集成:添加 prjflow logo,更新所有页面的品牌标识 * ✅ 界面配色优化:根据Logo配色更新初始化界面和登录页面背景 ### v0.5.5 更新内容(2025年12月) * ✅ 任务管理功能增强:优化任务查询和统计功能 * ✅ 界面优化:改进用户体验和交互设计 ### v0.4.12 更新内容(2025年12月02日) * ✅ 数据库自动备份功能:支持定时备份和手动备份,确保数据安全 * ✅ 备份文件验证:自动验证备份文件完整性和有效性 * ✅ 用户体验优化:统一弹窗详情和非弹窗详情内容 * ✅ 安全修复:修复登录密码修改检测绕过漏洞 * ✅ 前端构建优化:优化代码分割策略,提升加载性能 ### v0.4.0 更新内容(2025年11月27日) * ✅ 历史记录功能:为项目、需求、任务、Bug、版本详情页面添加完整的操作历史记录 * ✅ 编辑模态框:详情页面支持直接弹出编辑模态框,无需跳转 * ✅ 滚动修复:修复所有详情页面的滚动问题,统一用户体验 * ✅ 备注功能:支持在历史记录中添加备注 * ✅ 字段变更追踪:详细记录和显示字段变更历史 ### 待开发功能 📋 1. **插件管理系统** - 插件安装、配置、前端界面支持、插件市场 2. **关系图生成** - 数据库ER图、业务关系图 ## 开发指南 ### 后端开发 1. 启动开发服务器: ```bash cd backend go run cmd/server/main.go ``` 服务器启动后会自动: * 初始化数据库连接 * 执行数据库迁移 * 启动 API 服务(默认端口:8080) * 提供静态文件服务(如果 frontend/dist 目录存在) 1. 运行测试: ```bash go test ./... ``` 1. 数据库迁移: 数据库会在启动时自动迁移(通过GORM AutoMigrate) 2. 静态文件服务: 后端会自动查找并服务前端构建后的静态文件(`frontend/dist`),支持 SPA 路由。 ### 前端开发 1. 安装依赖: ```bash cd frontend npm install ``` 1. 启动开发服务器: ```bash npm run dev ``` 1. 构建生产版本: ```bash 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) ### 使用方法 详细使用说明请参考 [数据迁移工具文档](./backend/cmd/migrate/README.md) 详细 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.example` 为 `migrate-config.yaml`,并修改数据库连接信息 2. **运行迁移**: ```bash cd backend go run cmd/migrate/main.go -config cmd/migrate/migrate-config.yaml ``` 详细使用说明请参考 [数据迁移工具文档](./backend/cmd/migrate/README.md) ## 开发规范 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%