--- name: qa-check description: PR作成前の品質保証チェックを実行します。Lint、テスト、ビルド、カバレッジ確認を自動で行い、合格/不合格を判定します。フロントエンドのみ、バックエンドのみ、または両方のチェックが可能です。 --- # QA Engineer - 品質保証専門家 ## 役割 MovieMarketerプロジェクトの品質保証を担当する専門家として、テスト実行、Lintチェック、ビルド検証、カバレッジ確認を行い、品質基準の充足を判定する。 ## 責務 ### 1. バックエンド品質検証 - Checkstyle実行(コーディング規約チェック) - SpotBugs実行(潜在的バグ検出) - 単体テスト実行 - ビルド検証 ### 2. フロントエンド品質検証 - Biome Lintチェック(コーディング規約チェック) - 単体テスト実行(Vitest) - ビルド検証(Next.js) ### 3. カバレッジ確認 - テストカバレッジ80%以上の確認 - ビジネスロジック90%以上の確認 - カバレッジレポート生成 ### 4. 品質レポート作成 - 合格/不合格判定 - 具体的な問題点の報告 - 修正提案 ## 品質基準 ### 合格条件(すべて満たす必要がある) - [ ] **Backend**: `./gradlew check`が成功 - [ ] **Frontend**: `pnpm run lint:check`が成功 - [ ] **Frontend**: `pnpm run test:ci`が成功 - [ ] **Frontend**: `pnpm run build`が成功 - [ ] **テストカバレッジ**: 全体80%以上 - [ ] **ビジネスロジック**: 90%以上(Service層) - [ ] **重大なLintエラー**: 0件 - [ ] **テスト失敗**: 0件 - [ ] **ビルドエラー**: 0件 ### 警告レベル(合格だが注意喚起) - Lintワーニング: 5件以上 - テストカバレッジ: 80-85%(目標は90%以上) - 循環的複雑度: 15以上のメソッドあり ## 検証フロー ### Phase 0: 環境確認(最重要) **実行前の必須チェック:** 1. **現在のディレクトリ確認** ```bash pwd ``` - 期待値: `/Users/koujienami/CursorProjects/YouTubeOpsAI` - **重要**: プロジェクトルートにいることを確認 2. **gradlewファイルの存在確認** (Backendチェック時) ```bash ls -la gradlew ls -la backend/gradlew 2>/dev/null || echo "backend/gradlew not found" ``` - `./gradlew`または`backend/gradlew`のどちらかが存在することを確認 - 存在する方のパスを使用してコマンド実行 3. **package.jsonの存在確認** (Frontendチェック時) ```bash ls -la frontend/package.json ``` **環境が正しくない場合の対処:** - プロジェクトルートに移動: `cd /Users/koujienami/CursorProjects/YouTubeOpsAI` - gradlewが見つからない場合はエラーを報告し、検証を中止 ### Phase 1: バックエンド検証 **対象**: `target="backend"` または `target="both"` の場合 1. **Gradleチェック実行** ```bash ./gradlew check ``` - Checkstyle、SpotBugs、テストを一括実行 - 失敗した場合は詳細なエラーログを取得 2. **カバレッジ確認** (`skip_coverage_check=false`の場合) ```bash ./gradlew jacocoTestCoverageVerification ``` - 80%以上のカバレッジを確認 - 失敗した場合はカバレッジレポートを確認 3. **結果の記録** - 成功したコマンド一覧 - 失敗したコマンドとエラー内容 - カバレッジパーセンテージ ### Phase 2: フロントエンド検証 **対象**: `target="frontend"` または `target="both"` の場合 1. **Lint check** ```bash pnpm --filter frontend run lint:all ``` - ESLint + Biomeによるコーディング規約チェック - エラーがある場合は詳細を記録 2. **ビルド検証** ```bash pnpm --filter frontend run build ``` - Next.jsビルドの成功確認 - 型エラー、ビルドエラーの検出 3. **テスト実行とカバレッジ** (`skip_coverage_check=false`の場合) ```bash pnpm --filter frontend run test:coverage ``` - Vitestによるテスト実行 - カバレッジレポート生成 - ロジック層75%以上、UI層45%以上のカバレッジ確認 4. **結果の記録** - Lintエラー/ワーニング件数 - ビルド成否 - テスト成否 - カバレッジパーセンテージ ### Phase 3: 総合判定 **合格条件:** 1. すべてのコマンドが成功(終了コード0) 2. カバレッジが基準値以上(チェックを省略しない場合) 3. 重大なLintエラーが0件 **判定ロジック:** ``` IF (全コマンド成功 AND カバレッジ基準達成) THEN 判定 = "合格 ✅" ELSE IF (一部失敗) THEN 判定 = "不合格 ❌" 理由を詳細に記載 ELSE 判定 = "部分的合格(警告あり) ⚠️" END IF ``` ### Phase 4: レポート出力 **出力形式:** ```markdown ## 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`