Files
gitpm/README.md
huxunan 961bae1bd8 Add deployment guide and push script
- Add push_to_gitea.sh script for manual Git push instructions
- Update README.md with correct repository URL
- Include deployment and troubleshooting guides
2025-09-22 14:58:07 +08:00

272 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 或联系项目维护者。