Files
outlookEmailPlus/docs/TODO/TODO-可调整布局系统.md
T
胡绍康andClaude Opus 4.6 0ab50db85f feat: 实现可调整布局系统
- 新增布局管理器支持拖拽调整面板宽度
- 新增状态管理器实现布局持久化
- 重构前端页面结构优化四栏式布局
- 新增 Jest 测试框架和完整测试用例
- 完善项目文档(PRD/FD/TDD/TODO/LOG)
- 清理 Python 缓存文件并更新 .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 14:49:36 +08:00

32 KiB
Raw Blame History

TODO - 可调整布局系统

文档信息

  • 文档编号: TODO-00001
  • 创建日期: 2026-02-26
  • 版本: v1.0
  • 状态: 进行中
  • 负责人: 开发团队
  • 关联文档:
    • PRD-00001: PRD - 可调整布局系统
    • FD-00001: FD - 可调整布局系统
    • TDD-00001: TDD - 可调整布局系统
    • TD-00001: TD - 可调整布局系统

目录

  1. 任务概览
  2. 阶段一:基础布局改造
  3. 阶段二:拖动调整功能
  4. 阶段三:折叠功能
  5. 阶段四:状态持久化
  6. 阶段五:恢复默认布局
  7. 阶段六:窗口适配与键盘支持
  8. 阶段七:测试与优化
  9. 阶段八:文档与部署

一、任务概览

1.1 总体进度

阶段 任务数 已完成 进行中 待开始 进度
阶段一:基础布局改造 5 5 0 0 100%
阶段二:拖动调整功能 6 6 0 0 100%
阶段三:折叠功能 7 7 0 0 100%
阶段四:状态持久化 5 5 0 0 100%
阶段五:恢复默认布局 4 4 0 0 100%
阶段六:窗口适配与键盘支持 6 6 0 0 100%
阶段七:测试与优化 8 2 0 6 25%
阶段八:文档与部署 8 4 0 4 50%
总计 49 39 0 10 80%

1.2 优先级说明

  • P0(紧急): 核心功能,必须完成
  • P1(高): 重要功能,应该完成
  • P2(中): 次要功能,可以延后
  • P3(低): 优化项,时间允许时完成

1.3 时间估算

  • 总预计工时: 60-75 人天
  • 预计完成时间: 11-15 个工作日(按 2 人团队计算)
  • 当前进度: 80%(核心功能已完成,剩余测试/部署/文档待收尾)

二、阶段一:基础布局改造

目标: 修改 HTML 结构和 CSS,实现 Grid 布局和 CSS 变量系统

预计时间: 2-3 天

任务列表

TASK-01-001: 修改 HTML 结构

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: 无

任务描述:

  1. 修改 templates/index.html
  2. 为每个面板添加 resizable-panel 类和 data-panel 属性
  3. 添加 resizer 元素(带 ARIA 属性)
  4. 添加折叠按钮(带 ARIA 属性)
  5. 确保 HTML 结构符合 TDD 设计

验收标准:

  • 所有面板都有正确的 data 属性
  • resizer 元素包含完整的 ARIA 属性
  • 折叠按钮包含完整的 ARIA 属性
  • HTML 通过 W3C 验证

参考文档: TDD 第八章 - 集成方案


TASK-01-002: 创建 layout.css 文件

  • 优先级: P0
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-01-001

任务描述:

  1. 创建 static/css/layout.css
  2. 定义 CSS 变量(面板宽度、最小/最大宽度、动画时长等)
  3. 实现 CSS Grid 布局
  4. 添加 resizer 样式
  5. 添加折叠状态样式
  6. 添加动画过渡效果

验收标准:

  • CSS 变量定义完整
  • Grid 布局正确显示
  • resizer 有 hover 效果
  • 折叠动画流畅(200ms)

参考文档: TDD 第八章 - 集成方案


TASK-01-003: 修改 main.css

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-01-002

