# 🤝 贡献指南

感谢您对 L9Pan 项目的关注！我们欢迎所有形式的贡献。

## 📋 贡献类型

- 🐛 Bug 修复
- ✨ 新功能开发
- 📚 文档改进
- 🎨 UI/UX 优化
- ⚡ 性能优化
- 🧪 测试用例
- 🔧 工具改进

## 🚀 开始贡献

### 1. Fork 项目

1. 访问 [GitHub 仓库](https://github.com/ctwj/urldb)
2. 点击右上角的 Fork 按钮
3. 选择您的 GitHub 账户

### 2. 克隆您的 Fork

```bash
git clone https://github.com/YOUR_USERNAME/resManage.git
cd resManage
```

### 3. 添加上游仓库

```bash
git remote add upstream https://github.com/ctwj/urldb.git
```

### 4. 创建功能分支

```bash
git checkout -b feature/your-feature-name
# 或者
git checkout -b fix/your-bug-fix
```

## 💻 开发环境设置

### 后端开发

```bash
# 安装 Go 依赖
go mod tidy

# 复制环境变量文件
cp env.example .env

# 编辑环境变量
vim .env

# 启动开发服务器
go run main.go
```

### 前端开发

```bash
# 进入前端目录
cd web

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev
```

### 数据库设置

```sql
CREATE DATABASE url_db;
```

## 📝 开发规范

### 代码风格

#### Go 代码规范
- 遵循 [Go 官方代码规范](https://golang.org/doc/effective_go.html)
- 使用 `gofmt` 格式化代码
- 函数名使用驼峰命名法
- 包名使用小写字母
- 错误处理要明确

#### TypeScript/JavaScript 规范
- 使用 TypeScript 编写代码
- 遵循 ESLint 规则
- 使用 Prettier 格式化代码
- 组件名使用 PascalCase
- 变量名使用 camelCase

### 提交信息规范

使用中文描述提交信息，格式如下：

```
类型(范围): 简短描述

详细描述（可选）

相关Issue: #123```

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

示例：
```
feat(资源管理): 添加批量导入功能

- 支持Excel文件导入
- 添加导入进度显示
- 优化错误处理

相关Issue: #45
```

### 分支命名规范

- `feature/功能名称` - 新功能开发
- `fix/问题描述` - Bug修复
- `docs/文档类型` - 文档更新
- `refactor/重构内容` - 代码重构
- `test/测试内容` - 测试相关

## 🧪 测试

### 后端测试

```bash
# 运行所有测试
go test ./...

# 运行特定包的测试
go test ./handlers

# 运行测试并显示覆盖率
go test -cover ./...
```

### 前端测试

```bash
cd web

# 运行单元测试
pnpm test

# 运行E2E测试
pnpm test:e2## 📋 Pull Request 流程

###1. 确保代码质量

-  ] 代码通过所有测试
-  ] 代码符合项目规范
-  ] 添加了必要的文档
-  ] 更新了相关文档

### 2 提交 Pull Request

1推送您的分支到您的 Fork
```bash
git push origin feature/your-feature-name
```

2. 在 GitHub 上创建 Pull Request3. 填写 PR 模板4 等待代码审查

###3PR 模板

```markdown
## 📝 描述

简要描述您的更改

## 🎯 类型

- ] Bug 修复
-  ] 新功能
- ] 文档更新
- ] 代码重构
- ] 性能优化
- 相关

## 🔗 相关 Issue

关闭 #123

## ✅ 检查清单

-  ] 我的代码遵循项目的代码规范
- ] 我已经自测了我的更改
- ] 我已经添加了必要的测试
- ] 我已经更新了相关文档
- ] 我的更改不会产生新的警告
-  我添加了示例来证明我的更改是有效的

## 📸 截图（如果适用）

## 🔧 测试

请描述您如何测试您的更改

## 📋 其他信息

任何其他信息或上下文
```

## 🐛 报告 Bug

### Bug 报告模板

```markdown
## 🐛 Bug 描述

清晰简洁地描述 bug

## 🔄 重现步骤
1. 进入...2. 点击 '....3. 滚动到 ....4 看到错误

## ✅ 预期行为

清晰简洁地描述您期望发生的事情

## 📸 截图

如果适用，添加截图以帮助解释您的问题

## 💻 环境信息

- 操作系统: [例如 Windows 10]
- 浏览器: [例如 Chrome, Safari]
- 版本:例如 22]

## 📱 移动设备（如果适用）

- 设备: [例如 iPhone 6]
- 操作系统: 例如 iOS 8.1]
- 浏览器:例如 Safari]
- 版本: [例如 22]

## 🔧 其他上下文

在此处添加有关问题的任何其他上下文
```

## 💡 功能请求

### 功能请求模板

```markdown
## 💡 功能描述

清晰简洁地描述您想要的功能

## 🎯 问题描述

清晰简洁地描述这个功能要解决的问题

## 💭 建议的解决方案

清晰简洁地描述您希望发生的事情

## 🔄 替代方案

清晰简洁地描述您考虑过的任何替代解决方案或功能

## 📋 其他上下文

在此处添加有关功能请求的任何其他上下文或截图
```

## 📞 联系我们

如果您有任何问题或需要帮助，请通过以下方式联系我们：

- 📧 邮箱: 510199617@qq.com
- 💬 讨论区: [GitHub Discussions](https://github.com/your-username/l9pan/discussions)
- 🐛 问题反馈: [GitHub Issues](https://github.com/your-username/l9pan/issues)

## 🙏 致谢

感谢所有为 L9项目做出贡献的开发者！

---

**记住：每一个贡献，无论大小，都是宝贵的！** 🎉 