ios-projects/docs/system-map/ios/review/04-功能差异清单.md

141 lines
7.9 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.

# 04 功能差异清单
> 将独立功能基线review/02-独立功能基线.md与已有文档02-iOS页面功能总表.md逐项比对。
---
## 一、功能遗漏清单
### 遗漏 1学习主页 selfTestSmallCard → QuizListView (kbId="")
- **文档覆盖:** 文档记录"进行自我测试"功能(点击主操作卡片或测试卡片)
- **遗漏:** 文档未说明 smallCard 跳转 QuizListView 时 knowledgeBaseId 为空字符串,可能导致不正确的行为
- **应补到:** 02-iOS页面功能总表.md → 学习 Tab → "进行自我测试"
- **建议补充说明:** "注:辅助卡片自测入口使用空 knowledgeBaseId可能在 quizList 中显示空列表"
### 遗漏 2GoalSettingDetailView 每日学习时长不持久化
- **文档覆盖:** 文档 5.4 节记录 GoalSettingDetailView 的"修改每日时长"功能为"已完成"
- **实际:** dailyMins 只保存在本地 @State 变量,未通过 API 持久化
- **应补到:** 02-iOS页面功能总表.md → 我的 Tab → "修改每日时长"
- **建议状态修正:** 已完成为 → 部分完成UI 完成,数据不持久化)
### 遗漏 3RecallTestPage 功能未记录
- **文档覆盖:** 未记录
- **实际:** RecallTestPage 代码存在Features/AI/RecallTestPage.swift
- 查看回忆测试题(硬编码)
- 输入回答
- 提交获取 AI 反馈(→ AIFeedbackPageView
- **建议补到:** 02-iOS页面功能总表.md → AI 辅助功能 → 新增"回忆测试页"行
- **建议状态:** 占位实现(无导航入口,题目硬编码)
### 遗漏 4AIChatPage 置顶/取消置顶会话
- **文档覆盖:** 文档记录"删除会话"和"归档会话"
- **遗漏:** 未记录置顶/取消置顶功能swipeActions(edge: .leading)
- **应补到:** 02-iOS页面功能总表.md → AI 辅助功能 → AI 对话页
- **建议新增行:** "置顶/取消置顶会话 | 左滑→置顶/取消置顶 | 切换会话置顶状态"
### 遗漏 5MaterialReaderView 解析触发 + 轮询
- **文档覆盖:** 文档在"阅读 Markdown 内容"等行标注已完成
- **遗漏:** 文档未将"触发 AI 知识提取(解析)"作为独立功能记录,工具栏 brain 按钮触发 60×2s 轮询是一个重要功能
- **建议补到:** 02-iOS页面功能总表.md → 资料阅读 → 新增行
- **建议新增行:** "触发知识提取 | 点击工具栏大脑按钮 | 提交解析任务轮询进度60×2s | 部分完成 | 轮询使用硬编码次数和间隔"
### 遗漏 6AIHomeView 的全部功能(虽已废弃)
- **文档覆盖:** 文档记录了 AIHomeView 为占位实现/已废弃,但功能总表中将其合并入一行"AI 首页(已废弃)"
- **遗漏:** 该页面内有具体的子功能(服务器状态检查、快速操作入口、每日思考卡片、推荐问题列表),但功能总表未展开
- **评估:** 这对于已废弃页面是合理的简化处理,不做强制修正要求
---
## 二、功能状态误判
| 文档功能 | 文档状态 | 实际状态 | 判定依据 |
|---------|---------|---------|---------|
| 学习会话-专注计时学习 | 已完成 | 暂未确认 | 本地计时完成,但未发现调用 LearningSessionService API 保存学习记录 |
| 学习主页-开始今日复习 | 部分完成 | 部分完成 | 入口正常ReviewCardView 为占位实现。文档正确标记。 |
| 学习主页-查看完整分析 | 已完成 | 已完成 | 入口存在,跳转到 ActiveRecallView本身为占位实现。**文档正确标记了跳转目标的状态,但入口本身已完成。** |
| 学习主页-探索公开知识库 | 已完成 | 已完成 | 切换到 library Tab |
| 分析页-查看掌握度趋势图 | 部分完成 | 占位实现 | **应为占位实现**ZXChartView 使用完全硬编码的 7 天数据 `[("一", 0.62)...]`ViewModel 的 trend 数据被忽略 |
| 分析页-查看每周学习活跃 | 部分完成 | 占位实现 | **应为占位实现**ZXWeekBarChart 使用完全硬编码数据ViewModel 的 heatmap 数据被忽略 |
| 分析页-查看 AI 综合分析 | 已完成 | 已完成 | 动态拼接 API 数据,非 AI 生成 |
| 分析页-查看全部薄弱知识点 | 已完成 | 已完成 | 跳转到 WeakPointsPage本身为占位实现 |
| 设置页-切换导入完成通知 | 暂未确认 | 部分完成 | 三个通知开关全部绑定到同一个 $reviewReminder 变量,是明确的 **bug** 而非待确认 |
| 设置页-切换系统通知 | 暂未确认 | 部分完成 | 同上 |
| 设置页-切换 iCloud 同步 | 暂未确认 | 暂未确认 | 仅改变本地 @State,无 API 调用 |
| GoalSettingDetailView-修改每日时长 | 已完成 | 部分完成 | dailyMins 不持久化 |
| 每日思考页-提交回答 | 占位实现 | 占位实现 | 状态一致,但 submitted 变量 bug 未记录 |
---
## 三、自动触发功能遗漏
文档功能总表主要记录了用户主动触发的功能,以下自动触发功能在文档中有部分遗漏:
| 自动功能 | 文档覆盖 | 建议 |
|---------|---------|------|
| MaterialReaderView 进入时自动恢复阅读位置 | 已覆盖("恢复阅读位置"行) | — |
| MaterialReaderView 前后台切换暂停/恢复会话 | 已覆盖 | — |
| MaterialReaderView 自动从 COS 下载文件 | 未明确记录 | 建议在"阅读 Markdown 内容"备注中补充 |
| MaterialReaderView COS 过期 URL 重取 | 未明确记录 | 建议补充 |
| 学习主页优先级自动计算 | 已覆盖 | — |
| StudyHomeViewModel 错误状态永不可达 | 未记录 | 建议在备注中说明 ViewModel 的 try? 吞错行为 |
---
## 四、搜索、筛选、排序、分页等辅助功能检查
| 功能 | 页面 | 文档覆盖 | 备注 |
|------|------|---------|------|
| 知识库搜索 | LibraryHomeView | 已覆盖(但标为部分完成) | 搜索页搜索逻辑未实现 |
| 知识库分类筛选 | LibraryHomeView | 已覆盖 | 4 个分类 chips |
| 知识库分页加载 | LibraryHomeView | 已覆盖 | 无限滚动 |
| 知识点排序 | LibraryDetailPage | 已覆盖 | 4 种排序 |
| 知识点批量选择 | LibraryDetailPage | 已覆盖 | |
| 会话搜索 | AIChatPage Sheet | 已覆盖 | |
| 通知列表无筛选 | NotificationListView | 未记录筛选 | 无筛选功能,合理 |
| 测验列表无筛选 | QuizListView | 未记录筛选 | 无筛选功能,合理 |
---
## 五、API 调用存在但无页面入口
### WaitlistService
- **API 端点:** /waitlist (POST), /waitlist/stats (GET)
- **代码存在:** APIService.swift 中 WaitlistService 类完整定义
- **页面入口:** 无任何 View 或 ViewModel 调用 WaitlistService
- **文档记录:** 文档未提及 waitlist 功能
- **建议:** 在系统地图中标注"Waitlist API 已就绪但 C 端无入口"(或在总览中标注为后端预留能力)
### UserService.requestAccountDeletion / cancelDeletion
- **API 端点:** /users/me/deletion-request (POST/DELETE)
- **页面入口:** 无任何页面调用这两个方法
- **文档记录:** 未提及注销账号功能
- **建议:** 补充到设置页的未完成功能列表
### UserService.listDevices / removeDevice
- **API 端点:** /users/me/devices (GET/DELETE)
- **页面入口:** 设置页有"登录设备管理"行但无导航目标(→ Route.settings 自引用)
- **建议:** 标注为"API 已就绪,设备管理页面未实现"
---
## 六、总体评估
| 评估维度 | 结果 |
|---------|------|
| 功能总表覆盖率 | 约 95%,遗漏约 6 个功能点 |
| 功能状态准确率 | 约 90%7 个功能的状态需要修正 |
| 自动触发功能覆盖 | 基本完整2 处建议补充 |
| 辅助功能覆盖 | 完整 |
| API-页面映射完整性 | 3 个 API 有端点无页面入口需标注 |
**结论:功能总表文档覆盖较全面,主要问题是若干功能的状态标记偏乐观(部分图表数据被标记为"部分完成"但实际为"占位实现"),以及少数自动触发功能和 API-页面不一致未记录。**