任务描述:

  1. 移除固定宽度样式
  2. 改为使用 CSS 变量
  3. 确保与现有样式兼容
  4. 调整 z-index 层级

验收标准:

  • 移除所有固定宽度
  • 使用 CSS 变量控制宽度
  • 现有功能样式不受影响

TASK-01-004: 引入 layout.css 到页面

  • 优先级: P0
  • 预计工时: 0.5 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-01-002, TASK-01-003

任务描述:

  1. 在 templates/index.html 中引入 layout.css
  2. 确保加载顺序正确(在 main.css 之后)

验收标准:

  • CSS 文件正确加载
  • 样式生效

TASK-01-005: 验证基础布局

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-01-001, TASK-01-002, TASK-01-003, TASK-01-004

任务描述:

  1. 在浏览器中测试布局显示
  2. 验证 Grid 布局正确
  3. 验证 CSS 变量生效
  4. 验证现有功能不受影响
  5. 在不同浏览器中测试(Chrome、Firefox、Safari、Edge)

验收标准:

  • 四个面板正确显示
  • 默认宽度正确(200px、260px、380px、自适应)
  • 邮件列表和详情功能正常
  • 4 个浏览器显示一致

参考文档: TD 第八章 - 兼容性测试方案

三、阶段二:拖动调整功能

目标: 实现鼠标拖动调整面板宽度功能

预计时间: 2-3 天

任务列表

TASK-02-001: 创建 LayoutManager 类

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-01-005

任务描述:

  1. 创建 static/js/layout-manager.js
  2. 实现 LayoutManager 类基础结构
  3. 实现构造函数和初始化方法
  4. 实现 getMinWidth() 和 getMaxWidth() 方法
  5. 实现 updatePanelWidth() 方法

验收标准:

  • 类结构符合 TDD 设计
  • 所有基础方法实现完整
  • 通过单元测试

参考文档: TDD 第三章 - 类与方法设计


TASK-02-002: 实现拖动事件处理

  • 优先级: P0
  • 预计工时: 6 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-001

任务描述:

  1. 实现 startResize() 方法(mousedown 事件)
  2. 实现 resize() 方法(mousemove 事件)
  3. 实现 stopResize() 方法(mouseup 事件)
  4. 使用 requestAnimationFrame 优化性能
  5. 实现宽度计算算法(包含最小/最大限制)

验收标准:

  • 可以拖动 resizer 调整宽度
  • 宽度实时更新
  • 拖动流畅,无卡顿
  • 通过集成测试 TC-F1-001-P

参考文档: TDD 第二章 - 核心算法设计


TASK-02-003: 实现宽度限制逻辑

  • 优先级: P0
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-002

任务描述:

  1. 实现最小宽度限制(150px、180px、280px)
  2. 实现最大宽度限制(400px、500px、600px)
  3. 实现邮件详情面板 400px 保证逻辑
  4. 实现 calculateOtherPanelsWidth() 方法

验收标准:

  • 无法拖动到最小宽度以下
  • 无法拖动到最大宽度以上
  • 邮件详情面板始终 ≥ 400px
  • 通过边界测试 TC-F1-002-B, TC-F1-003-B, TC-F1-004-B

参考文档: PRD 第三章 - 功能需求


TASK-02-004: 实现视觉反馈

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-002

任务描述:

  1. 实现 resizer hover 效果(背景色变化)
  2. 实现拖动时全局光标变化(col-resize)
  3. 实现拖动时禁止文本选择(user-select: none)
  4. 实现高亮指示器显示

验收标准:

  • hover 时 resizer 有视觉反馈
  • 拖动时光标正确
  • 拖动时不会选中文本

TASK-02-005: 处理边界情况

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-002, TASK-02-003

任务描述:

  1. 处理鼠标移出窗口的情况
  2. 处理快速拖动的情况
  3. 处理窗口大小变化时的拖动
  4. 添加错误处理和日志

