# State Schema

Code Review 状态结构定义。

## Schema Definition

```typescript
interface ReviewState {
  // === 元数据 ===
  status: 'pending' | 'running' | 'completed' | 'failed' | 'user_exit';
  started_at: string;      // ISO timestamp
  updated_at: string;      // ISO timestamp
  completed_at?: string;   // ISO timestamp
  
  // === 审查目标 ===
  context: {
    target_path: string;       // 目标路径（文件或目录）
    files: string[];           // 待审查文件列表
    language: string;          // 主要编程语言
    framework?: string;        // 框架（如有）
    total_lines: number;       // 总代码行数
    file_count: number;        // 文件数量
  };
  
  // === 扫描结果 ===
  scan_completed: boolean;
  scan_summary: {
    risk_areas: RiskArea[];    // 高风险区域
    complexity_score: number;  // 复杂度评分
    quick_issues: QuickIssue[]; // 快速发现的问题
  };
  
  // === 审查进度 ===
  reviewed_dimensions: string[];  // 已完成的审查维度
  current_dimension?: string;     // 当前审查维度
  
  // === 发现的问题 ===
  findings: {
    correctness: Finding[];
    readability: Finding[];
    performance: Finding[];
    security: Finding[];
    testing: Finding[];
    architecture: Finding[];
  };
  
  // === 报告状态 ===
  report_generated: boolean;
  report_path?: string;
  
  // === 执行跟踪 ===
  current_action?: string;
  completed_actions: string[];
  errors: ExecutionError[];
  error_count: number;
  
  // === 统计信息 ===
  summary?: {
    total_issues: number;
    critical: number;
    high: number;
    medium: number;
    low: number;
    info: number;
    review_duration_ms: number;
  };
}

interface RiskArea {
  file: string;
  reason: string;
  priority: 'high' | 'medium' | 'low';
}

interface QuickIssue {
  type: string;
  file: string;
  line?: number;
  message: string;
}

interface Finding {
  id: string;                    // 唯一标识 e.g., "CORR-001"
  severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
  dimension: string;             // 所属维度
  category: string;              // 问题类别
  file: string;                  // 文件路径
  line?: number;                 // 行号
  column?: number;               // 列号
  code_snippet?: string;         // 问题代码片段
  description: string;           // 问题描述
  recommendation: string;        // 修复建议
  fix_example?: string;          // 修复示例代码
  references?: string[];         // 参考资料链接
}

interface ExecutionError {
  action: string;
  message: string;
  timestamp: string;
}
```

## Initial State

```json
{
  "status": "pending",
  "started_at": "2024-01-01T00:00:00.000Z",
  "updated_at": "2024-01-01T00:00:00.000Z",
  "context": null,
  "scan_completed": false,
  "scan_summary": null,
  "reviewed_dimensions": [],
  "current_dimension": null,
  "findings": {
    "correctness": [],
    "readability": [],
    "performance": [],
    "security": [],
    "testing": [],
    "architecture": []
  },
  "report_generated": false,
  "report_path": null,
  "current_action": null,
  "completed_actions": [],
  "errors": [],
  "error_count": 0,
  "summary": null
}
```

## State Transitions

```mermaid
stateDiagram-v2
    [*] --> pending: Initialize
    pending --> running: collect-context
    running --> running: quick-scan
    running --> running: deep-review (6x)
    running --> running: generate-report
    running --> completed: complete
    running --> failed: error_count >= 3
    running --> user_exit: User abort
    completed --> [*]
    failed --> [*]
    user_exit --> [*]
```

## Dimension Review Order

1. **correctness** - 正确性（最高优先级）
2. **security** - 安全性（关键）
3. **performance** - 性能
4. **readability** - 可读性
5. **testing** - 测试覆盖
6. **architecture** - 架构一致性

## Finding ID Format

```
{DIMENSION_PREFIX}-{SEQUENCE}

Prefixes:
- CORR: Correctness
- READ: Readability
- PERF: Performance
- SEC:  Security
- TEST: Testing
- ARCH: Architecture

Example: SEC-003 = Security issue #3
```
