5.7 KiB
Raw Blame History

全系统测试 + 阶段3业务组件抽象执行计划

任务概述

用户要求先执行全系统测试测试通过后执行阶段3的业务组件抽象。本计划分为两个主要阶段

  1. 全系统测试运行现有E2E测试套件验证系统功能完整性
  2. 阶段3业务组件抽象:创建配置化组件,解决架构债务

第一阶段:全系统测试

1.1 测试前准备

  • 确认 dev server 正在运行端口3015
  • 检查 Playwright 依赖是否已安装
  • 验证数据库连接状态(meoo-cli cloud status

1.2 执行测试套件

项目包含3个E2E测试文件

  • e2e/auth.setup.ts - 认证设置
  • e2e/core-workflow.spec.ts - 核心工作流测试
  • e2e/collaboration-workflow.spec.ts - 协作工作流测试
  • e2e/full-workflow.spec.ts - 全流程模拟测试(采购商→纺织厂完整流程)

执行命令

# 运行所有E2E测试
pnpm exec playwright test

# 或仅运行特定测试文件
pnpm exec playwright test e2e/full-workflow.spec.ts

1.3 测试结果验证

  • 所有测试用例通过
  • 无控制台错误
  • 无运行时异常
  • 数据一致性验证通过

1.4 测试失败处理策略

如果测试失败:

  1. 分析失败原因UI变更、数据问题、网络问题
  2. 修复代码或测试用例
  3. 重新运行测试直至全部通过
  4. 记录测试结果到 AGENTS.md

第二阶段阶段3业务组件抽象

根据 AGENTS.md 中的优化路线图阶段3包含以下任务

2.1 创建 DashboardLayout 配置化组件

目标:统一三个角色 Dashboard 的布局结构,消除 ~70% 的代码重复

文件位置src/components/layout/DashboardLayout.tsx

设计要点

  • 接收 role 参数purchaser/textile/washing
  • 根据角色自动应用对应主题色amber/emerald/violet
  • 统一 Header、统计卡片区域、快捷操作区域的布局
  • 支持自定义内容插槽children
  • 集成 NotificationCenter、HelpCenter 等通用组件

替换目标

  • src/pages/purchaser/Dashboard.tsx
  • src/pages/textile/Dashboard.tsx
  • src/pages/washing/Dashboard.tsx

2.2 创建 PaymentCard 组件

目标:统一采购商和水洗厂的付款展示

文件位置src/components/PaymentCard.tsx

设计要点

  • 支持付款方/收款方两种视角
  • 显示金额、状态、时间等关键信息
  • 支持主题色适配
  • 提供操作按钮(确认、详情等)

替换目标

  • src/pages/purchaser/AccountsPayable.tsx 中的内联实现
  • src/pages/washing/PaymentPending.tsx 中的内联实现

2.3 创建 AccountProfileCard 组件

目标:统一三个角色的账户信息弹窗

文件位置src/components/AccountProfileCard.tsx

设计要点

  • 显示用户头像、名称、公司信息
  • 支持头像上传功能
  • 集成功能菜单(账号管理、用户手册、反馈、关于)
  • 支持主题色适配

替换目标

  • 3个 Dashboard 中的账户卡片弹窗内联实现

2.4 创建 ImageUploader 组件

目标统一图片上传功能消除4+处重复实现

文件位置src/components/ImageUploader.tsx

设计要点

  • 支持预览、重新上传、删除
  • 文件大小和格式验证
  • 上传进度显示
  • 错误处理和用户反馈
  • 集成 Supabase Storage

替换目标

  • src/components/warehouse/ProductForm.tsx 中的图片上传
  • 其他需要图片上传的场景

2.5 创建 WashingLayout 组件(解决架构债务)

目标:为水洗厂创建独立 Layout 组件,与采购商/纺织厂保持一致

文件位置src/components/layout/WashingLayout.tsx

设计要点

  • 参考 PurchaserLayout 和 TextileLayout 的结构
  • 使用 violet 主题色
  • 包含6项导航首页、计划总览、待处理坯布、已完成坯布、成品仓库、待结款
  • 支持移动端折叠导航

路由调整

  • 将水洗厂的扁平路由改为嵌套路由模式
  • 更新 src/App.tsx 中的路由配置

2.6 统一实时订阅至 useRealtime

目标:将所有直接使用 supabase.channel 的地方迁移到 useRealtime Hook

涉及文件

  • src/pages/textile/PlanOverview.tsx - 直接订阅 inventory_records
  • 其他绕过单例管理器的页面

实施步骤

  1. 识别所有直接使用 supabase.channel 的位置
  2. 评估是否适合迁移到 useRealtime
  3. 逐步替换并验证功能

执行顺序与依赖关系

全系统测试
    ↓ (测试通过后)
DashboardLayout (基础,其他组件可能依赖)
    ↓
WashingLayout (解决架构债务,优先级高)
    ↓
AccountProfileCard (3个Dashboard都使用)
    ↓
PaymentCard (财务模块)
    ↓
ImageUploader (产品管理)
    ↓
统一实时订阅 (最后优化)

验证标准

每个组件完成后需验证:

  • TypeScript 类型检查通过 (pnpm run typecheck)
  • Dev server 正常启动 (pnpm run dev)
  • 相关页面功能正常
  • 移动端响应式正常
  • 主题色正确应用

风险与注意事项

  1. 测试环境依赖E2E测试需要 dev server 运行在 localhost:3015
  2. 数据库状态:测试可能修改数据库数据,建议在测试前备份
  3. 组件替换风险:替换内联实现时需保持功能完全一致
  4. 路由变更WashingLayout 会改变路由结构,需全面测试
  5. 向后兼容:新组件应支持现有所有功能,避免破坏性变更

预期产出

完成本计划后:

  • 全系统测试报告(通过/失败统计)
  • 5个新的共享组件
  • 3个 Dashboard 代码量减少约 50%
  • 水洗厂获得独立 Layout架构债务解决
  • 实时更新机制统一,内存泄漏风险降低