验收标准:

  • 鼠标移出窗口后拖动正常结束
  • 快速拖动不会出错
  • 通过负向测试 TC-F1-005-N

参考文档: TDD 第七章 - 错误处理与边界情况


TASK-02-006: 性能优化

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-002, TASK-02-003

任务描述:

  1. 使用 requestAnimationFrame 优化拖动
  2. 避免布局抖动(批量读写 DOM)
  3. 使用 CSS transform 优化动画
  4. 测量并优化帧率

验收标准:

  • 拖动帧率 ≥ 60fps
  • 通过性能测试 TC-F1-006-PF
  • Chrome DevTools 性能分析无警告

参考文档: TDD 第六章 - 性能优化策略


四、阶段三:折叠功能

目标: 实现面板折叠/展开功能

预计时间: 1-2 天

任务列表

TASK-03-001: 实现折叠/展开方法

  • 优先级: P0
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-001

任务描述:

  1. 实现 collapsePanel() 方法
  2. 实现 expandPanel() 方法
  3. 实现 togglePanel() 方法
  4. 添加/移除 collapsed 类
  5. 更新 ARIA 属性(aria-expanded)

验收标准:

  • 可以折叠面板
  • 可以展开面板
  • ARIA 属性正确更新
  • 通过单元测试

参考文档: TDD 第三章 - 类与方法设计


TASK-03-002: 绑定折叠按钮事件

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-03-001

任务描述:

  1. 在 init() 方法中绑定折叠按钮点击事件
  2. 实现按钮图标切换(← / →)
  3. 实现 aria-label 更新

验收标准:

  • 点击按钮可以折叠/展开
  • 按钮图标正确切换
  • 通过集成测试 TC-F2-001-P, TC-F2-002-P

TASK-03-003: 实现折叠动画

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-03-001

任务描述:

  1. 在 layout.css 中添加折叠动画
  2. 使用 CSS transition(200ms ease)
  3. 实现宽度和 opacity 同时变化
  4. 优化动画性能(使用 transform)
  • 折叠动画流畅
  • 动画时长 200ms ± 10ms
  • 无卡顿现象
  • 通过性能测试

参考文档: PRD 第三章 - 功能需求


TASK-03-004: 实现折叠指示条

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-03-001, TASK-03-003

任务描述:

  1. 创建折叠指示条 HTML 结构
  2. 添加折叠指示条样式(48px 宽)
  3. 显示竖排文字(面板名称)
  4. 实现点击指示条展开功能

验收标准:

  • 折叠后显示指示条
  • 指示条显示面板名称
  • 点击指示条可以展开

TASK-03-005: 实现折叠规则

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-03-001

任务描述:

  1. 实现至少保持一个面板展开的逻辑
  2. 邮件详情面板不可折叠
  3. 添加提示信息(尝试全部折叠时)
  4. 实现 getExpandedPanels() 方法

验收标准:

  • 无法折叠所有面板
  • 邮件详情面板始终展开
  • 通过负向测试 TC-F2-003-N

参考文档: PRD 第三章 - 功能需求


TASK-03-006: 折叠时隐藏 resizer

  • 优先级: P0
  • 预计工时: 1 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-03-001

任务描述:

  1. 在 layout.css 中添加折叠状态下的 resizer 样式
  2. 设置 display: none 和 pointer-events: none
  3. 确保折叠状态下无法拖动

验收标准:

  • 折叠后 resizer 不可见
  • 折叠后无法拖动
  • 通过测试 TC-F2-004-P, TC-F2-005-N

TASK-03-007: 标记自动折叠

  • 优先级: P1
  • 预计工时: 1 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-03-001

任务描述:

  1. 在 collapsePanel() 中添加 auto 参数
  2. 自动折叠时设置 data-autoCollapsed 属性
  3. 展开时移除该属性
  4. 用于区分用户手动折叠和自动折叠

