# Gitea Project Management 一个与 Gitea 深度集成的项目管理系统,支持需求管理、任务追踪、迭代规划和研发协作。 ## 功能特性 ### 核心功能 - **需求管理**: 支持 Epic/Story/Task 三级需求分解 - **项目管理**: 项目创建、成员管理、权限控制 - **任务看板**: 可视化任务状态管理,支持拖拽操作 - **迭代规划**: Sprint 管理、燃尽图、速度跟踪 - **时间跟踪**: 工时记录和统计分析 ### Gitea 集成 - **OAuth 登录**: 使用 Gitea 账号直接登录 - **仓库关联**: 任务与 Git 分支、提交、PR 自动关联 - **Webhook 支持**: 监听 Gitea 事件自动更新任务状态 - **权限同步**: 复用 Gitea 的用户和组织权限体系 ### 协作功能 - **评论系统**: 任务讨论和进度更新 - **标签管理**: 自定义标签分类管理 - **通知提醒**: 任务状态变更通知 - **权限控制**: 细粒度的项目和功能权限 ## 技术架构 ### 后端技术栈 - **Go 1.21+**: 主要开发语言 - **Gin**: Web 框架 - **GORM**: ORM 数据库操作 - **MySQL**: 主数据库 - **JWT**: 身份认证 - **OAuth2**: Gitea 集成认证 ### 前端技术栈 - **Vue 3**: 前端框架 - **Element Plus**: UI 组件库 - **Axios**: HTTP 客户端 ### 部署架构 - **Docker**: 容器化部署 - **Docker Compose**: 本地开发环境 - **MySQL**: 数据持久化 ## 快速开始 ### 环境要求 - Go 1.21+ - MySQL 5.7+ - Node.js 16+ (如需修改前端) - Docker & Docker Compose (可选) ### 配置 Gitea OAuth 1. 在 Gitea 中创建 OAuth 应用: - 进入 Gitea 管理后台 → 应用 → OAuth2 应用 - 创建新应用,设置回调 URL: `http://localhost:8080/api/v1/auth/callback` - 记录 Client ID 和 Client Secret 2. 修改配置文件 `config/config.yaml`: ```yaml gitea: base_url: "http://your-gitea-url" client_id: "your-client-id" client_secret: "your-client-secret" redirect_url: "http://localhost:8080/api/v1/auth/callback" ``` ### 使用 Docker Compose 部署 ```bash # 克隆项目 git clone http://218.84.152.14:65001/huxunan/gitpm.git cd gitpm # 修改配置文件 cp config/config.yaml.example config/config.yaml # 编辑 config/config.yaml 设置 Gitea 连接信息 # 启动服务 docker-compose up -d # 查看日志 docker-compose logs -f giteapm ``` ### 手动部署 ```bash # 1. 安装依赖 make install # 2. 创建数据库 mysql -u root -p -e "CREATE DATABASE giteapm CHARACTER SET utf8mb4;" # 3. 导入数据库结构 mysql -u root -p giteapm < schema.sql # 4. 修改配置文件 cp config/config.yaml.example config/config.yaml # 编辑数据库连接和 Gitea 配置 # 5. 构建并运行 make build make run # 或者直接运行开发模式 make dev ``` ### 访问应用 打开浏览器访问: http://localhost:8080 点击"使用 Gitea 登录"按钮,会跳转到 Gitea 进行 OAuth 认证。 ## 数据库设计 ### 核心实体关系 ``` projects (项目) ├── epics (史诗需求) │ └── stories (用户故事) │ └── tasks (任务) ├── sprints (迭代) ├── project_members (项目成员) └── webhook_configs (Webhook配置) tasks (任务) ├── gitea_relations (Git关联) ├── time_logs (工时记录) ├── comments (评论) └── entity_tags (标签) ``` ### 主要数据表 - `users`: 用户信息(与 Gitea 用户同步) - `projects`: 项目信息 - `epics`: 大需求/史诗 - `stories`: 用户故事 - `tasks`: 具体任务 - `gitea_relations`: 任务与 Git 对象的关联关系 - `sprints`: 迭代/冲刺 - `time_logs`: 工时记录 - `comments`: 评论系统 - `tags` & `entity_tags`: 标签系统 ## API 文档 ### 认证接口 - `GET /api/v1/auth/login` - 获取 Gitea OAuth 登录链接 - `GET /api/v1/auth/callback` - OAuth 回调处理 - `POST /api/v1/auth/logout` - 退出登录 ### 项目管理 - `GET /api/v1/projects` - 获取项目列表 - `POST /api/v1/projects` - 创建项目 - `GET /api/v1/projects/:id` - 获取项目详情 - `PUT /api/v1/projects/:id` - 更新项目 - `DELETE /api/v1/projects/:id` - 删除项目 ### 任务管理 - `GET /api/v1/tasks` - 获取任务列表 - `POST /api/v1/tasks` - 创建任务 - `GET /api/v1/tasks/:id` - 获取任务详情 - `PUT /api/v1/tasks/:id` - 更新任务 - `POST /api/v1/tasks/:id/time-logs` - 记录工时 - `POST /api/v1/tasks/:id/gitea-relations` - 关联 Git 对象 详细 API 文档请参考: [API.md](docs/API.md) ## 开发指南 ### 项目结构 ``` giteapm/ ├── cmd/ # 应用入口 ├── config/ # 配置文件 ├── internal/ # 内部代码 │ ├── api/ # API 路由和处理器 │ ├── models/ # 数据模型 │ ├── services/ # 业务逻辑 │ └── middleware/ # 中间件 ├── web/ # 前端资源 │ ├── static/ # 静态文件 │ └── templates/ # 模板文件 ├── docs/ # 文档 ├── schema.sql # 数据库结构 ├── docker-compose.yml # Docker 配置 └── Makefile # 构建脚本 ``` ### 添加新功能 1. **添加数据模型**: 在 `internal/models/` 中定义数据结构 2. **实现业务逻辑**: 在 `internal/services/` 中实现业务逻辑 3. **添加 API 接口**: 在 `internal/api/handlers/` 中添加 HTTP 处理器 4. **更新路由**: 在 `internal/api/router.go` 中注册路由 5. **更新前端**: 修改 `web/templates/index.html` 添加 UI 功能 ### 代码规范 - 使用 `gofmt` 格式化代码 - 遵循 Go 官方代码规范 - API 返回统一的 JSON 格式 - 数据库操作使用事务确保一致性 - 添加适当的日志记录 ## 部署建议 ### 生产环境部署 1. **数据库优化**: - 使用独立的 MySQL 服务器 - 配置数据库连接池 - 定期备份数据 2. **安全配置**: - 使用 HTTPS - 配置防火墙规则 - 定期更新依赖版本 3. **性能优化**: - 启用 Redis 缓存 - 配置 CDN 加速静态资源 - 使用负载均衡 4. **监控告警**: - 配置日志收集 - 设置应用监控 - 配置告警通知 ## 故障排除 ### 常见问题 1. **OAuth 认证失败**: - 检查 Gitea OAuth 应用配置 - 确认回调 URL 正确 - 检查网络连通性 2. **数据库连接失败**: - 检查数据库服务状态 - 验证连接配置 - 确认数据库权限 3. **Webhook 不工作**: - 检查 Gitea Webhook 配置 - 验证网络可达性 - 查看应用日志 ## 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交代码更改 4. 创建 Pull Request ## 许可证 MIT License ## 联系我们 如有问题或建议,请提交 Issue 或联系项目维护者。