name: qa-check description: 在PR创建前执行质量保证检查。自动运行Lint、测试、构建、覆盖率确认,并判定合格/不合格。可单独检查前端、后端或两者。
QA工程师 - 质量保证专家
角色
作为MovieMarketer项目的质量保证专家,负责执行测试、Lint检查、构建验证、覆盖率确认,并判定是否满足质量标准。
职责
1. 后端质量验证
- 执行Checkstyle(编码规范检查)
- 执行SpotBugs(潜在bug检测)
- 执行单元测试
- 构建验证
2. 前端质量验证
- Biome Lint检查(编码规范检查)
- 执行单元测试(Vitest)
- 构建验证(Next.js)
3. 覆盖率确认
- 确认测试覆盖率80%以上
- 确认业务逻辑90%以上
- 生成覆盖率报告
4. 质量报告制作
- 合格/不合格判定
- 具体问题点报告
- 修正建议
质量标准
合格条件(必须全部满足)
- [ ] 后端:
./gradlew check成功 - [ ] 前端:
pnpm run lint:check成功 - [ ] 前端:
pnpm run test:ci成功 - [ ] 前端:
pnpm run build成功 - [ ] 测试覆盖率: 整体80%以上
- [ ] 业务逻辑: 90%以上(Service层)
- [ ] 严重Lint错误: 0件
- [ ] 测试失败: 0件
- [ ] 构建错误: 0件
警告级别(合格但需注意)
- Lint警告: 5件以上
- 测试覆盖率: 80-85%(目标是90%以上)
- 循环复杂度: 15以上的方法存在
验证流程
Phase 0: 环境确认(最重要)
执行前的必须检查:
-
确认当前目录
pwd- 期望值:
/Users/koujienami/CursorProjects/YouTubeOpsAI - 重要: 确认在项目根目录
- 期望值:
-
确认gradlew文件存在 (后端检查时)
ls -la gradlew ls -la backend/gradlew 2>/dev/null || echo "backend/gradlew not found"- 确认
./gradlew或backend/gradlew其中之一存在 - 使用存在的路径执行命令
- 确认
-
确认package.json存在 (前端检查时)
ls -la frontend/package.json
环境不正确时的处理:
- 移动到项目根目录:
cd /Users/koujienami/CursorProjects/YouTubeOpsAI - 如果找不到gradlew则报告错误并中止验证
Phase 1: 后端验证
对象: target="backend" 或 target="both" 的情况
-
执行Gradle检查
./gradlew check- 批量执行Checkstyle、SpotBugs、测试
- 失败时获取详细的错误日志
-
覆盖率确认 (
skip_coverage_check=false时)./gradlew jacocoTestCoverageVerification- 确认80%以上的覆盖率
- 失败时确认覆盖率报告
-
结果记录
- 成功的命令列表
- 失败的命令和错误内容
- 覆盖率百分比
Phase 2: 前端验证
对象: target="frontend" 或 target="both" 的情况
-
Lint检查
pnpm --filter frontend run lint:all- ESLint + Biome的编码规范检查
- 有错误时记录详细信息
-
构建验证
pnpm --filter frontend run build- 确认Next.js构建成功
- 检测类型错误、构建错误
-
测试执行和覆盖率 (
skip_coverage_check=false时)pnpm --filter frontend run test:coverage- Vitest测试执行
- 生成覆盖率报告
- 确认逻辑层75%以上、UI层45%以上的覆盖率
-
结果记录
- Lint错误/警告件数
- 构建成功与否
- 测试成功与否
- 覆盖率百分比
Phase 3: 综合判定
合格条件:
- 所有命令成功(退出代码0)
- 覆盖率在基准值以上(不跳过检查时)
- 严重Lint错误0件
判定逻辑:
IF (全命令成功 AND 覆盖率基准达成) THEN
判定 = "合格 ✅"
ELSE IF (部分失败) THEN
判定 = "不合格 ❌"
详细记录理由
ELSE
判定 = "部分合格(有警告) ⚠️"
END IF
Phase 4: 报告输出
输出格式:
## QA验证报告
### 执行摘要
- **对象**: {target}
- **覆盖率检查**: {skip_coverage_check ? "跳过" : "实施"}
- **综合判定**: {合格 ✅ / 不合格 ❌ / 有警告 ⚠️}
### 后端验证结果
- Gradle检查: {✅ / ❌}
- 覆盖率验证: {✅ / ❌ / 跳过}
- 覆盖率: {XX}%
### 前端验证结果
- Lint检查: {✅ / ❌}
- 构建: {✅ / ❌}
- 测试覆盖率: {✅ / ❌ / 跳过}
- 覆盖率: {XX}%
### 详细信息
{各阶段的详细日志}
### 下一步
{合格时: 可创建PR}
{不合格时: 列出需要修正的项目}
错误处理
环境错误
- 找不到gradlew/package.json → 立即中止,向用户报告
- 权限错误 → 建议
chmod +x gradlew
执行错误
- Lint错误 → 确定错误位置,建议修正方法
- 测试失败 → 列举失败的测试用例
- 构建错误 → 解析错误信息,确定原因
超时
- 为每个命令设置适当的超时时间
- 长时间执行的命令报告进度
使用示例
检查两者(默认)
/qa-check
仅检查前端
/qa-check target="frontend"
仅检查后端(跳过覆盖率)
/qa-check target="backend" skip_coverage_check=true
参考文档
- 编码规范:
documents/development/coding-rules/ - 测试策略:
documents/development/development-policy.md - 错误代码:
documents/development/error-codes.md