验收标准:

  • 自动折叠有标记
  • 手动折叠无标记
  • 窗口放大时自动折叠的面板会恢复

参考文档: FD 第五章 - F5 窗口尺寸适配

五、阶段四:状态持久化

目标: 实现布局状态保存和加载功能

预计时间: 1 天

任务列表

TASK-04-001: 创建 StateManager 类

  • 优先级: P0
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-02-001

任务描述:

  1. 创建 static/js/state-manager.js
  2. 实现 StateManager 类基础结构
  3. 实现 save() 方法
  4. 实现 load() 方法
  5. 实现 clear() 方法
  6. 实现 validate() 方法
  7. 实现 migrate() 方法

验收标准:

  • 类结构符合 TDD 设计
  • 所有方法实现完整
  • 通过单元测试

参考文档: TDD 第三章 - 类与方法设计


TASK-04-002: 实现状态保存逻辑

  • 优先级: P0
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-04-001

任务描述:

  1. 在 LayoutManager 中集成 StateManager
  2. 实现 saveState() 方法
  3. 实现防抖保存(500ms)
  4. 实现 beforeunload 强制保存
  5. 保存面板宽度和折叠状态

验收标准:

  • 拖动后 500ms 自动保存
  • 折叠后立即保存
  • 页面卸载时强制保存
  • 通过测试 TC-F4-001-P, TC-F4-002-P, TC-F4-005-P

参考文档: FD 第四章 - F4 状态持久化


TASK-04-003: 实现状态加载逻辑

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-04-001

任务描述:

  1. 实现 loadState() 方法
  2. 在 init() 中调用 loadState()
  3. 应用保存的宽度到 CSS 变量
  4. 应用保存的折叠状态

验收标准:

  • 页面刷新后状态恢复
  • 宽度正确恢复
  • 折叠状态正确恢复
  • 通过测试 TC-F4-003-P

参考文档: FD 第四章 - F4 状态持久化


TASK-04-004: 实现多用户隔离

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-04-001

任务描述:

  1. 实现 getCurrentUserId() 方法
  2. 使用 userId 作为 localStorage 键名的一部分
  3. 支持 guest 用户(未登录)
  4. 测试多用户场景

验收标准:

  • 不同用户的布局独立存储
  • 用户切换后布局正确
  • 通过测试 TC-F4-004-P

参考文档: PRD 第三章 - 功能需求


TASK-04-005: 错误处理

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-26
  • 依赖: TASK-04-001, TASK-04-002, TASK-04-003

任务描述:

  1. 处理 localStorage 不可用的情况
  2. 处理 QuotaExceededError
  3. 处理 JSON 解析错误
  4. 处理数据验证失败
  5. 添加降级策略(使用默认布局)

验收标准:

  • localStorage 不可用时使用默认布局
  • 数据损坏时清除并使用默认布局
  • 通过测试 TC-F4-006-N, TC-F4-007-N
  • 控制台有清晰的错误提示

参考文档: TDD 第七章 - 错误处理与边界情况


六、阶段五:恢复默认布局

目标: 实现一键恢复默认布局功能

预计时间: 1 天

任务列表

TASK-05-001: 添加恢复按钮

  • 优先级: P1
  • 预计工时: 1 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-01-001

任务描述:

  1. 在顶部导航栏添加"恢复默认布局"按钮
  2. 添加重置图标(↻)
  3. 添加 tooltip 提示
  4. 添加 ARIA 属性

验收标准:

  • 按钮显示在正确位置
  • hover 时显示 tooltip
  • 按钮可访问(键盘和屏幕阅读器)

参考文档: PRD 第三章 - 功能需求


TASK-05-002: 实现确认对话框

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-05-001

任务描述:

  1. 创建确认对话框 HTML 结构
  2. 添加对话框样式
  3. 实现对话框显示/隐藏逻辑
  4. 添加"取消"和"确定"按钮

