# Action: Complete

完成审查，保存最终状态。

## Purpose

结束代码审查流程：
- 保存最终状态
- 输出审查摘要
- 提供报告路径

## Preconditions

- [ ] state.status === 'running'
- [ ] state.report_generated === true

## Execution

```javascript
async function execute(state, workDir) {
  // 1. 计算审查时长
  const duration = Date.now() - new Date(state.started_at).getTime();
  const durationMinutes = Math.round(duration / 60000);
  
  // 2. 生成最终摘要
  const summary = {
    ...state.summary,
    review_duration_ms: duration,
    completed_at: new Date().toISOString()
  };
  
  // 3. 保存最终状态
  const finalState = {
    ...state,
    status: 'completed',
    completed_at: summary.completed_at,
    summary: summary
  };
  
  Write(`${workDir}/state.json`, JSON.stringify(finalState, null, 2));
  
  // 4. 输出摘要信息
  console.log('========================================');
  console.log('        CODE REVIEW COMPLETED');
  console.log('========================================');
  console.log('');
  console.log(`📁 审查目标: ${state.context.target_path}`);
  console.log(`📄 文件数量: ${state.context.file_count}`);
  console.log(`📝 代码行数: ${state.context.total_lines}`);
  console.log('');
  console.log('--- 问题统计 ---');
  console.log(`🔴 Critical: ${summary.critical}`);
  console.log(`🟠 High:     ${summary.high}`);
  console.log(`🟡 Medium:   ${summary.medium}`);
  console.log(`🔵 Low:      ${summary.low}`);
  console.log(`⚪ Info:     ${summary.info}`);
  console.log(`📊 Total:    ${summary.total_issues}`);
  console.log('');
  console.log(`⏱️  审查用时: ${durationMinutes} 分钟`);
  console.log('');
  console.log(`📋 报告位置: ${state.report_path}`);
  console.log('========================================');
  
  // 5. 返回状态更新
  return {
    stateUpdates: {
      status: 'completed',
      completed_at: summary.completed_at,
      summary: summary
    }
  };
}
```

## State Updates

```javascript
return {
  stateUpdates: {
    status: 'completed',
    completed_at: new Date().toISOString(),
    summary: {
      total_issues: state.summary.total_issues,
      critical: state.summary.critical,
      high: state.summary.high,
      medium: state.summary.medium,
      low: state.summary.low,
      info: state.summary.info,
      review_duration_ms: duration
    }
  }
};
```

## Output

- **Console**: 审查完成摘要
- **State**: 最终状态保存到 `state.json`

## Error Handling

| Error Type | Recovery |
|------------|----------|
| 状态保存失败 | 输出到控制台 |

## Next Actions

- 无（终止状态）

## Post-Completion

用户可以：
1. 查看完整报告: `cat ${workDir}/review-report.md`
2. 查看问题详情: `cat ${workDir}/findings/*.json`
3. 导出报告到其他位置
