feat: 添加管理后台页面和功能,优化测试和性能配置

refactor: 重构页面导航和滚动逻辑,提升用户体验

test: 更新测试配置和用例,增加覆盖率和稳定性

perf: 优化性能指标和阈值,适应开发环境需求

ci: 添加Lighthouse CI工作流,集成性能测试

docs: 更新API文档和健康检查端点

fix: 修复登录页面和表单提交问题

style: 调整响应式布局和可访问性改进

chore: 更新依赖项和脚本配置
This commit is contained in:
张翔
2026-03-24 10:11:30 +08:00
parent 08978d38c8
commit f5dec95a83
85 changed files with 12331 additions and 1408 deletions
+213
View File
@@ -0,0 +1,213 @@
# 单元测试覆盖率改进计划
## 当前状态
**测试日期**: 2026-03-20
### 当前覆盖率
| 指标 | 当前值 | 目标值 | 差距 |
|------|--------|--------|------|
| **Lines** | 29.36% | 80% | -50.64% |
| **Statements** | 29.5% | 80% | -50.5% |
| **Functions** | 30.21% | 80% | -49.79% |
| **Branches** | 22.66% | 80% | -57.34% |
### 当前阈值设置
```javascript
coverageThreshold: {
global: {
branches: 35,
functions: 45,
lines: 45,
statements: 45,
},
}
```
## 改进策略
### 阶段一:快速提升(当前 → 50%)
**时间**: 2周
**目标**: 将覆盖率从当前水平提升到50%
**重点区域**:
1. **核心业务逻辑**
- [ ] `src/app/(marketing)/contact/actions.ts` (当前: 0%)
- [ ] `src/app/api/admin/content/route.ts` (当前: 0%)
- [ ] `src/app/api/admin/users/route.ts` (当前: 0%)
2. **工具函数**
- [ ] `src/lib/sanitize.ts`
- [ ] `src/lib/csrf.ts`
- [ ] `src/lib/constants.ts`
3. **Hooks**
- [ ] `src/hooks/use-media-query.ts`
- [ ] `src/hooks/use-scroll-reveal.ts`
- [ ] `src/hooks/use-intersection-observer.ts`
**行动项**:
- 为每个核心函数编写基础测试用例
- 覆盖主要成功路径和常见错误场景
- 使用Mock隔离外部依赖
### 阶段二:稳步推进(50% → 65%)
**时间**: 3周
**目标**: 将覆盖率从50%提升到65%
**重点区域**:
1. **UI组件**
- [ ] `src/components/ui/button.tsx`
- [ ] `src/components/ui/input.tsx`
- [ ] `src/components/ui/textarea.tsx`
- [ ] `src/components/ui/toast.tsx`
2. **页面组件**
- [ ] `src/app/(marketing)/about/page.tsx`
- [ ] `src/app/(marketing)/products/page.tsx`
- [ ] `src/app/(marketing)/services/page.tsx`
**行动项**:
- 使用React Testing Library测试组件交互
- 测试用户事件(点击、输入、提交)
- 测试组件状态变化和副作用
### 阶段三:精细打磨(65% → 80%)
**时间**: 4周
**目标**: 将覆盖率从65%提升到80%
**重点区域**:
1. **边界情况**
- [ ] 错误处理逻辑
- [ ] 空值/undefined处理
- [ ] 异常输入验证
2. **复杂场景**
- [ ] API集成测试
- [ ] 数据库交互测试
- [ ] 认证/授权流程
**行动项**:
- 补充边界测试用例
- 测试错误处理和异常流程
- 使用MSW (Mock Service Worker)测试API调用
- 使用Testcontainers测试数据库交互
## 执行计划
### 每周任务分配
#### Week 1-2: 核心业务逻辑
- [ ] 联系表单Server Actions测试
- [ ] 内容管理API测试
- [ ] 用户管理API测试
- [ ] 工具函数测试
#### Week 3-4: UI组件基础
- [ ] 表单组件测试
- [ ] 按钮组件测试
- [ ] Toast组件测试
- [ ] 基础页面组件测试
#### Week 5-7: 页面组件
- [ ] 营销页面测试
- [ ] 产品页面测试
- [ ] 服务页面测试
- [ ] 案例页面测试
#### Week 8-9: 边界情况
- [ ] 错误处理测试
- [ ] 边界值测试
- [ ] 异常流程测试
## 工具和资源
### 测试工具
- **Jest**: 单元测试框架
- **React Testing Library**: React组件测试
- **MSW**: API Mock
- **Testcontainers**: 数据库集成测试
### 覆盖率报告
```bash
# 生成覆盖率报告
npm run test:coverage
# 查看HTML报告
open coverage/lcov-report/index.html
```
### CI集成
```yaml
# GitHub Actions示例
- name: Run tests with coverage
run: npm run test:coverage:check
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage/coverage-final.json
```
## 验收标准
### 阶段一完成标准
- [ ] 核心业务逻辑覆盖率 ≥ 70%
- [ ] 工具函数覆盖率 ≥ 80%
- [ ] Hooks覆盖率 ≥ 60%
- [ ] 总体覆盖率 ≥ 50%
### 阶段二完成标准
- [ ] UI组件覆盖率 ≥ 60%
- [ ] 页面组件覆盖率 ≥ 50%
- [ ] 总体覆盖率 ≥ 65%
### 阶段三完成标准
- [ ] 所有模块覆盖率 ≥ 75%
- [ ] 总体覆盖率 ≥ 80%
- [ ] CI中强制执行覆盖率阈值
## 持续改进
### 定期审查
- 每周审查覆盖率报告
- 识别低覆盖率模块
- 优先测试高影响区域
### 新代码要求
- 所有新代码必须包含单元测试
- 新代码覆盖率要求 ≥ 80%
- PR必须通过覆盖率检查
### 重构支持
- 重构前确保有足够的测试覆盖
- 重构后验证测试仍然通过
- 利用测试作为重构的安全网
## 注意事项
1. **不要为了覆盖率而写测试**
- 测试应该验证行为,而不是代码行
- 有意义的测试比高覆盖率更重要
2. **关注关键路径**
- 优先测试核心业务逻辑
- 确保关键功能有充分的测试覆盖
3. **保持测试质量**
- 测试代码也需要维护
- 定期清理和重构测试代码
- 避免脆弱的测试
4. **平衡投入产出**
- 80%覆盖率是目标,不是硬性要求
- 某些代码可能不需要测试(如简单的getter/setter
- 根据风险和重要性分配测试资源