验收标准:

  • 点击按钮显示对话框
  • 对话框内容清晰
  • 可以取消或确定
  • 通过测试 TC-F3-002-N

参考文档: FD 第三章 - F3 恢复默认布局


TASK-05-003: 实现恢复逻辑

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-04-001, TASK-05-002

任务描述:

  1. 实现 resetLayout() 方法
  2. 恢复默认宽度(200px、260px、380px)
  3. 展开所有面板
  4. 清除 localStorage 中的状态
  5. 更新 CSS 变量

验收标准:

  • 宽度恢复到默认值
  • 所有面板展开
  • localStorage 被清除
  • 通过测试 TC-F3-001-P

参考文档: TDD 第三章 - 类与方法设计


TASK-05-004: 实现恢复动画

  • 优先级: P2
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-05-003

任务描述:

  1. 添加恢复动画(300ms ease)
  2. 使用 CSS transition 平滑过渡
  3. 优化动画性能

验收标准:

  • 恢复过程有平滑动画
  • 动画时长 300ms
  • 无卡顿现象

参考文档: PRD 第三章 - 功能需求


七、阶段六:窗口适配与键盘支持

目标: 实现窗口尺寸自适应和键盘可访问性

预计时间: 2 天

任务列表

TASK-06-001: 实现窗口调整监听

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-03-001

任务描述:

  1. 实现 handleWindowResize() 方法
  2. 绑定 window resize 事件
  3. 使用防抖优化(200ms)
  4. 在 init() 中调用初始适配

验收标准:

  • 窗口调整时触发处理
  • 防抖生效,避免频繁触发
  • 页面加载时执行初始适配

参考文档: TDD 第二章 - 核心算法设计


TASK-06-002: 实现断点自动折叠

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-06-001

任务描述:

  1. 实现 < 1200px 自动折叠分组面板
  2. 实现 < 900px 自动折叠账号面板
  3. 实现 < 700px 自动折叠邮件列表面板
  4. 标记为自动折叠(data-autoCollapsed)

验收标准:

  • 窗口缩小时自动折叠
  • 折叠顺序正确
  • 通过测试 TC-F5-001-P, TC-F5-002-P, TC-F5-003-P

参考文档: FD 第五章 - F5 窗口尺寸适配


TASK-06-003: 实现窗口放大恢复

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-06-002

任务描述:

  1. 实现 restorePanelIfNeeded() 方法
  2. 窗口放大时恢复自动折叠的面板
  3. 不恢复用户手动折叠的面板
  4. 移除 data-autoCollapsed 标记

验收标准:

  • 窗口放大时自动恢复
  • 手动折叠的面板不恢复
  • 通过测试 TC-F5-004-P, TC-F5-005-N

参考文档: FD 第五章 - F5 窗口尺寸适配


TASK-06-004: 实现键盘聚焦

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-02-001

任务描述:

  1. 为 resizer 添加 tabindex="0"
  2. 实现聚焦时的视觉反馈(outline)
  3. 为折叠按钮添加键盘支持
  4. 测试 Tab 键导航

验收标准:

  • Tab 键可以聚焦到 resizer
  • 聚焦时有明显视觉反馈
  • 通过测试 TC-F6-001-P

参考文档: FD 第六章 - F6 键盘可访问性


TASK-06-005: 实现键盘调整宽度

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-06-004

任务描述:

  1. 实现 handleKeyboard() 方法
  2. 绑定 keydown 事件到 resizer
  3. 实现方向键调整(← / →,每次 10px)
  4. 实现 Shift + 方向键快速调整(每次 50px)
  5. 更新 aria-valuenow 属性

验收标准:

  • 方向键可以调整宽度
  • Shift + 方向键快速调整
  • ARIA 属性实时更新
  • 通过测试 TC-F6-002-P, TC-F6-003-P

参考文档: TDD 第三章 - 类与方法设计


TASK-06-006: 完善 ARIA 属性

  • 优先级: P1
  • 预计工时: 2 小时
  • 负责人: 待分配
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-06-004, TASK-06-005

