Initial commit: Gitea Project Management System

Features:
- Complete project management system with Epic/Story/Task hierarchy
- Vue.js 3 + Element Plus frontend with kanban board
- Go backend with Gin framework and GORM
- OAuth2 integration with Gitea
- Docker containerization with MySQL
- RESTful API for project, task, and user management
- JWT authentication and authorization
- Responsive web interface with dashboard
This commit is contained in:
huxunan
2025-09-22 14:53:53 +08:00
commit 885fad6c64
33 changed files with 4128 additions and 0 deletions

272
README.md Normal file
View File

@@ -0,0 +1,272 @@
# 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 <project-url>
cd giteapm
# 修改配置文件
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 或联系项目维护者。