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が学習し、サポートの質が向上する
---
**「品質は管理されない。育てられる。」**