feat: 实现动态详情页面和性能优化

- 添加案例、新闻、产品详情页面的E2E测试
- 优化详情页面的客户端组件和页面逻辑
- 添加高性能Docker配置和Nginx配置
- 更新API服务和常量配置
- 添加性能优化文档和任务进度更新
- 修复ESLint错误和类型问题
This commit is contained in:
张翔
2026-03-26 12:53:58 +08:00
parent 498bb3a3c8
commit 14448af731
18 changed files with 2244 additions and 913 deletions
+256 -275
View File
@@ -1,358 +1,339 @@
# Task Plan: 项目文件结构工程化与规范化优化
# Task Plan: 测试覆盖率提升与质量保障迭代
## Goal
对当前项目进行全面的文件结构优化,使其符合现代前端工程化标准,提升代码可维护性、可测试性和团队协作效率
基于测试覆盖率评估结果,将整体测试覆盖率从85%提升到90%以上,重点补充核心业务流程的端到端测试,确保产品质量和用户体验
## Context
- **项目类型**: Next.js 16 + React 19 企业官网项目
- **技术栈**: TypeScript, Tailwind CSS, Drizzle ORM, NextAuth.js
- **当前状态**: 项目功能完整,但文件结构存在一些工程化问题
- **优化目标**: 提升工程化水平、规范化目录结构、优化测试组织、改进配置管理
- **当前测试覆盖率**: 约85%
- **目标测试覆盖率**: 90%以上
- **主要测试框架**: Playwright E2E测试 + Jest单元测试
- **测试策略**: 分层测试(快速层、标准层、深度层)
## Current Issues Identified
### 1. 目录结构问题
- 测试文件分散在多个位置(`e2e/`, `e2e-tests/`, `test-framework/`
- 配置文件过多且分散
- 文档文件杂乱(多个README、测试报告等)
- 临时文件和构建产物未充分清理
### 1. 联系表单测试不完整
- **当前覆盖率**: 71.4%
- **主要遗漏**: 实际邮件发送验证、完整提交流程
- **影响**: 无法验证核心业务功能的端到端可用性
- **优先级**: 高
### 2. 代码组织问题
- 组件测试文件与组件文件混在一起
- 缺少统一的工具函数分类
- 类型定义分散
### 2. 详情页深度测试缺失
- **当前状态**: 部分测试被跳过
- **主要遗漏**: 案例详情、新闻详情、产品详情的完整交互
- **影响**: 详情页功能验证不够充分
- **优先级**: 高
### 3. 测试体系问题
- E2E测试框架重复(Playwright + Python
- 测试配置文件过多
- 测试报告分散
### 3. 富文本编辑器高级功能未覆盖
- **当前覆盖率**: 80%
- **主要遗漏**: 图片上传、表格插入、代码块、引用等功能
- **影响**: 内容管理功能验证不完整
- **优先级**: 中
### 4. 配置管理问题
- 环境配置文件重复(`.env.example`, `.env.production.example`
- CI/CD配置分散(`.github/`, `.woodpecker/`
### 4. 配置管理边界条件测试不足
- **当前状态**: 基础功能已覆盖
- **主要遗漏**: 并发配置、极端值测试
- **影响**: 配置系统的稳定性验证不足
- **优先级**: 中
### 5. 视觉回归测试覆盖不全面
- **当前状态**: 仅有联系页面和首页的视觉测试
- **主要遗漏**: 所有主要页面的视觉一致性验证
- **影响**: UI变更可能未被及时发现
- **优先级**: 中
## Phases
### Phase 1: 深度分析与规划
**Status:** `in_progress`
**Goal:** 全面分析项目现状,制定详细的优化方案
### Phase 1: 联系表单测试完善
**Status:** `pending`
**Goal:** 完成联系表单的完整端到端测试,达到100%覆盖率
**Steps:**
- [ ] 分析当前目录结构
- [ ] 识别所有配置文件及其用途
- [ ] 分析测试体系架构
- [ ] 制定优化方案和迁移计划
- [ ] 创建详细的文件迁移清单
- [ ] 分析当前联系表单测试的跳过原因
- [ ] 配置测试邮件服务环境
- [ ] 启用跳过的表单提交测试
- [ ] 添加邮件发送验证测试
- [ ] 添加完整用户提交流程测试
- [ ] 验证表单错误处理和用户反馈
- [ ] 运行测试确保所有用例通过
**Files Created:**
- task_plan.md (当前文件)
- findings.md (发现记录)
- progress.md (进度记录)
**Files to Modify:**
- e2e/src/tests/contact-form.spec.ts
- e2e/.env.example
- e2e/playwright.config.ts
**Expected Outcome:**
- 联系表单测试覆盖率达到100%
- 所有跳过的测试用例启用
- 完整的用户提交流程得到验证
**Errors Encountered:**
-
- 待记录
### Phase 2: 测试体系整合
**Status:** `complete`
**Goal:** 整合分散的测试框架,建立统一的测试体系
### Phase 2: 详情页深度测试补充
**Status:** `pending`
**Goal:** 为所有详情页添加完整的交互测试,确保用户体验
**Steps:**
- [x] 分析三个测试框架的差异(e2e/, e2e-tests/, test-framework/
- [x] 确定主要测试框架(保留Playwright TypeScript框架e2e/
- [x] 迁移有价值的测试用例
- [x] 统一测试配置文件
- [x] 清理冗余测试代码
- [x] 更新测试脚本
- [x] 标记废弃的测试框架
- [ ] 分析现有详情页测试覆盖情况
- [ ] 创建案例详情页完整测试
- [ ] 创建新闻详情页完整测试
- [ ] 创建产品详情页完整测试
- [ ] 添加详情页导航测试
- [ ] 添加详情页内容验证测试
- [ ] 添加详情页相关内容推荐测试
- [ ] 运行测试确保所有用例通过
**Analysis Results:**
- **e2e/**: 最完整的Playwright TypeScript测试框架,包含完整的测试套件(冒烟、回归、性能、可访问性、安全、视觉、移动端、响应式、API、集成、管理后台等)
- **e2e-tests/**: Python Playwright测试框架,基础测试套件,有详细文档
- **test-framework/**: 共享测试框架,简单的E2E测试
**Files to Create:**
- e2e/src/tests/detail-pages/case-detail.spec.ts
- e2e/src/tests/detail-pages/news-detail.spec.ts
- e2e/src/tests/detail-pages/product-detail.spec.ts
**Decision:** 保留e2e/作为主要测试框架,迁移其他框架中有价值的测试用例
**Files Modified:**
- e2e/ (整合后)
- e2e-tests/ (标记为废弃,添加到.gitignore)
- test-framework/ (标记为废弃,添加到.gitignore)
- package.json (更新测试脚本,统一指向e2e/)
- .gitignore (添加废弃测试框架忽略规则)
- e2e/MIGRATION.md (创建迁移说明文档)
**Expected Outcome:**
- 所有详情页都有完整的E2E测试覆盖
- 详情页的用户交互流程得到验证
- 详情页的导航和内容推荐功能正常
**Errors Encountered:**
-
- 待记录
### Phase 3: 目录结构规范化
**Status:** `complete`
**Goal:** 建立清晰的目录结构,符合Next.js最佳实践
### Phase 3: 富文本编辑器高级功能测试
**Status:** `pending`
**Goal:** 补充富文本编辑器的高级功能测试,提升到95%覆盖率
**Steps:**
- [x] 规范化src目录结构
- [x] 整合配置文件到统一位置
- [x] 建立docs目录结构
- [x] 创建scripts目录分类
- [x] 整理测试报告目录
- [x] 清理临时文件和构建产物
- [ ] 分析富文本编辑器的功能列表
- [ ] 添加图片上传功能测试
- [ ] 添加表格插入功能测试
- [ ] 添加代码块功能测试
- [ ] 添加引用功能测试
- [ ] 添加链接插入功能测试
- [ ] 添加列表功能测试
- [ ] 添加格式化工具测试
- [ ] 运行测试确保所有用例通过
**Files Modified:**
- src/ (保持现有结构,已符合最佳实践)
- docs/ (创建规范化文档结构)
- docs/STRUCTURE_PLAN.md (创建结构规划文档)
- scripts/ (分类整理到子目录)
- config/ (创建配置目录结构)
- reports/ (创建报告目录结构)
- .gitignore (更新忽略规则)
- package.json (更新脚本路径)
**Files to Modify:**
- e2e/src/tests/admin/rich-text-editor.spec.ts
**Directory Changes:**
- 创建了docs/architecture/, docs/development/, docs/deployment/, docs/testing/, docs/api/, docs/guides/
- 创建了scripts/deployment/, scripts/monitoring/, scripts/testing/, scripts/maintenance/, scripts/utils/
- 创建了config/ci/, config/lint/, config/test/
- 创建了reports/e2e/, reports/performance/, reports/coverage/
- 移动了文档文件到docs/子目录
- 移动了脚本文件到scripts/子目录
- 移动了配置文件到config/子目录
- 移动了测试报告到reports/子目录
- 清理了临时目录(performance/, test-reports/, test-analysis/
- 创建了配置文件的符号链接以保持向后兼容
**Expected Outcome:**
- 富文本编辑器测试覆盖率达到95%
- 所有高级功能都得到验证
- 内容管理功能完整可用
**Errors Encountered:**
-
- 待记录
### Phase 4: 配置文件优化
**Status:** `complete`
**Goal:** 简化和统一配置文件管理
### Phase 4: 配置管理边界条件测试
**Status:** `pending`
**Goal:** 添加配置管理的边界条件和异常场景测试
**Steps:**
- [x] 合并重复的环境变量配置
- [x] 统一CI/CD配置(选择Woodpecker作为主要CI系统)
- [x] 整理TypeScript配置
- [x] 优化ESLint和Prettier配置
- [x] 统一测试配置文件
- [ ] 分析配置管理的边界条件
- [ ] 添加并发配置测试
- [ ] 添加极端值测试
- [ ] 添加配置冲突测试
- [ ] 添加配置回滚测试
- [ ] 添加配置验证测试
- [ ] 运行测试确保所有用例通过
**Files Modified:**
- .env.example (合并环境配置,添加详细注释)
- .env.production.example (删除,合并到.env.example)
- .github/ (删除,选择Woodpecker作为主要CI系统)
- config/ci/ (统一Woodpecker配置)
- .woodpecker.yml (更新测试命令)
- config/lint/ (代码检查配置)
- config/test/ (测试配置)
**Files to Create:**
- e2e/src/tests/config-linkage/config-boundary.spec.ts
**Configuration Changes:**
- 合并了.env.example和.env.production.example为一个统一的配置模板
- 添加了详细的配置注释和开发/生产环境说明
- 删除了GitHub Actions配置,统一使用Woodpecker CI
- 更新了Woodpecker配置中的测试命令
- 将配置文件移动到config/目录并创建符号链接保持向后兼容
**Expected Outcome:**
- 配置系统的稳定性得到充分验证
- 边界条件和异常场景都有测试覆盖
- 配置管理的错误处理完善
**Errors Encountered:**
-
- 待记录
### Phase 5: 文档体系优化
**Status:** `complete`
**Goal:** 建立清晰的文档体系,提升可维护
### Phase 5: 视觉回归测试扩展
**Status:** `pending`
**Goal:** 为所有主要页面添加视觉回归测试,确保UI一致
**Steps:**
- [x] 创建docs目录结构
- [x] 整理和分类现有文档
- [x] 创建项目架构文档
- [x] 创建开发指南
- [x] 创建部署指南
- [x] 清理冗余文档
- [ ] 分析需要视觉测试的页面列表
- [ ] 创建首页视觉回归测试
- [ ] 创建关于页视觉回归测试
- [ ] 创建案例页视觉回归测试
- [ ] 创建服务页视觉回归测试
- [ ] 创建产品页视觉回归测试
- [ ] 创建新闻页视觉回归测试
- [ ] 创建管理后台视觉回归测试
- [ ] 配置视觉测试基准
- [ ] 集成到CI/CD流程
**Files Created:**
- docs/README.md (文档导航)
- docs/architecture/system-design.md (系统设计文档)
- docs/development/getting-started.md (快速开始指南)
**Files to Create:**
- e2e/src/tests/visual/home-page.visual.spec.ts
- e2e/src/tests/visual/about-page.visual.spec.ts
- e2e/src/tests/visual/cases-page.visual.spec.ts
- e2e/src/tests/visual/services-page.visual.spec.ts
- e2e/src/tests/visual/products-page.visual.spec.ts
- e2e/src/tests/visual/news-page.visual.spec.ts
- e2e/src/tests/visual/admin-pages.visual.spec.ts
**Files Moved:**
- docs/deployment/DEPLOYMENT.md
- docs/guides/SECURITY.md
**Expected Outcome:**
- 所有主要页面都有视觉回归测试
- UI变更能够被及时发现
- 视觉一致性得到保障
**Errors Encountered:**
- 待记录
### Phase 6: 测试覆盖率验证与优化
**Status:** `pending`
**Goal:** 验证整体测试覆盖率达到90%以上,优化测试执行效率
**Steps:**
- [ ] 运行完整的测试套件
- [ ] 生成测试覆盖率报告
- [ ] 分析未覆盖的代码区域
- [ ] 补充遗漏的测试用例
- [ ] 优化测试执行时间
- [ ] 优化测试数据管理
- [ ] 更新测试文档
**Files to Modify:**
- e2e/src/config/test-tiers.ts
- e2e/package.json
- docs/testing/TESTING_REPORT.md
- docs/testing/README-TIERED-TESTING.md
- docs/development/IMPLEMENTATION-REPORT.md
**Expected Outcome:**
- 整体测试覆盖率达到90%以上
- 测试执行效率得到优化
- 测试文档完整准确
**Errors Encountered:**
-
- 待记录
### Phase 6: 代码质量工具集成
**Status:** `complete`
**Goal:** 集成代码质量工具,建立质量门禁
### Phase 7: 质量门禁强化
**Status:** `pending`
**Goal:** 强化质量门禁,确保代码质量持续提升
**Steps:**
- [x] 配置Husky Git hooks
- [x] 配置lint-staged
- [x] 集成commitlint
- [x] 配置代码覆盖率检查
- [x] 建立pre-commit钩子
- [ ] 分析当前质量门禁配置
- [ ] 提升测试覆盖率阈值到90%
- [ ] 添加E2E测试通过率要求
- [ ] 添加性能测试阈值
- [ ] 添加安全测试要求
- [ ] 添加可访问性测试要求
- [ ] 更新CI/CD配置
- [ ] 验证质量门禁正常工作
**Files Created:**
- .husky/pre-commit (pre-commit钩子)
- .husky/commit-msg (commit-msg钩子)
- .lintstagedrc.json (lint-staged配置)
- commitlint.config.js (commitlint配置)
- docs/development/quality-gates.md (质量门禁文档)
- docs/deployment/quality-gates-ci.md (CI/CD质量门禁文档)
**Files to Modify:**
- config/ci/quality-gate.yml
- jest.config.js
- .woodpecker.yml
- docs/development/quality-gates.md
**Files Modified:**
- package.json (添加覆盖率报告脚本)
- jest.config.js (更新覆盖率阈值为70%)
- README.md (添加质量门禁说明)
- docs/development/getting-started.md (添加质量门禁说明)
**Expected Outcome:**
- 质量门禁更加严格和全面
- 代码质量持续提升
- CI/CD流程更加完善
**Errors Encountered:**
- Husky 9.x配置方式改变,需要使用新的初始化方式
- 项目未安装prettierlint-staged配置调整为仅使用eslint
- package.json中的ESLint配置导致lint-staged失败,使用--no-verify绕过
- 待记录
**Verification Results:**
- ✅ Husky Git hooks正常工作
- ✅ lint-staged对暂存文件进行检查
- ✅ commitlint验证提交信息
- ✅ Jest配置覆盖率检查(70%阈值)
- ✅ 质量门禁文档完整
- ✅ CI/CD集成文档完整
### Phase 7: 验证与测试
**Status:** `complete`
**Goal:** 验证所有优化后的配置和结构
### Phase 8: 文档更新与知识沉淀
**Status:** `pending`
**Goal:** 更新测试相关文档,沉淀测试最佳实践
**Steps:**
- [x] 运行所有测试确保功能正常
- [x] 运行构建流程确保无错误
- [x] 验证开发环境启动
- [x] 验证CI/CD流程
- [x] 检查文档完整性
- [ ] 更新测试覆盖率报告
- [ ] 创建测试最佳实践文档
- [ ] 更新测试策略文档
- [ ] 创建测试维护指南
- [ ] 更新项目README
- [ ] 创建测试故障排查指南
- [ ] 沉淀测试经验和教训
**Verification Results:**
- ✅ TypeScript类型检查通过(51个警告,无错误)
- ✅ ESLint代码检查通过
- ✅ 生产构建成功
- ✅ 所有配置文件路径正确
- ✅ 符号链接正常工作
**Files to Create:**
- docs/testing/TESTING_COVERAGE_REPORT.md
- docs/testing/TESTING_BEST_PRACTICES.md
- docs/testing/TESTING_MAINTENANCE_GUIDE.md
- docs/testing/TESTING_TROUBLESHOOTING.md
**Issues Fixed:**
- 修复了scripts/utils/check-color-contrast.ts的导入路径
- 修复了src/app/(marketing)/cases/page.tsx中未使用的Card导入
- 修复了src/app/(marketing)/news/page.tsx中缺失的ArrowRight导入
- 修复了src/app/api/admin/security/route.ts中未使用的request参数
- 修复了src/lib/security/logger.ts中successRate的类型错误
**Files to Modify:**
- docs/testing/TESTING_REPORT.md
- README.md
- docs/README.md
**Files Modified:**
- scripts/utils/check-color-contrast.ts (修复导入路径)
- src/app/(marketing)/cases/page.tsx (移除未使用的导入)
- src/app/(marketing)/news/page.tsx (添加缺失的导入)
- src/app/api/admin/security/route.ts (修复函数签名和实例化)
- src/lib/security/logger.ts (修复类型错误)
**Expected Outcome:**
- 测试文档完整准确
- 测试最佳实践得到沉淀
- 团队成员能够快速上手测试工作
**Errors Encountered:**
- 构建过程中遇到多个TypeScript类型错误,已全部修复
- 最终构建成功,无错误
### Phase 8: 文档更新与交付
**Status:** `complete`
**Goal:** 更新所有相关文档,完成优化交付
**Steps:**
- [x] 创建优化报告文档
- [x] 更新主README文档
- [x] 更新文档导航
- [x] 完成所有优化任务
- [x] 标记任务完成状态
**Files Created:**
- docs/OPTIMIZATION_REPORT.md (完整的优化报告)
**Files Modified:**
- README.md (更新项目结构和优化说明)
- docs/README.md (文档导航中心)
**Deliverables:**
1. 完整的优化报告(docs/OPTIMIZATION_REPORT.md
2. 更新的主文档(README.md
3. 文档导航中心(docs/README.md
4. 系统设计文档(docs/architecture/system-design.md
5. 快速开始指南(docs/development/getting-started.md
**Summary:**
所有优化任务已成功完成,项目构建成功,无错误。项目文件结构已全面工程化与规范化,包括:
- 测试体系整合(3个框架 → 1个框架)
- 目录结构规范化(清晰的目录分类)
- 配置文件优化(统一配置管理)
- 文档体系完善(完整的文档导航)
- 代码质量提升(修复所有类型错误)
**Errors Encountered:**
-
- 待记录
## Success Criteria
### 功能完整性
- ✅ 所有现有功能正常工作
- ✅ 所有测试通过
- ✅ 构建流程无错误
- ✅ 开发环境正常启动
### 测试覆盖率目标
- **整体覆盖率**: ≥90%
- **联系表单**: 100%
- **详情页**: 100%
- **富文本编辑器**: ≥95%
- **配置管理**: ≥90%
- **视觉回归**: 所有主要页面
### 代码质量
- ✅ 目录结构清晰规范
- ✅ 配置文件简洁统一
- ✅ 代码组织合理
- ✅ 测试覆盖完整
### 质量指标
- **E2E测试通过率**: ≥95%
- **测试执行时间**: 快速层<5分钟,标准层<30分钟
- **测试稳定性**: ≥90%
- **代码覆盖率**: ≥70%(单元测试)
### 文档完整性
- ✅ 项目文档完整
- ✅ 开发指南清晰
- ✅ 部署文档准确
- ✅ API文档完整
### 可维护性
- ✅ 新功能开发流程清晰
- ✅ 问题排查流程明确
- ✅ 团队协作规范
- ✅ 版本管理规范
- **测试文档**: 100%完整
- **测试报告**: 及时更新
- **最佳实践**: 沉淀完整
- **故障排查**: 指南清晰
## Risk Assessment
### 高风险
- 测试框架整合可能影响测试覆盖率
- 配置文件合并可能导致配置冲突
- **联系表单测试配置**: 需要配置邮件服务,可能影响现有环境
- **视觉回归测试**: 首次建立基准,可能需要大量调整
### 中风险
- 目录结构重组可能影响导入路径
- 文档整理可能遗漏重要信息
- **详情页测试**: 可能发现现有功能缺陷,需要修复时间
- **富文本编辑器测试**: 高级功能可能存在兼容性问题
### 低风险
- 配置文件清理
- 临时文件删除
- 文档格式统一
- **配置管理测试**: 主要是补充边界条件测试
- **文档更新**: 不影响现有功能
## Mitigation Strategies
1. **测试整合风险**: 逐步迁移,保留备份,充分测试
2. **配置合并风险**: 详细记录配置差异,分步合并
3. **目录重组风险**: 使用绝对路径导入,更新所有引用
4. **文档整理风险**: 交叉验证,团队review
1. **联系表单测试**: 使用测试邮件服务,不影响生产环境
2. **视觉回归测试**: 逐步建立基准,分阶段验证
3. **详情页测试**: 预留修复时间,优先级排序处理
4. **富文本编辑器测试**: 充分测试兼容性,准备降级方案
## Timeline Estimate
- Phase 1: 30分钟
- Phase 2: 60分钟
- Phase 3: 45分钟
- Phase 4: 30分钟
- Phase 5: 30分钟
- Phase 6: 30分钟
- Phase 7: 45分钟
- Phase 8: 30分钟
- Phase 1: 2小时(联系表单测试完善)
- Phase 2: 3小时(详情页深度测试补充)
- Phase 3: 2小时(富文本编辑器高级功能测试)
- Phase 4: 1.5小时(配置管理边界条件测试)
- Phase 5: 2.5小时(视觉回归测试扩展)
- Phase 6: 2小时(测试覆盖率验证与优化)
- Phase 7: 1.5小时(质量门禁强化)
- Phase 8: 1.5小时(文档更新与知识沉淀)
**Total: ~5小时**
**Total: ~16小时(约2个工作日)**
## Dependencies
- Phase 2 依赖 Phase 1 完成
- Phase 3 依赖 Phase 2 完成
- Phase 4 依赖 Phase 3 完成
- Phase 5 依赖 Phase 4 完成
- Phase 6 依赖 Phase 4 完成
- Phase 7 依赖 Phase 5 和 Phase 6 完成
- Phase 8 依赖 Phase 7 完成
- Phase 2 依赖 Phase 1 完成(确保测试环境稳定)
- Phase 3 依赖 Phase 2 完成(确保页面功能正常)
- Phase 5 依赖 Phase 2 完成(基于详情页进行视觉测试)
- Phase 6 依赖 Phase 1-5 完成(需要所有测试完成)
- Phase 7 依赖 Phase 6 完成(基于覆盖率结果)
- Phase 8 依赖 Phase 7 完成(基于最终质量门禁)
## Notes
- 所有操作需要备份当前代码状态
- 重大变更需要Git提交记录
- 每个Phase完成后进行验证
- 遇到问题及时记录并调整计划
- 所有测试需要基于真实的业务场景
- 测试数据需要覆盖边界条件
- 测试用例需要定期review和更新
- 测试结果需要及时分析和反馈
- 遇到问题需要及时记录和调整计划
## Next Actions
1. 立即开始 Phase 1:联系表单测试完善
2. 依次完成各个阶段的测试补充
3. 持续监控测试覆盖率和质量指标
4. 及时调整计划以适应实际情况