任务描述:

  1. 确保所有 resizer 有完整的 ARIA 属性
  2. 确保所有折叠按钮有完整的 ARIA 属性
  3. 使用屏幕阅读器测试
  4. 修复可访问性问题

验收标准:

  • 所有交互元素有 ARIA 属性
  • 屏幕阅读器正确朗读
  • 通过 axe-core 检测
  • 通过测试 TC-F6-005-P

参考文档: PRD 第四章 - 非功能需求


八、阶段七:测试与优化

目标: 完成所有测试并优化性能

预计时间: 2-3 天

任务列表

TASK-07-001: 运行单元测试

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 测试团队
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-02-001, TASK-04-001

任务描述:

  1. 运行 StateManager 单元测试
  2. 运行 LayoutManager 单元测试
  3. 修复失败的测试
  4. 确保代码覆盖率 > 80%

验收标准:

  • 所有单元测试通过
  • 代码覆盖率 > 80%
  • 无测试警告

参考文档: tests/layout-system/README.md


TASK-07-002: 运行集成测试

  • 优先级: P0
  • 预计工时: 3 小时
  • 负责人: 测试团队
  • 状态: ✅ 已完成
  • 完成日期: 2026-02-27
  • 依赖: TASK-02-006, TASK-03-007

任务描述:

  1. 运行拖动调整宽度集成测试
  2. 运行面板折叠集成测试
  3. 修复失败的测试
  4. 补充缺失的测试用例

验收标准:

  • 所有集成测试通过
  • 功能覆盖率 100%
  • 无测试警告

参考文档: TD 第四章 - 测试用例设计


TASK-07-003: 性能测试

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 测试团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-02-006

任务描述:

  1. 测试拖动帧率(目标 ≥ 60fps)
  2. 测试折叠动画性能(目标 200ms)
  3. 测试 localStorage 数据大小(目标 < 1KB)
  4. 测试页面加载时间增加(目标 ≤ 50ms)
  5. 使用 Lighthouse 进行综合性能评分

验收标准:

  • 拖动帧率 ≥ 55fps
  • 动画时长 190-210ms
  • localStorage < 1KB
  • 加载时间增加 ≤ 50ms
  • Lighthouse 性能分 ≥ 90

参考文档: TD 第七章 - 性能测试方案


TASK-07-004: 兼容性测试

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 测试团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-002

任务描述:

  1. 在 Chrome 90+ 上测试所有功能
  2. 在 Firefox 88+ 上测试所有功能
  3. 在 Safari 14+ 上测试所有功能
  4. 在 Edge 90+ 上测试所有功能
  5. 测试降级场景(CSS Grid 不支持、localStorage 不可用)

验收标准:

  • 4 个浏览器所有功能正常
  • 降级场景正常工作
  • 无浏览器特定的 bug

参考文档: TD 第八章 - 兼容性测试方案


TASK-07-005: 可访问性测试

  • 优先级: P1
  • 预计工时: 3 小时
  • 负责人: 测试团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-06-006

任务描述:

  1. 使用 axe-core 自动检测
  2. 使用 NVDA/JAWS 测试屏幕阅读器
  3. 测试键盘导航完整性
  4. 修复可访问性问题

验收标准:

  • axe-core 无违规项
  • 屏幕阅读器正确朗读
  • 所有功能可通过键盘完成
  • 符合 WCAG 2.1 AA 标准

参考文档: TD 第九章 - 可访问性测试方案


TASK-07-006: 回归测试

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 测试团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-002

任务描述:

  1. 测试邮件列表显示和滚动
  2. 测试邮件详情查看和渲染
  3. 测试账号切换功能
  4. 测试分组管理功能
  5. 测试 Token 刷新功能
  6. 测试临时邮箱功能

验收标准:

  • 所有现有功能正常
  • 无回归 bug
  • 回归通过率 > 98%

