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
This commit is contained in:
2026-03-10 00:42:56 +08:00
parent 0035b3000d
commit cef68a95d9
31 changed files with 5403 additions and 424 deletions

View File

@@ -0,0 +1,245 @@
---
description: 代码审查流程
---
## 工作流说明
此工作流指导如何进行代码审查。
## 审查清单
### 代码质量
- [ ] 代码遵循项目规范
- [ ] TypeScript 类型正确
- [ ] 没有 `any` 类型(除非必要)
- [ ] ESLint 和 Prettier 通过
- [ ] 代码可读性良好
### 功能实现
- [ ] 实现符合需求
- [ ] 边界情况处理
- [ ] 错误处理完善
- [ ] 没有引入新 Bug
### 测试
- [ ] 包含足够的测试
- [ ] 测试覆盖率合理
- [ ] 所有测试通过
- [ ] E2E 测试(如需要)
### 文档
- [ ] 更新了相关文档
- [ ] 代码注释充分
- [ ] API 文档(如需要)
- [ ] CHANGELOG.md如需要
### 安全性
- [ ] 没有安全漏洞
- [ ] 输入验证完善
- [ ] 权限检查正确
- [ ] 敏感信息保护
### 性能
- [ ] 没有明显的性能问题
- [ ] 内存使用合理
- [ ] 没有不必要的渲染
- [ ] 资源加载优化
## 审查流程
### 1. 理解变更
- 阅读 PR 描述
- 查看 Issue 链接
- 理解变更目的
- 检查变更范围
### 2. 代码审查
**主进程代码:**
```bash
# 检查类型安全
npx tsc --noEmit
# 检查代码质量
npm run lint
```
**渲染进程代码:**
- 组件结构
- 状态管理
- 事件处理
- 样式实现
### 3. 测试验证
```bash
# 运行单元测试
npm run test
# 运行 E2E 测试
npm run test:e2e
# 检查覆盖率
npm run test:coverage
```
### 4. 提供反馈
**正面反馈:**
- 好的实现
- 优秀的代码
- 有价值的贡献
**建设性反馈:**
- 指出问题
- 提出建议
- 解释原因
**反馈格式:**
````markdown
### 问题
**位置:** `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;
````
### 代码重复
**问题:** 代码重复
**建议:**
```typescript
// 提取公共函数
function formatSize(size: number): string {
return size > 1024 ? `${size / 1024} MB` : `${size} KB`;
}
```
### 错误处理
**问题:** 缺少错误处理
**建议:**
```typescript
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"
- 提供建议或问题
- 不阻止合并
## 相关文档
- [CONTRIBUTING.md](../../CONTRIBUTING.md) - 贡献指南
- [DEVELOPMENT.md](../../DEVELOPMENT.md) - 开发文档
- [AGENTS.md](../../AGENTS.md) - AI 编码指南