5feb24e 子仓库提交 git-subtree-dir: crop-x-new git-subtree-split: 5feb24e4e221308e6e146bb0fce87f1fb3e152e8
7.6 KiB
7.6 KiB
贡献指南
感谢您对智慧农业生产管理系统项目的关注!我们欢迎所有形式的贡献,包括但不限于代码贡献、问题反馈、文档改进和功能建议。
📋 目录
🤝 行为准则
我们的承诺
为了营造一个开放和友好的环境,我们作为贡献者和维护者承诺让每个人都能参与我们的项目和社区。
我们的标准
积极行为包括:
- 使用友好和包容的语言
- 尊重不同的观点和经验
- 优雅地接受建设性批评
- 关注对社区最有利的事情
- 对其他社区成员表示同理心
不可接受的行为包括:
- 使用性化的语言或图像
- 人身攻击或政治攻击
- 公开或私下骚扰
- 未经明确许可发布他人的私人信息
- 其他在专业环境中可能被认为不当的行为
🚀 如何贡献
1. 准备工作
# Fork 项目到您的GitHub账户
# 克隆您的fork
git clone https://github.com/your-username/agriculture-management.git
# 添加上游仓库
git remote add upstream https://github.com/original-owner/agriculture-management.git
# 安装依赖
cd agriculture-management
npm install
# 启动开发环境
npm run dev
2. 选择贡献方式
- 🐛 报告Bug: 发现问题并创建详细的问题报告
- 💡 功能建议: 提出新功能或改进建议
- 📝 文档改进: 完善项目文档
- 💻 代码贡献: 修复bug或实现新功能
🔄 开发流程
1. 创建分支
# 确保master分支是最新的
git checkout master
git pull upstream master
# 创建功能分支
git checkout -b feature/your-feature-name
# 或
git checkout -b fix/your-bug-fix
2. 开发过程
# 启用开发工具(可选)
npm run scripts:enable
# 进行开发
# ...
# 运行测试
npm run test
# 代码检查
npm run lint
# 类型检查
npm run type-check
# 格式化代码
npm run format
3. 提交更改
# 添加更改
git add .
# 提交(遵循提交规范)
git commit -m "feat(component): add new machinery status component"
# 推送到您的fork
git push origin feature/your-feature-name
4. 创建Pull Request
- 访问GitHub上的fork页面
- 点击"New Pull Request"
- 选择正确的分支
- 填写PR模板
- 提交Pull Request
📏 代码规范
TypeScript规范
// ✅ 好的示例
interface MachineryData {
id: string
name: string
status: MachineryStatus
lastMaintenance?: Date
}
const getMachineryStatus = async (id: string): Promise<MachineryData> => {
const response = await fetch(`/api/machinery/${id}`)
return response.json()
}
// ❌ 避免的写法
const getData = (id) => {
return fetch('/api/machinery/' + id).then(r => r.json())
}
React组件规范
// ✅ 函数式组件 + TypeScript
interface MachineryCardProps {
machinery: MachineryData
onEdit?: (machinery: MachineryData) => void
className?: string
}
export const MachineryCard: React.FC<MachineryCardProps> = ({
machinery,
onEdit,
className
}) => {
const handleEdit = useCallback(() => {
onEdit?.(machinery)
}, [machinery, onEdit])
return (
<div className={cn('machinery-card', className)}>
{/* 组件内容 */}
</div>
)
}
样式规范
// ✅ 使用Tailwind CSS + cn工具
import { cn } from '@/lib/utils'
const Button = ({ variant = 'primary', className, ...props }) => (
<button
className={cn(
'px-4 py-2 rounded-md font-medium transition-colors',
{
'bg-blue-600 text-white': variant === 'primary',
'bg-gray-200 text-gray-900': variant === 'secondary'
},
className
)}
{...props}
/>
)
📝 提交规范
提交格式
<type>(<scope>): <subject>
<body>
<footer>
提交类型
feat: 新功能fix: Bug修复docs: 文档更新style: 代码格式化(不影响功能)refactor: 代码重构perf: 性能优化test: 添加或修改测试chore: 构建过程或辅助工具的变动
示例
# 新功能
git commit -m "feat(machinery): add real-time monitoring dashboard"
# Bug修复
git commit -m "fix(auth): resolve login validation error for special characters"
# 文档更新
git commit -m "docs(readme): update installation instructions for Windows"
# 性能优化
git commit -m "perf(machinery): optimize data loading with virtual scrolling"
🐛 问题报告
报告Bug
使用以下模板创建Bug报告:
## Bug描述
简洁明了地描述Bug
## 复现步骤
1. 进入 '...'
2. 点击 '....'
3. 滚动到 '....'
4. 看到错误
## 期望行为
描述您期望发生的行为
## 实际行为
描述实际发生的行为
## 截图
如果适用,添加截图来帮助解释问题
## 环境信息
- 操作系统: [例如 iOS]
- 浏览器: [例如 chrome, safari]
- 版本: [例如 22]
## 附加信息
添加任何其他关于问题的信息
安全漏洞
如果您发现安全漏洞,请不要公开报告。请发送邮件至:security@example.com
💡 功能请求
请求新功能
## 功能描述
简洁明了地描述您想要的功能
## 问题背景
描述这个功能要解决的问题
## 解决方案
描述您希望的解决方案
## 替代方案
描述您考虑过的其他解决方案
## 附加信息
添加任何其他关于功能请求的信息
👀 代码审查
审查者指南
当审查代码时,请关注:
- 功能正确性: 代码是否按预期工作
- 代码质量: 是否遵循项目规范
- 性能影响: 是否有性能问题
- 安全性: 是否存在安全隐患
- 测试覆盖: 是否有足够的测试
- 文档: 是否需要更新文档
审查评论规范
# ✅ 好的评论
"建议将这个函数提取为自定义Hook,以提高复用性"
"这个变量名不够清晰,建议改为更具描述性的名称"
"考虑添加错误处理逻辑"
# ❌ 避免的评论
"这段代码不好"(过于模糊)
"重写这个"(没有具体建议)
被审查者指南
- 对建设性反馈持开放态度
- 解释您的技术决策
- 感谢审查者的时间
- 及时响应评论
🏷️ 发布流程
版本号规范
遵循 语义化版本:
MAJOR.MINOR.PATCHMAJOR: 不兼容的API修改MINOR: 向下兼容的功能性新增PATCH: 向下兼容的问题修正
发布检查清单
发布前确认:
- 所有测试通过
- 代码审查完成
- 文档已更新
- CHANGELOG已更新
- 版本号已更新
- 性能测试通过
🏆 贡献者认可
贡献者类型
- 💻 代码贡献: 提交代码
- 🐛 Bug报告: 发现并报告问题
- 💡 功能建议: 提出新功能想法
- 📝 文档改进: 完善项目文档
- 🎨 设计贡献: UI/UX设计改进
- 🌐 翻译贡献: 多语言支持
认可方式
- 在README中添加贡献者列表
- 在发布说明中感谢贡献者
- 颁发贡献者徽章
- 邀请加入核心团队
📞 联系方式
- 项目维护者: maintainer@example.com
- 技术讨论: GitHub Discussions
- Bug报告: GitHub Issues
- 安全问题: security@example.com
📄 许可证
通过贡献代码,您同意您的贡献将在与项目相同的 MIT License 下获得许可。
感谢您的贡献!🎉