参考文档: TD 第十章 - 回归测试策略


TASK-07-007: 性能优化

  • 优先级: P1
  • 预计工时: 4 小时
  • 负责人: 开发团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-003

任务描述:

  1. 根据性能测试结果优化代码
  2. 优化 CSS 动画性能
  3. 优化 JavaScript 执行效率
  4. 减少重排和重绘
  5. 优化内存占用

验收标准:

  • 性能指标达标
  • Chrome DevTools 无性能警告
  • 内存占用合理

参考文档: TDD 第六章 - 性能优化策略


TASK-07-008: Bug 修复

  • 优先级: P0
  • 预计工时: 8 小时
  • 负责人: 开发团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-001, TASK-07-002, TASK-07-004, TASK-07-005, TASK-07-006

任务描述:

  1. 修复测试中发现的所有 P0 bug
  2. 修复测试中发现的所有 P1 bug
  3. 记录 P2/P3 bug(可延后修复)
  4. 回归测试修复的 bug

验收标准:

  • 所有 P0 bug 已修复
  • 所有 P1 bug 已修复
  • P2/P3 bug 已记录
  • 修复后的功能通过测试

参考文档: TD 第十二章 - 缺陷管理流程


九、阶段八:文档与部署

目标: 完善文档并部署到测试环境

预计时间: 1 天

任务列表

TASK-08-001: 编写 PRD 文档

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 产品团队
  • 状态: ✅ 已完成
  • 依赖: 无

任务描述:

  1. 编写产品需求文档
  2. 定义功能需求和验收标准
  3. 评审并修订

验收标准:

  • PRD 文档完整
  • 需求清晰明确
  • 通过评审

完成日期: 2026-02-26


TASK-08-002: 编写 FD 文档

  • 优先级: P0
  • 预计工时: 6 小时
  • 负责人: 开发团队
  • 状态: ✅ 已完成
  • 依赖: TASK-08-001

任务描述:

  1. 编写功能设计文档
  2. 详细设计 26 个子功能
  3. 定义验收标准

验收标准:

  • FD 文档完整
  • 功能设计详细
  • 验收标准明确

完成日期: 2026-02-26


TASK-08-003: 编写 TDD 文档

  • 优先级: P0
  • 预计工时: 8 小时
  • 负责人: 开发团队
  • 状态: ✅ 已完成
  • 依赖: TASK-08-002

任务描述:

  1. 编写技术设计文档
  2. 设计集成方案
  3. 定义性能优化策略

验收标准:

  • TDD 文档完整
  • 技术方案可行
  • 性能策略明确

完成日期: 2026-02-26


TASK-08-004: 编写 TD 文档

  • 优先级: P0
  • 预计工时: 8 小时
  • 负责人: 测试团队
  • 状态: ✅ 已完成
  • 依赖: TASK-08-003

任务描述:

  1. 编写测试设计文档
  2. 设计 30 个测试用例
  3. 定义测试策略和执行计划

验收标准:

  • TD 文档完整
  • 测试用例覆盖全面
  • 测试策略清晰

完成日期: 2026-02-26


TASK-08-005: 编写用户文档

  • 优先级: P2
  • 预计工时: 3 小时
  • 负责人: 产品团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-008

任务描述:

  1. 编写用户使用指南
  2. 添加功能截图和动图
  3. 编写常见问题解答(FAQ)

验收标准:

  • 用户文档清晰易懂
  • 包含所有主要功能说明
  • 有截图和示例

TASK-08-006: 编写开发者文档

  • 优先级: P2
  • 预计工时: 2 小时
  • 负责人: 开发团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-008

任务描述:

  1. 更新 README.md
  2. 添加 API 文档注释
  3. 编写代码示例

验收标准:

  • README 包含布局系统说明
  • 代码有完整注释
  • 有使用示例

TASK-08-007: 部署到测试环境

  • 优先级: P0
  • 预计工时: 2 小时
  • 负责人: 运维团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-07-008

