QUALITY_ASSURANCE_SYSTEM.md
# プロジェクト品質保証システム設計 **Version**: 1.0 **Created**: 2025-01-XX **Status**: Implementation Ready --- ## 概要 mirrorをCoordinator Agentとして、全プロジェクトの品質を自律的にサポートするシステム。 ``` 【目標】 全プロジェクト × 品質保証 = ティール的な自律サポート 【原則】 - 監視ではなくサポート - 指摘ではなく気づきの促進 - 固定基準ではなく進化基準 ``` --- ## アーキテクチャ ### 全体構造 ``` ┌─────────────────────────────────────────────────────────────┐ │ mirror (Coordinator) │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 品質保証システム (Quality) │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ 収集 │→│ 評価 │→│ 可視化 │ │ │ │ │ │ Collect │ │ Evaluate │ │ Visualize│ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ↓ ↓ ↓ │ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ │ │ パターン学習 (Learning) │ │ │ │ │ │ 横断分析・早期警告・改善提案 │ │ │ │ │ └──────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ プロジェクト群 │ │ │ │ │ │ │ │ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │ │ │ │ │BOND│ │ROOT│ │LENS│ │PRISM│ │ONE │ │i2 │ │ │ │ │ └──┬─┘ └──┬─┘ └──┬─┘ └──┬─┘ └──┬─┘ └──┬─┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌────┐ ┌────┐ ┌────┐ │ │ │ │ │MIRROR│ │SEEHUB│ │ICONIQ│ │ │ │ │ └──┬─┘ └──┬─┘ └──┬─┘ │ │ │ │ └──────┴──────┴──────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 五層品質モデル ```yaml Layer 0 - 存在性 (Existence): 問い: プロジェクトは存在するか? 指標: - ディレクトリが存在する - package.json/CLAUDE.mdがある - Gitで管理されている 重み: 10% Layer 1 - 正当性 (Validity): 問い: コードは正しい形式か? 指標: - TypeScriptエラーがない - Lintエラーがない - 依存関係が解決されている 重み: 20% Layer 2 - 実行性 (Executability): 問い: ビルドは成功するか? 指標: - npm run build が成功 - サーバーが起動する - 致命的エラーがない 重み: 30% Layer 3 - 機能性 (Functionality): 問い: テストは通過するか? 指標: - テスト実行が成功 - カバレッジが一定以上 - E2Eテストが通過 重み: 25% Layer 4 - 品質性 (Quality): 問い: コードは高品質か? 指標: - 複雑度が許容範囲 - ドキュメントがある - セキュリティ問題がない 重み: 15% ``` --- ## データ構造 ### プロジェクト品質 ```typescript // src/lib/quality/types.ts export interface ProjectQuality { projectId: string; projectName: string; timestamp: Date; // 五層品質スコア layers: { existence: LayerScore; validity: LayerScore; executability: LayerScore; functionality: LayerScore; quality: LayerScore; }; // 総合スコア (0-100) totalScore: number; // 品質レベル level: QualityLevel; // 検出されたパターン patterns: DetectedQualityPattern[]; // 改善提案 suggestions: QualitySuggestion[]; } export interface LayerScore { score: number; // 0-100 passed: boolean; // ゲート通過 details: string[]; // 詳細 issues: QualityIssue[]; } export type QualityLevel = | "critical" // < 40: 重大な問題 | "warning" // 40-60: 要注意 | "acceptable" // 60-80: 許容範囲 | "good" // 80-90: 良好 | "excellent"; // 90+: 優秀 export interface DetectedQualityPattern { type: "degradation" | "improvement" | "stable"; category: string; description: string; firstSeen: Date; occurrences: number; } export interface QualitySuggestion { priority: "high" | "medium" | "low"; category: string; suggestion: string; fromProject?: string; // 他プロジェクトからの学び } export interface QualityIssue { severity: "error" | "warning" | "info"; message: string; file?: string; line?: number; } ``` ### 横断分析 ```typescript // src/lib/quality/types.ts export interface QualityOverview { timestamp: Date; // 全プロジェクトの品質 projects: ProjectQuality[]; // 集計 summary: { totalProjects: number; averageScore: number; byLevel: Record; trend: "improving" | "stable" | "declining"; }; // 横断パターン crossProjectPatterns: CrossProjectPattern[]; // 優先対応 priorityActions: PriorityAction[]; } export interface CrossProjectPattern { pattern: string; affectedProjects: string[]; recommendation: string; } export interface PriorityAction { projectId: string; action: string; reason: string; priority: number; } ``` --- ## 品質収集システム ### 収集ソース ```yaml Git情報: - コミット頻度 - 最終更新日時 - ブランチ状態 ファイルシステム: - 必須ファイルの存在 - ディレクトリ構造 - ファイルサイズ ビルドシステム: - npm run build の結果 - TypeScriptコンパイル - 依存関係の状態 テスト: - テスト実行結果 - カバレッジ - 失敗したテスト 静的解析: - Lintエラー数 - 型エラー数 - 複雑度 ``` ### 収集ロジック ```typescript // src/lib/quality/collector.ts export async function collectProjectQuality( projectId: string ): Promise { const projectPath = getProjectPath(projectId); // 各レイヤーを評価 const existence = await evaluateExistence(projectPath); const validity = await evaluateValidity(projectPath); const executability = await evaluateExecutability(projectPath); const functionality = await evaluateFunctionality(projectPath); const quality = await evaluateQuality(projectPath); // 総合スコア計算 const totalScore = calculateTotalScore({ existence, validity, executability, functionality, quality, }); // パターン検出 const patterns = detectPatterns(projectId, { existence, validity, executability, functionality, quality, }); // 改善提案生成 const suggestions = generateSuggestions( { existence, validity, executability, functionality, quality, }, patterns ); return { projectId, projectName: getProjectName(projectId), timestamp: new Date(), layers: { existence, validity, executability, functionality, quality }, totalScore, level: getQualityLevel(totalScore), patterns, suggestions, }; } ``` --- ## UI設計 ### 品質ダッシュボード ``` ┌─────────────────────────────────────────────────────────────┐ │ Projects Quality Overview │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 全体スコア: 78/100 [==========> ] Trend: ↑ Improving │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ EXCELLENT GOOD ACCEPTABLE WARNING CRITICAL │ │ │ │ 2 3 2 1 1 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────┬───────┬────────────────────────────────────┐ │ │ │ Project │ Score │ Status │ │ │ ├─────────┼───────┼────────────────────────────────────┤ │ │ │ SEEHUB │ 92 │ ████████████████████ Excellent │ │ │ │ ONE │ 88 │ █████████████████░░░ Good │ │ │ │ MIRROR │ 85 │ █████████████████░░░ Good │ │ │ │ BOND │ 75 │ ███████████████░░░░░ Acceptable │ │ │ │ ROOT │ 72 │ ██████████████░░░░░░ Acceptable │ │ │ │ LENS │ 58 │ ███████████░░░░░░░░░ Warning │ │ │ │ PRISM │ 45 │ █████████░░░░░░░░░░░ Warning │ │ │ │ i2 │ 65 │ █████████████░░░░░░░ Acceptable │ │ │ │ ICONIQ │ 32 │ ██████░░░░░░░░░░░░░░ Critical │ │ │ └─────────┴───────┴────────────────────────────────────┘ │ │ │ │ 優先対応: │ │ • ICONIQ: Git未管理 → まずGit管理を開始 │ │ • LENS: ビルドエラー → TypeScript設定を確認 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### プロジェクト詳細 ``` ┌─────────────────────────────────────────────────────────────┐ │ LENS - Quality Details Score: 58 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 五層品質: │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ L0 存在性 [██████████] 100 ✓ Passed │ │ │ │ L1 正当性 [████████░░] 80 ✓ Passed │ │ │ │ L2 実行性 [████░░░░░░] 40 ✗ Failed │ │ │ │ L3 機能性 [░░░░░░░░░░] 0 ⊘ Skipped │ │ │ │ L4 品質性 [░░░░░░░░░░] 0 ⊘ Skipped │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ 検出された問題: │ │ • ビルドエラー: Module not found 'prisma/client' │ │ • 依存関係: @prisma/client がインストールされていない │ │ │ │ 改善提案: │ │ 1. npm install @prisma/client を実行 │ │ 2. prisma generate を実行 │ │ 3. SEEHUBの設定を参考に: prisma/schema.prisma │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 共進化システムとの統合 ### 品質に基づく問い生成 ```typescript // 品質問題がある場合の問い const qualityQuestions = { critical: [ "このプロジェクトが止まっている理由は?", "何が障壁になっていますか?", "サポートが必要なことは?", ], declining: [ "最近このプロジェクトで変化したことは?", "注意を向けられていない理由は?", "優先順位を見直す必要がありますか?", ], improving: [ "何がうまくいっていますか?", "この学びを他のプロジェクトに活かせますか?", ], }; ``` ### Trust Scoreとの連携 ```yaml 品質 → Trust Score への影響: - 高品質プロジェクトの継続 → consistency向上 - ビルド成功率 → quality指標に反映 - 問題の早期解決 → autonomy向上 ``` --- ## 実装順序 ``` 1. types.ts - 型定義 2. collector.ts - 品質収集 3. evaluator.ts - 各レイヤー評価 4. analyzer.ts - 横断分析 5. QualityCard.tsx - UIコンポーネント 6. page.tsx統合 - ホームページに追加 7. ビルド確認 8. コミット ``` --- ## 成功基準 ### 技術的成功 - [ ] 全プロジェクトの品質を収集できる - [ ] 五層品質モデルで評価できる - [ ] ダッシュボードに表示できる ### 体験的成功 - [ ] 品質問題が「一目で」わかる - [ ] 改善提案が「具体的」である - [ ] 他プロジェクトからの学びが「自然に」共有される ### ティール的成功 - [ ] 監視ではなくサポートとして機能する - [ ] プロジェクトが自律的に品質を向上させる - [ ] mirrorが学習し、サポートの質が向上する --- **「品質は管理されない。育てられる。」**