# 贡献指南

感谢您对结伴客项目的关注！我们欢迎所有形式的贡献，包括但不限于代码、文档、测试、反馈和建议。

## 🤝 如何贡献

### 报告问题
如果您发现了bug或有功能建议，请：

1. 检查 [Issues](https://github.com/jiebanke/jiebanke/issues) 确认问题未被报告
2. 创建新的 Issue，详细描述问题或建议
3. 使用合适的标签标记 Issue

### 提交代码
我们使用 Git Flow 工作流程：

1. **Fork 项目**
   ```bash
   git clone https://github.com/your-username/jiebanke.git
   cd jiebanke
   ```

2. **创建功能分支**
   ```bash
   git checkout -b feature/your-feature-name
   ```

3. **开发和测试**
   - 遵循项目代码规范
   - 编写必要的测试
   - 确保所有测试通过

4. **提交代码**
   ```bash
   git add .
   git commit -m "feat: 添加新功能描述"
   git push origin feature/your-feature-name
   ```

5. **创建 Pull Request**
   - 详细描述变更内容
   - 关联相关的 Issue
   - 等待代码审查

## 📝 开发规范

### 代码风格
- **JavaScript/TypeScript**: 使用 ESLint + Prettier
- **Vue**: 遵循 Vue 3 官方风格指南
- **CSS**: 使用 BEM 命名规范
- **文件命名**: 使用 kebab-case

### 提交消息规范
使用 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/v1.0.0/) 规范：

```
<类型>[可选的作用域]: <描述>

[可选的正文]

[可选的脚注]
```

**类型说明：**
- `feat`: 新功能
- `fix`: 修复bug
- `docs`: 文档更新
- `style`: 代码格式调整
- `refactor`: 代码重构
- `test`: 测试相关
- `chore`: 构建过程或辅助工具的变动

**示例：**
```
feat(user): 添加用户头像上传功能

- 支持jpg、png格式
- 自动压缩和裁剪
- 添加上传进度显示

Closes #123
```

### 分支命名规范
- `feature/功能名称`: 新功能开发
- `bugfix/问题描述`: bug修复
- `hotfix/紧急修复`: 紧急修复
- `docs/文档更新`: 文档更新

## 🧪 测试规范

### 单元测试
- 使用 Jest 进行单元测试
- 测试覆盖率应达到 80% 以上
- 为核心业务逻辑编写测试

### 集成测试
- 使用 Cypress 进行端到端测试
- 覆盖主要用户流程
- 确保跨浏览器兼容性

### 测试命令
```bash
# 运行所有测试
npm test

# 运行单元测试
npm run test:unit

# 运行集成测试
npm run test:e2e

# 生成测试覆盖率报告
npm run test:coverage
```

## 🏗️ 项目结构

### 后端 (backend/)
```
backend/
├── src/
│   ├── controllers/    # 控制器
│   ├── models/        # 数据模型
│   ├── routes/        # 路由定义
│   ├── services/      # 业务逻辑
│   ├── middleware/    # 中间件
│   └── utils/         # 工具函数
├── tests/             # 测试文件
└── docs/              # API文档
```

### 前端 (admin-system/)
```
admin-system/
├── src/
│   ├── components/    # 公共组件
│   ├── pages/         # 页面组件
│   ├── stores/        # 状态管理
│   ├── api/           # API接口
│   ├── utils/         # 工具函数
│   └── styles/        # 样式文件
├── tests/             # 测试文件
└── public/            # 静态资源
```

## 🔧 开发环境搭建

### 环境要求
- Node.js 16.x+
- MySQL 8.0+
- Redis 6.x+
- Git 2.x+

### 快速开始
1. **克隆项目**
   ```bash
   git clone https://github.com/jiebanke/jiebanke.git
   cd jiebanke
   ```

2. **安装依赖**
   ```bash
   # 安装后端依赖
   cd backend && npm install
   
   # 安装前端依赖
   cd ../admin-system && npm install
   ```

3. **配置环境变量**
   ```bash
   # 复制环境变量模板
   cp backend/.env.example backend/.env
   cp admin-system/.env.example admin-system/.env
   ```

4. **启动开发服务**
   ```bash
   # 启动后端服务
   cd backend && npm run dev
   
   # 启动前端服务 (新终端)
   cd admin-system && npm run dev
   ```

## 📋 代码审查清单

提交 Pull Request 前，请确认：

### 功能性
- [ ] 功能按预期工作
- [ ] 处理了边界情况
- [ ] 错误处理完善
- [ ] 性能表现良好

### 代码质量
- [ ] 代码风格符合规范
- [ ] 变量和函数命名清晰
- [ ] 代码结构合理
- [ ] 避免重复代码

### 测试
- [ ] 编写了必要的测试
- [ ] 所有测试通过
- [ ] 测试覆盖率达标
- [ ] 手动测试通过

### 文档
- [ ] 更新了相关文档
- [ ] API文档保持同步
- [ ] 注释清晰准确
- [ ] README更新（如需要）

## 🎯 贡献领域

我们特别欢迎以下方面的贡献：

### 代码贡献
- 新功能开发
- Bug修复
- 性能优化
- 代码重构

### 文档贡献
- API文档完善
- 使用指南编写
- 最佳实践分享
- 多语言翻译

### 测试贡献
- 单元测试编写
- 集成测试完善
- 性能测试
- 安全测试

### 设计贡献
- UI/UX设计优化
- 交互体验改进
- 视觉设计规范
- 无障碍访问支持

## 🏆 贡献者认可

我们重视每一位贡献者的付出：

- 贡献者将在项目README中被列出
- 重要贡献者将获得项目维护者权限
- 优秀贡献将在项目博客中专门介绍
- 定期举办贡献者聚会和技术分享

## 📞 联系我们

如有任何问题，欢迎通过以下方式联系：

- **GitHub Issues**: [项目Issues页面](https://github.com/jiebanke/jiebanke/issues)
- **邮箱**: dev@jiebanke.com
- **微信群**: 扫描README中的二维码加入
- **技术论坛**: [结伴客开发者社区](https://dev.jiebanke.com)

## 📜 行为准则

参与项目时，请遵守我们的[行为准则](CODE_OF_CONDUCT.md)：

- 尊重所有参与者
- 保持友好和专业
- 接受建设性批评
- 关注项目整体利益
- 遵守开源协议

---

再次感谢您的贡献！让我们一起打造更好的结伴客项目！ 🚀

*最后更新：2024年1月*