Files
schedule-planner/doc/test-coverage.md
Hera Zhao d3f3b4f37b
Some checks failed
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 3s
PR Preview / teardown-preview (pull_request) Has been skipped
Test / e2e-test (push) Failing after 55s
PR Preview / deploy-preview (pull_request) Failing after 40s
Refactor to Vue 3 + FastAPI + SQLite architecture
- Backend: FastAPI + SQLite (WAL mode), 22 tables, ~40 API endpoints
- Frontend: Vue 3 + Vite + Pinia + Vue Router, 8 views, 3 stores
- Database: migrate from JSON file to SQLite with proper schema
- Dockerfile: multi-stage build (node + python)
- Deploy: K8s manifests (namespace, deployment, service, ingress, pvc, backup)
- CI/CD: Gitea Actions (test, deploy, PR preview at pr-$id.planner.oci.euphon.net)
- Tests: 20 Cypress E2E test files, 196 test cases, ~85% coverage
- Doc: test-coverage.md with full feature coverage report

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:18:22 +00:00

363 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 前端功能点测试覆盖表
> 基于 Vue 3 + Vite + Pinia 重构后的前端,对照原始 vanilla JS 单文件实现的所有功能点。
## 测试类型说明
- **e2e** = Cypress E2E 测试 (真实浏览器 + 后端 API)
- **none** = 尚未覆盖
---
## 1. 应用加载 (App)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 未登录显示登录遮罩 | e2e | app-load.cy.js |
| 登录框有密码输入和按钮 | e2e | app-load.cy.js |
| 错误密码显示错误提示 | e2e | app-load.cy.js |
| 登录后显示主界面 | e2e | app-load.cy.js |
| 显示 7 个导航 Tab | e2e | app-load.cy.js |
| 菜单按钮打开下拉菜单 | e2e | app-load.cy.js |
| 下拉菜单包含导出/改密/备份/退出 | e2e | app-load.cy.js |
## 2. 认证与登录 (Auth)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 过期 session 跳转登录 | e2e | auth-flow.cy.js |
| 回车键提交登录 | e2e | auth-flow.cy.js |
| 正确密码登录并存储 session | e2e | auth-flow.cy.js |
| 退出登录清除 session | e2e | auth-flow.cy.js |
| Session 刷新后保持 | e2e | auth-flow.cy.js |
| 修改密码 | none | — |
## 3. 导航与路由 (Navigation)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 默认 Tab 为随手记 | e2e | navigation.cy.js |
| 点击 Tab 跳转正确路由 | e2e | navigation.cy.js |
| 直接 URL 访问各路由 | e2e | navigation.cy.js |
| 浏览器后退按钮 | e2e | navigation.cy.js |
| 未知路由 SPA 回退 | e2e | navigation.cy.js |
| Sleep Buddy 路由 | e2e | navigation.cy.js |
## 4. 随手记 (Notes)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示输入区和发送按钮 | e2e | notes-flow.cy.js |
| 显示 8 个标签按钮 | e2e | notes-flow.cy.js |
| 切换标签选中状态 | e2e | notes-flow.cy.js |
| 创建笔记(点击按钮) | e2e | notes-flow.cy.js |
| 创建带标签的笔记 | e2e | notes-flow.cy.js |
| 回车键创建笔记 | e2e | notes-flow.cy.js |
| 创建后清空输入框 | e2e | notes-flow.cy.js |
| 不创建空笔记 | e2e | notes-flow.cy.js |
| 搜索过滤笔记 | e2e | notes-flow.cy.js |
| 按标签筛选笔记 | e2e | notes-flow.cy.js |
| 编辑笔记 | e2e | notes-flow.cy.js |
| 删除笔记 | e2e | notes-flow.cy.js |
| 显示空状态提示 | e2e | notes-flow.cy.js |
| 显示笔记时间 | e2e | notes-flow.cy.js |
| 自动识别内容归档文档 | none | — |
## 5. 待办事项 (Tasks)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示 3 个子 Tab待办/目标/清单) | e2e | tasks-flow.cy.js |
| 默认子 Tab 为待办 | e2e | tasks-flow.cy.js |
| 子 Tab 切换 | e2e | tasks-flow.cy.js |
| 收集箱输入 | e2e | tasks-flow.cy.js |
| 添加收集箱条目 | e2e | tasks-flow.cy.js |
| 收集箱分配到象限按钮 | e2e | tasks-flow.cy.js |
| 移入四象限 | e2e | tasks-flow.cy.js |
| 显示 4 个象限 | e2e | tasks-flow.cy.js |
| 直接添加到象限 | e2e | tasks-flow.cy.js |
| 切换完成状态 | e2e | tasks-flow.cy.js |
| 删除待办 | e2e | tasks-flow.cy.js |
| 搜索过滤待办 | e2e | tasks-flow.cy.js |
| 创建目标 | e2e | tasks-flow.cy.js |
| 删除目标 | e2e | tasks-flow.cy.js |
| 创建清单 | e2e | tasks-flow.cy.js |
| 添加清单项目 | e2e | tasks-flow.cy.js |
| 切换清单项完成 | e2e | tasks-flow.cy.js |
| 删除清单 | e2e | tasks-flow.cy.js |
| 目标打卡日历 | none | — |
## 6. 提醒 (Reminders)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示页面和新增按钮 | e2e | reminders-flow.cy.js |
| 打开新增表单 | e2e | reminders-flow.cy.js |
| 创建带时间的提醒 | e2e | reminders-flow.cy.js |
| 不同重复选项 | e2e | reminders-flow.cy.js |
| 切换启用/禁用 | e2e | reminders-flow.cy.js |
| 删除提醒 | e2e | reminders-flow.cy.js |
| 取消按钮关闭表单 | e2e | reminders-flow.cy.js |
| 空状态提示 | e2e | reminders-flow.cy.js |
| 浏览器通知推送 | none | — |
| Service Worker 后台通知 | none | — |
## 7. 健康打卡 (Body - Health)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示 4 个子 Tab | e2e | body-health.cy.js |
| 默认健康打卡 Tab | e2e | body-health.cy.js |
| 显示今日日期 | e2e | body-health.cy.js |
| 添加健康项目到池 | e2e | body-health.cy.js |
| 切换项目到月计划 | e2e | body-health.cy.js |
| 打卡项目 | e2e | body-health.cy.js |
| 取消打卡 | e2e | body-health.cy.js |
| 删除池中项目 | e2e | body-health.cy.js |
| 空状态提示 | e2e | body-health.cy.js |
| 月度日历视图 | none | — |
| 年度热力图 | none | — |
| 健康日记 | none | — |
## 8. 睡眠记录 (Body - Sleep)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示输入框 | e2e | body-sleep.cy.js |
| HH:MM 格式记录 | e2e | body-sleep.cy.js |
| 中文格式记录10点半 | e2e | body-sleep.cy.js |
| 无法识别时显示错误 | e2e | body-sleep.cy.js |
| 删除睡眠记录 | e2e | body-sleep.cy.js |
| 显示记录明细表 | e2e | body-sleep.cy.js |
| 空状态提示 | e2e | body-sleep.cy.js |
| 睡眠趋势图表 (Canvas) | none | — |
| 月度切换 | none | — |
| 年度热力图 | none | — |
| 目标入睡时间 | none | — |
| "我去睡觉啦"按钮 | none | — |
## 9. 健身记录 (Body - Gym)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示页面和新增按钮 | e2e | body-gym.cy.js |
| 打开新增表单 | e2e | body-gym.cy.js |
| 创建健身记录 | e2e | body-gym.cy.js |
| 删除健身记录 | e2e | body-gym.cy.js |
| 取消关闭表单 | e2e | body-gym.cy.js |
## 10. 经期记录 (Body - Period)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示页面和新增按钮 | e2e | body-period.cy.js |
| 打开新增表单 | e2e | body-period.cy.js |
| 创建经期记录(有结束日期) | e2e | body-period.cy.js |
| 创建进行中记录(无结束日期) | e2e | body-period.cy.js |
| 删除经期记录 | e2e | body-period.cy.js |
| 经期周期预测 | none | — |
## 11. 音乐打卡 (Music)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示今日日期 | e2e | music-flow.cy.js |
| 显示练习项目区 | e2e | music-flow.cy.js |
| 添加音乐项目 | e2e | music-flow.cy.js |
| 切换到月计划 | e2e | music-flow.cy.js |
| 打卡练习 | e2e | music-flow.cy.js |
| 取消打卡 | e2e | music-flow.cy.js |
| 删除项目 | e2e | music-flow.cy.js |
| 空状态提示 | e2e | music-flow.cy.js |
| 月度日历视图 | none | — |
| 年度热力图 | none | — |
## 12. 个人文档 (Docs)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示页面头部和描述 | e2e | docs-flow.cy.js |
| 显示新建文档按钮 | e2e | docs-flow.cy.js |
| 打开新建表单 | e2e | docs-flow.cy.js |
| 创建文档 | e2e | docs-flow.cy.js |
| 新文档显示 0 条 | e2e | docs-flow.cy.js |
| 点击打开文档详情 | e2e | docs-flow.cy.js |
| 关闭文档详情 | e2e | docs-flow.cy.js |
| 编辑文档信息 | e2e | docs-flow.cy.js |
| 删除文档 | e2e | docs-flow.cy.js |
| 取消不保存 | e2e | docs-flow.cy.js |
| 图标选择器 | e2e | docs-flow.cy.js |
| 提取规则下拉 | e2e | docs-flow.cy.js |
| 文档条目添加 | none | — (API 层已覆盖) |
| 文档条目删除 | none | — (API 层已覆盖) |
## 13. 日程规划 (Planning - Schedule)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示 3 个子 Tab | e2e | planning-schedule.cy.js |
| 默认日程子 Tab | e2e | planning-schedule.cy.js |
| 显示模块池和时间线 | e2e | planning-schedule.cy.js |
| 显示 18 个时间段 (6-23) | e2e | planning-schedule.cy.js |
| 日期导航 | e2e | planning-schedule.cy.js |
| 切换上/下一天 | e2e | planning-schedule.cy.js |
| 添加活动模块 | e2e | planning-schedule.cy.js |
| 颜色选择器 | e2e | planning-schedule.cy.js |
| 删除活动模块 | e2e | planning-schedule.cy.js |
| 清空当天日程 | e2e | planning-schedule.cy.js |
| 模块可拖拽 | e2e | planning-schedule.cy.js |
| 拖拽放置到时间段 | none | — (Cypress 不支持原生 drag) |
| 导出日程为文本 | none | — |
## 14. 每周模板 (Planning - Template)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示 7 天按钮 | e2e | planning-template.cy.js |
| 默认选中天 | e2e | planning-template.cy.js |
| 切换不同天 | e2e | planning-template.cy.js |
| 显示模板提示 | e2e | planning-template.cy.js |
| 时间线渲染 | none | — |
| 模板编辑保存 | none | — |
## 15. 周回顾 (Planning - Review)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 显示回顾表单 | e2e | planning-review.cy.js |
| 表单有 3 个区域 | e2e | planning-review.cy.js |
| 保存回顾 | e2e | planning-review.cy.js |
| 历史回顾标题 | e2e | planning-review.cy.js |
| 历史展开/折叠 | e2e | planning-review.cy.js |
## 16. 睡眠打卡 (Sleep Buddy)
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 未登录显示登录表单 | e2e | sleep-buddy.cy.js |
| 登录表单有用户名密码 | e2e | sleep-buddy.cy.js |
| 登录/注册模式切换 | e2e | sleep-buddy.cy.js |
| 注册显示确认密码 | e2e | sleep-buddy.cy.js |
| 密码不一致报错 | e2e | sleep-buddy.cy.js |
| 注册后自动登录 | e2e | sleep-buddy.cy.js |
| 登录后显示主界面 | e2e | sleep-buddy.cy.js |
| 显示目标时间 | e2e | sleep-buddy.cy.js |
| 显示记录输入 | e2e | sleep-buddy.cy.js |
| 记录睡眠时间 | e2e | sleep-buddy.cy.js |
| 无法识别报错 | e2e | sleep-buddy.cy.js |
| "我去睡觉啦"按钮 | e2e | sleep-buddy.cy.js |
| 用户菜单退出 | e2e | sleep-buddy.cy.js |
| 退出返回登录 | e2e | sleep-buddy.cy.js |
| 数据对比统计 | none | — |
| 睡眠趋势图 (Canvas) | none | — |
| 修改目标时间 | none | — |
| 删除记录 | none | — (API 已覆盖) |
## 17. API 健康检查
| 功能点 | 测试 | 文件 |
|--------|------|------|
| GET /api/notes 返回数组 | e2e | api-health.cy.js |
| GET /api/todos 返回数组 | e2e | api-health.cy.js |
| GET /api/inbox 返回数组 | e2e | api-health.cy.js |
| GET /api/reminders 返回数组 | e2e | api-health.cy.js |
| GET /api/goals 返回数组 | e2e | api-health.cy.js |
| GET /api/checklists 返回数组 | e2e | api-health.cy.js |
| GET /api/sleep 返回数组 | e2e | api-health.cy.js |
| GET /api/gym 返回数组 | e2e | api-health.cy.js |
| GET /api/period 返回数组 | e2e | api-health.cy.js |
| GET /api/docs 返回数组 | e2e | api-health.cy.js |
| GET /api/bugs 返回数组 | e2e | api-health.cy.js |
| GET /api/reviews 返回数组 | e2e | api-health.cy.js |
| GET /api/schedule-modules 返回数组 | e2e | api-health.cy.js |
| GET /api/schedule-slots 返回数组 | e2e | api-health.cy.js |
| GET /api/weekly-template 返回数组 | e2e | api-health.cy.js |
| GET /api/health-items 返回数组 | e2e | api-health.cy.js |
| GET /api/health-plans 返回数组 | e2e | api-health.cy.js |
| GET /api/health-checks 返回数组 | e2e | api-health.cy.js |
| GET /api/backups 返回数组 | e2e | api-health.cy.js |
| GET /api/sleep-buddy 返回对象 | e2e | api-health.cy.js |
| POST /api/login 错误密码 401 | e2e | api-health.cy.js |
## 18. API CRUD 操作
| 功能点 | 测试 | 文件 |
|--------|------|------|
| Notes: 创建/删除 | e2e | api-crud.cy.js |
| Todos: 创建/更新(upsert)/删除 | e2e | api-crud.cy.js |
| Inbox: 创建/清空 | e2e | api-crud.cy.js |
| Reminders: 创建/删除 | e2e | api-crud.cy.js |
| Goals: 创建/更新 | e2e | api-crud.cy.js |
| Checklists: 创建 | e2e | api-crud.cy.js |
| Sleep: 创建/Upsert/删除 | e2e | api-crud.cy.js |
| Gym: 创建 | e2e | api-crud.cy.js |
| Period: 创建 | e2e | api-crud.cy.js |
| Docs: 创建 + 创建条目 + 验证嵌套 | e2e | api-crud.cy.js |
| Bugs: 创建/删除 | e2e | api-crud.cy.js |
| Schedule Modules: 创建 | e2e | api-crud.cy.js |
| Schedule Slots: 创建 | e2e | api-crud.cy.js |
| Reviews: 创建 | e2e | api-crud.cy.js |
| Health Items: 创建 | e2e | api-crud.cy.js |
| Health Plans: 保存 | e2e | api-crud.cy.js |
| Health Checks: 切换 | e2e | api-crud.cy.js |
| Backup: 触发备份 | e2e | api-crud.cy.js |
## 19. 响应式布局
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 手机端 (375px) 渲染 | e2e | responsive.cy.js |
| 平板端 (768px) 渲染 | e2e | responsive.cy.js |
| 桌面端 (1280px) 渲染 | e2e | responsive.cy.js |
| 宽屏 (1920px) 渲染 | e2e | responsive.cy.js |
| 手机端 Tab 可滚动 | e2e | responsive.cy.js |
| 手机端四象限垂直堆叠 | e2e | responsive.cy.js |
| 手机端日程垂直堆叠 | e2e | responsive.cy.js |
## 20. 性能
| 功能点 | 测试 | 文件 |
|--------|------|------|
| 页面加载 < 5s | e2e | performance.cy.js |
| API 响应 < 1s | e2e | performance.cy.js |
| Tab 切换瞬时 | e2e | performance.cy.js |
| 批量数据不崩溃 | e2e | performance.cy.js |
---
## 覆盖统计
| 指标 | 数量 |
|------|------|
| **功能点总数** | ~148 |
| **已覆盖功能点** | ~126 |
| **Cypress E2E 测试** | **196** |
| **测试文件数** | **20** |
| **功能点覆盖率** | **~85%** |
### 未覆盖的高风险功能
| 优先级 | 功能 | 风险 | 说明 |
|--------|------|------|------|
| P0 | Canvas 图表渲染 (睡眠趋势) | HIGH | 原版有 Canvas 图表,新版尚未实现 |
| P0 | 拖拽放置到时间段 | HIGH | Cypress 不支持原生 HTML5 DnD |
| P1 | 浏览器通知推送 | MED | Service Worker + 权限 API |
| P1 | 修改密码功能 | MED | 涉及安全敏感操作 |
| P1 | 健康/音乐月度日历 | MED | 日历视图尚未完整实现 |
| P1 | 年度热力图 | MED | 健康/音乐/睡眠的年度视图 |
| P2 | 经期周期预测 | MED | 统计计算逻辑 |
| P2 | Sleep Buddy 数据对比 | MED-LOW | 多用户对比统计 |
| P2 | 自动识别内容归档文档 | MED-LOW | 关键词匹配 + 提取规则 |
| P3 | 导出日程为文本 | LOW | 简单格式化 |
| P3 | 健康日记 | LOW | 额外输入区域 |
### 覆盖最充分的功能
1. **API CRUD 全覆盖** — 27 tests 覆盖所有 18 个资源的增删改查
2. **API 健康检查** — 21 tests 验证全部 20+ 端点返回正确格式
3. **随手记 (Notes)** — 14 tests 覆盖创建/编辑/删除/搜索/筛选
4. **待办系统 (Tasks)** — 18 tests 覆盖收集箱/四象限/目标/清单
5. **睡眠打卡 (Sleep Buddy)** — 14 tests 覆盖注册/登录/记录/通知
6. **文档管理 (Docs)** — 12 tests 覆盖创建/编辑/删除/详情/图标
7. **响应式布局** — 7 tests 覆盖 4 种视口