Files
spark-store/.agents/workflows/code-review.md
momen cef68a95d9 chore: add comprehensive documentation and testing infrastructure
## 文档(全部中文)
- AGENTS.md - 完整的 AI 编码指南(中文版)
- CONTRIBUTING.md - 贡献指南
- DEVELOPMENT.md - 开发文档
- DEPLOYMENT.md - 部署文档
- TESTING.md - 测试文档
- TROUBLESHOOTING.md - 问题排查指南
- FAQ.md - 常见问题
- WORKFLOW.md - 标准开发流程文档
## AI 工作流(9个详细工作流)
- feature-development.md - 新功能开发流程
- bug-fix.md - Bug 修复流程
- code-review.md - 代码审查流程
- testing.md - 测试编写流程
- release.md - 发布流程
- refactoring.md - 代码重构流程
- documentation.md - 文档更新流程
- performance-optimization.md - 性能优化流程
- security-audit.md - 安全审计流程
## 测试基础设施
- vitest.config.ts - Vitest 单元测试配置
- playwright.config.ts - Playwright E2E 测试配置
- src/__tests__/setup.ts - 测试环境设置
- src/__tests__/unit/downloadStatus.test.ts - 示例单元测试
- e2e/basic.spec.ts - 示例 E2E 测试
## CI/CD
- .github/workflows/test.yml - 新建测试 CI 工作流
- .github/workflows/build.yml - 更新构建工作流,添加测试步骤
## Issue 模板
- 更新 bug_report.md 为标准 Bug 报告模板
- 更新 help_wanted.md 为标准功能请求模板
## 配置更新
- package.json - 添加测试依赖和 7 个新的 npm 脚本
- .gitignore - 添加测试相关忽略项
## 新增 npm 脚本
- test - 运行单元测试
- test:watch - 监听模式
- test:coverage - 生成覆盖率报告
- test:e2e - 运行 E2E 测试
- test:e2e:ui - E2E UI 模式
- test:e2e:debug - E2E 调试模式
- test:all - 运行所有测试
## 新增测试依赖
- @playwright/test ^1.40.0
- @testing-library/jest-dom ^6.1.5
- @testing-library/vue ^8.0.1
- @vitest/coverage-v8 ^1.0.0
- @vue/test-utils ^2.4.3
- jsdom ^23.0.1
- vitest ^1.0.0
2026-03-10 00:42:56 +08:00

3.6 KiB
Raw Blame History

description
description
代码审查流程

工作流说明

此工作流指导如何进行代码审查。

审查清单

代码质量

  • 代码遵循项目规范
  • TypeScript 类型正确
  • 没有 any 类型(除非必要)
  • ESLint 和 Prettier 通过
  • 代码可读性良好

功能实现

  • 实现符合需求
  • 边界情况处理
  • 错误处理完善
  • 没有引入新 Bug

测试

  • 包含足够的测试
  • 测试覆盖率合理
  • 所有测试通过
  • E2E 测试(如需要)

文档

  • 更新了相关文档
  • 代码注释充分
  • API 文档(如需要)
  • CHANGELOG.md如需要

安全性

  • 没有安全漏洞
  • 输入验证完善
  • 权限检查正确
  • 敏感信息保护

性能

  • 没有明显的性能问题
  • 内存使用合理
  • 没有不必要的渲染
  • 资源加载优化

审查流程

1. 理解变更

  • 阅读 PR 描述
  • 查看 Issue 链接
  • 理解变更目的
  • 检查变更范围

2. 代码审查

主进程代码:

# 检查类型安全
npx tsc --noEmit

# 检查代码质量
npm run lint

渲染进程代码:

  • 组件结构
  • 状态管理
  • 事件处理
  • 样式实现

3. 测试验证

# 运行单元测试
npm run test

# 运行 E2E 测试
npm run test:e2e

# 检查覆盖率
npm run test:coverage

4. 提供反馈

正面反馈:

  • 好的实现
  • 优秀的代码
  • 有价值的贡献

建设性反馈:

  • 指出问题
  • 提出建议
  • 解释原因

反馈格式:

### 问题

**位置:** `src/components/AppCard.vue:45`

**描述:** 这里缺少错误处理,可能导致应用崩溃。

**建议:**

```typescript
try {
  await installPackage();
} catch (error) {
  console.error("Install failed:", error);
  showError(error.message);
}
```

### 5. 批准或要求修改

**批准条件:**
- 所有审查项目通过
- 所有测试通过
- CI 检查通过
- 没有阻塞问题

**要求修改:**
- 指出必须修复的问题
- 给出明确的修改建议
- 等待作者响应

## 审查原则

### 及时性

- 尽快响应 PR
- 设定响应时间预期
- 优先处理紧急 PR

### 建设性

- 提供具体的反馈
- 给出改进建议
- 解释审查理由

### 尊重

- 尊重作者的贡献
- 使用礼貌的语言
- 认可好的实现

### 一致性

- 遵循项目规范
- 保持审查标准一致
- 参考之前类似 PR

## 常见问题

### 类型安全问题

**问题:** 使用了 `any` 类型

**建议:**
```typescript
// ❌ 避免
const data: any = response;

// ✅ 推荐
interface ResponseData {
  id: string;
  name: string;
}
const data: ResponseData = response;

代码重复

问题: 代码重复

建议:

// 提取公共函数
function formatSize(size: number): string {
  return size > 1024 ? `${size / 1024} MB` : `${size} KB`;
}

错误处理

问题: 缺少错误处理

建议:

async function loadApps() {
  try {
    const response = await axios.get("/api/apps");
    return response.data;
  } catch (error) {
    logger.error({ err: error }, "Failed to load apps");
    throw error;
  }
}

审查后操作

批准

  • 点击 "Approve review"
  • 添加评论(可选)
  • 等待合并

要求修改

  • 选择 "Request changes"
  • 提供详细反馈
  • 等待作者更新

评论

  • 选择 "Comment"
  • 提供建议或问题
  • 不阻止合并

相关文档