# 贡献指南 感谢你考虑为知识库系统做出贡献! ## 行为准则 本项目遵循贡献者公约行为准则。参与本项目即表示你同意遵守其条款。 ## 如何贡献 ### 报告 Bug 如果你发现了 bug,请创建一个 issue 并包含以下信息: - **清晰的标题和描述** - **重现步骤** - **预期行为** - **实际行为** - **环境信息**(PHP 版本、Laravel 版本、操作系统等) - **相关日志或截图** ### 提出新功能 如果你有新功能的想法: 1. 先在 Discussions 中讨论 2. 确保功能符合项目目标 3. 创建详细的功能请求 issue ### 提交代码 #### 开发流程 1. **Fork 项目** ```bash # 在 GitHub 上 fork 项目 git clone https://github.com/your-username/knowledge-base-system.git cd knowledge-base-system ``` 2. **创建分支** ```bash git checkout -b feature/your-feature-name # 或 git checkout -b fix/your-bug-fix ``` 3. **安装依赖** ```bash composer install npm install cp .env.example .env php artisan key:generate ``` 4. **进行更改** - 编写代码 - 添加测试 - 更新文档 5. **运行测试** ```bash php artisan test ``` 6. **提交更改** ```bash git add . git commit -m "feat: 添加新功能描述" ``` 7. **推送到 GitHub** ```bash git push origin feature/your-feature-name ``` 8. **创建 Pull Request** - 在 GitHub 上创建 PR - 填写 PR 模板 - 等待代码审查 #### 提交信息规范 使用语义化提交信息: - `feat:` 新功能 - `fix:` Bug 修复 - `docs:` 文档更新 - `style:` 代码格式(不影响代码运行) - `refactor:` 重构 - `test:` 测试相关 - `chore:` 构建过程或辅助工具的变动 示例: ``` feat: 添加文档批量上传功能 - 支持同时上传多个文档 - 添加进度条显示 - 更新相关文档 Closes #123 ``` #### 代码规范 1. **PHP 代码** - 遵循 PSR-12 编码标准 - 使用 Laravel Pint 格式化代码 ```bash ./vendor/bin/pint ``` 2. **JavaScript 代码** - 使用 2 空格缩进 - 使用单引号 - 添加适当的注释 3. **命名规范** - 类名:PascalCase - 方法名:camelCase - 变量名:camelCase - 常量:UPPER_SNAKE_CASE 4. **注释** - 为复杂逻辑添加注释 - 使用 PHPDoc 注释公共方法 - 注释使用中文 #### 测试要求 - 所有新功能必须包含测试 - Bug 修复应包含回归测试 - 确保所有测试通过 - 保持测试覆盖率 ≥ 80% 测试类型: - **单元测试**:测试独立的类和方法 - **功能测试**:测试完整的用户流程 - **属性测试**:使用 Property-Based Testing #### 文档要求 如果你的更改影响到: - **API**:更新 `docs/API_REFERENCE.md` - **配置**:更新 `docs/DEPLOYMENT.md` - **功能**:更新 `README.md` 和 `docs/PROJECT_OVERVIEW.md` - **使用方法**:添加或更新相关指南 ### Pull Request 检查清单 在提交 PR 之前,请确保: - [ ] 代码遵循项目的编码规范 - [ ] 所有测试通过 - [ ] 添加了必要的测试 - [ ] 更新了相关文档 - [ ] 提交信息清晰且符合规范 - [ ] PR 描述清楚说明了更改内容 - [ ] 没有合并冲突 ### 代码审查 所有提交都需要经过代码审查: - 至少一位维护者批准 - 所有讨论都已解决 - CI 检查通过 审查者会关注: - 代码质量 - 测试覆盖率 - 文档完整性 - 性能影响 - 安全问题 ## 开发环境设置 ### 必需软件 - PHP 8.1+ - Composer 2.x - Node.js 18+ - MySQL 8.0+ 或 PostgreSQL 13+ - Redis 6.0+ - Meilisearch 1.5+ ### 本地开发 1. **配置数据库** ```env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=knowledge_base_dev DB_USERNAME=root DB_PASSWORD= ``` 2. **运行迁移** ```bash php artisan migrate php artisan db:seed ``` 3. **启动服务** ```bash # 终端 1:Laravel 服务器 php artisan serve # 终端 2:队列工作进程 php artisan queue:work # 终端 3:Meilisearch meilisearch --master-key="dev-key" # 终端 4:前端构建(开发模式) npm run dev ``` 4. **创建测试用户** ```bash php artisan make:filament-user ``` ### 调试技巧 1. **使用 Laravel Telescope**(如果安装) ```bash composer require laravel/telescope --dev php artisan telescope:install php artisan migrate ``` 2. **查看日志** ```bash tail -f storage/logs/laravel.log ``` 3. **使用 Tinker** ```bash php artisan tinker ``` 4. **调试队列任务** ```bash php artisan queue:work --verbose ``` ## 项目结构 ``` knowledge-base-system/ ├── app/ │ ├── Filament/ # Filament 资源和页面 │ ├── Http/ # 控制器 │ ├── Jobs/ # 队列任务 │ ├── Models/ # Eloquent 模型 │ ├── Observers/ # 模型观察者 │ ├── Policies/ # 授权策略 │ └── Services/ # 业务逻辑服务 ├── config/ # 配置文件 ├── database/ # 迁移和种子 ├── docs/ # 项目文档 ├── resources/ # 视图和前端资源 ├── tests/ # 测试文件 └── .kiro/specs/ # 功能规格文档 ``` ## 常见问题 ### 如何添加新的服务类? 1. 在 `app/Services/` 创建服务类 2. 添加必要的方法和注释 3. 在 `docs/API_REFERENCE.md` 中添加文档 4. 编写单元测试 ### 如何添加新的 Filament 资源? 1. 使用 Artisan 命令生成资源 ```bash php artisan make:filament-resource ModelName ``` 2. 配置表单和表格 3. 添加必要的策略 4. 更新中文翻译 ### 如何添加新的队列任务? 1. 创建 Job 类 ```bash php artisan make:job JobName ``` 2. 实现 `handle()` 方法 3. 添加错误处理 4. 编写测试 ## 获取帮助 如果你需要帮助: - 查看 [文档](docs/) - 在 [Discussions](https://github.com/your-repo/discussions) 中提问 - 加入我们的社区频道 ## 许可证 通过贡献代码,你同意你的贡献将在 MIT 许可证下发布。 --- 再次感谢你的贡献!🎉