# 12.5 代码审查清单 :::tip 概述 代码审查(Code Review)是保证代码质量的重要环节。以下清单涵盖后端和前端的审查要点。 ::: ## 后端审查清单 ### Model 层 - [ ] 继承 Eloquent `Model`(业务模型位于 `app/Models/`) - [ ] `protected $table` 显式指定表名(含前缀或与 `DB_PREFIX` 推导一致) - [ ] 引入 `SoftDeletesByFlag`(is_delete 软删除)与 `HasAuditColumns`(审计字段)Trait - [ ] `$fillable` 白名单完整(批量赋值字段) - [ ] 关联关系定义正确(如有) - [ ] 无硬编码的数据库前缀 ### Service 层 - [ ] 继承正确的基类(`BaseService` 或 `BaseTenantService`,树形模块不参与租户隔离) - [ ] `$modelClass` 配置正确 - [ ] Trait 组合按需(`HasCrudOperations` / `HasQueryScopes` / `HasSerializeMaps` / `HasUniqueCheck` / `HasFileProcessing`) - [ ] 查询条件配置合理(`pageLikeFields` / `pageEqFields`) - [ ] 排序配置合理(`pageOrderBy` / `orderFieldAllow` 白名单) - [ ] 唯一性校验配置(`uniqueFields`) - [ ] 枚举映射配置(`serializeMaps`) - [ ] 文件字段配置(`fileFields` / `fileSaveDir`) - [ ] 钩子方法中无 SQL 注入风险(使用查询构造器参数绑定) - [ ] 写操作在事务中执行(`HasCrudOperations` 已用 `DB::transaction` 包裹,自定义逻辑需补充) ### Controller 层 - [ ] 位于 `app/Http/Controllers/Api/`,瘦控制器(参数获取 → 调 Service → 返回 JSON) - [ ] 通过构造函数注入 Service(不手动 new) - [ ] 所有接口标注 `#[Permission]` 注解 - [ ] 所有写操作标注 `#[OperationLog]` 注解 - [ ] 权限码格式正确(`sys:模块名:操作`) - [ ] 返回值类型为 `JsonResponse`,使用基类 `success/fail/paginate/_page` 等方法 - [ ] 参数格式校验由 FormRequest 完成(不在控制器手写校验) ### FormRequest - [ ] 继承 `BaseRequest`(`failedValidation` 统一抛出 `code=1` 响应) - [ ] `rules()` 覆盖全部必填与格式字段 - [ ] 场景区分(add / update) ### 安全 - [ ] 无 SQL 注入风险(使用 ORM / 查询构造器参数绑定) - [ ] 无 XSS 风险(输出转义) - [ ] 敏感数据不暴露(password、salt 不在响应字段中) - [ ] 文件上传有类型和大小限制(`config/file.php` + FormRequest) - [ ] 权限校验覆盖所有接口(`#[Permission]`) ## 前端审查清单 ### API 模块 - [ ] 函数命名规范(`getXxxPage` / `xxxAdd` / `xxxUpdate` / `xxxDelete`) - [ ] HTTP 方法正确(GET/POST/PUT/DELETE) - [ ] 参数传递方式正确(params / data) - [ ] 错误处理完善(响应拦截器统一处理,业务代码不重复 catch) ### 页面组件 - [ ] 使用 `