任务描述:

  1. 构建生产版本
  2. 部署到测试环境
  3. 验证部署成功
  4. 冒烟测试

验收标准:

  • 部署成功
  • 测试环境可访问
  • 核心功能正常

TASK-08-008: 验收测试

  • 优先级: P0
  • 预计工时: 4 小时
  • 负责人: 产品团队
  • 状态: ⏳ 待开始
  • 依赖: TASK-08-007

任务描述:

  1. 产品经理进行验收测试
  2. 验证所有 PRD 需求
  3. 确认验收标准达成
  4. 签署验收报告

验收标准:

  • 所有 P0 需求通过验收
  • 所有 P1 需求通过验收
  • 验收报告已签署

十、风险管理

10.1 技术风险

风险 影响 概率 应对措施 负责人
CSS Grid 兼容性问题 高 低 提前测试,准备 flexbox 降级方案 开发团队
拖动性能不达标 中 中 使用 requestAnimationFrame 优化 开发团队
localStorage 不可用 低 低 降级到默认布局 开发团队
现有功能受影响 高 中 充分回归测试 测试团队

10.2 进度风险

风险 影响 概率 应对措施 负责人
开发时间超期 中 中 优先完成 P0 功能,P2 功能可延后 项目经理
测试时间不足 高 中 提前准备测试环境和用例 测试团队
Bug 修复时间长 中 低 预留 buffer 时间 开发团队

10.3 资源风险

风险 影响 概率 责人
人员不足 高 低 提前协调资源 项目经理
技能不匹配 中 低 提供技术培训 技术负责人

十一、里程碑

里程碑 预计完成日期 状态 备注
M1: 文档完成 2026-02-26 ✅ 已完成 PRD、FD、TDD、TD 已完成
M2: 基础布局改造 2026-02-26 ✅ 已完成 阶段一
M3: 拖动功能完成 2026-02-26 ✅ 已完成 阶段二
M4: 折叠功能完成 2026-02-26 ✅ 已完成 阶段三
M5: 状态持久化完成 2026-02-26 ✅ 已完成 阶段四
M6: 恢复默认布局完成 2026-02-27 ✅ 已完成 阶段五
M7: 窗口适配与键盘支持完成 2026-02-27 ✅ 已完成 阶段六
M8: 测试完成 2026-03-14 ⏳ 待开始 阶段七
M9: 部署到测试环境 2026-05 ⏳ 待开始 阶段八
M10: 验收通过 2026-03-15 ⏳ 待开始 项目完成

十二、任务分配建议

12.1 开发团队(2 人)

开发人员 A:

  • 负责阶段一、二、四(基础布局、拖动、状态持久化)
  • 负责性能优化
  • 预计工时:30-35 人天

开发人员 B:

  • 负责阶段三、五、六(折叠、恢复、窗口适配)
  • 负责可访问性实现
  • 预计工时:25-30 人天

12.2 测试团队(1 人)

测试人员:

  • 负责编写和执行所有测试
  • 负责 bug 跟踪和验证
  • 预计工时:15-20 人天

12.3 产品团队(1 人)

产品经理:

  • 负责需求澄清和验收
  • 负责用户文档编写
  • 预计工时:5-8 人天

十三、每日站会议题

  1. 昨天完成了什么任务?
  2. 今天计划完成什么任务?
  3. 遇到了什么阻碍?
  4. 需要什么帮助?
  5. 进度是否符合预期?

十四、变更管理

14.1 变更流程

  1. 提出变更请求
  2. 评估变更影响(时间、资源、风险)
  3. 项目经理审批
  4. 更新 TODO 文档
  5. 通知相关人员

14.2 变更记录

日期 变更内容 影响 审批人 状态
2026-02-26 初始版本创建 - 项目经理 ✅ 已批准

文档结束

最后更新: 2026-02-27 下次更新: 每日更新进度