190 lines
10 KiB
Markdown
190 lines
10 KiB
Markdown
# 03 页面差异清单
|
||
|
||
> 将独立页面基线(review/01-独立页面基线.md)与已有文档(01-iOS页面地图.md)逐项比对。
|
||
|
||
---
|
||
|
||
## 一、文档已覆盖且正确的页面(一致项)
|
||
|
||
以下页面在文档中描述正确,与代码实现一致:
|
||
|
||
| 文档章节 | 文档页面名 | 代码类型 | 判定 |
|
||
|---------|-----------|---------|------|
|
||
| 1.1 | 启动页 (SplashScreen) | SplashScreen | 一致 |
|
||
| 1.2 | 欢迎页 (WelcomePage) | WelcomePage | 一致 |
|
||
| 1.3 | 登录页 (LoginPage) | LoginPage | 一致 |
|
||
| 1.4 | 账号状态页 (AccountStatusView) | AccountStatusView | 一致 |
|
||
| 1.5 | 引导页 (OnboardingPage) | OnboardingPage | 一致 |
|
||
| 1.6 | 目标设置页 (GoalSetupPage) | GoalSetupPage | 一致 |
|
||
| 2.1 | 学习主页 (StudyHomeView) | StudyHomeView | 一致 |
|
||
| 2.2 | 学习会话页 (LearningSessionView) | LearningSessionView | 一致 |
|
||
| 2.3 | 复习卡片页 (ReviewCardView) | ReviewCardView | 一致 |
|
||
| 2.4 | 主动回忆页 (ActiveRecallView) | ActiveRecallView | 一致 |
|
||
| 3.1 | 知识库首页 (LibraryHomeView) | LibraryHomeView | 一致 |
|
||
| 3.2 | 知识库搜索页 (LibrarySearchView) | LibrarySearchView | 一致 |
|
||
| 3.3 | 知识库详情页 (LibraryDetailPage) | LibraryDetailPage | 一致 |
|
||
| 3.4 | 创建知识库页 (CreateLibraryPage) | CreateLibraryPage | 一致 |
|
||
| 3.5 | 添加知识点页 (AddKnowledgePage) | AddKnowledgePage | 一致 |
|
||
| 3.6 | 知识点详情页 (KnowledgeDetailPage) | KnowledgeDetailPage | 一致 |
|
||
| 3.7 | 编辑知识点页 (EditKnowledgePage) | EditKnowledgePage | 一致 |
|
||
| 3.8 | 导入资料页 (ImportPage) | ImportPage | 一致 |
|
||
| 3.9 | 导入候选审核页 (ImportReviewPage) | ImportReviewPage | 一致 |
|
||
| 3.10 | 发现公开库页 (DiscoverView) | DiscoverView | 一致 |
|
||
| 3.11 | 文件夹管理 (FolderManageView) | FolderManageView | 一致 |
|
||
| 4.1 | 学习分析页 (AnalysisHomeView) | AnalysisHomeView | 一致 |
|
||
| 5.1 | 个人中心页 (ProfileView) | ProfileView | 一致 |
|
||
| 5.2 | 编辑资料页 (EditProfilePage) | EditProfilePage | 一致 |
|
||
| 5.3 | 设置页 (SettingsView) | SettingsView | 一致 |
|
||
| 5.4 | 学习目标设置页 (GoalSettingDetailView) | GoalSettingDetailView | 一致 |
|
||
| 5.5 | 学习方法偏好页 (MethodPreferenceView) | MethodPreferenceView | 一致 |
|
||
| 5.6 | 通知列表页 (NotificationListView) | NotificationListView | 一致 |
|
||
| 5.7 | 帮助与反馈页 (FeedbackFormView) | FeedbackFormView | 一致 |
|
||
| 6.1 | AI 对话页 (AIChatPage) | AIChatPage | 一致 |
|
||
| 6.2 | 每日思考页 (DailyThinkingPage) | DailyThinkingPage | 一致 |
|
||
| 6.3 | AI 反馈页 (AIFeedbackPageView) | AIFeedbackPageView | 一致 |
|
||
| 6.4 | 薄弱知识点页 (WeakPointsPage) | WeakPointsPage | 一致 |
|
||
| 6.5 | AI 首页 (AIHomeView) | AIHomeView | 一致(正确标记为废弃) |
|
||
| 7.1 | 测验列表页 (QuizListView) | QuizListView | 一致 |
|
||
| 7.2 | 测验作答页 (QuizTakerView) | QuizTakerView | 一致 |
|
||
| 7.3 | 测验结果页 (QuizResultView) | QuizResultView | 一致 |
|
||
| 8.1 | 资料阅读页 (MaterialReaderView) | MaterialReaderView | 一致 |
|
||
| 8.2 | 资料详情页 (MaterialDetailView) | MaterialDetailView | 一致 |
|
||
| 9.1 | 快速笔记 (QuickNoteSheet) | QuickNoteSheet | 一致 |
|
||
| 9.2 | 系统预览 (QuickLook) | QuickLookPreview | 一致 |
|
||
| 9.3 | AI 会话列表 Sheet | AIChatPage 内 Sheet | 一致 |
|
||
| 9.4 | 封面选择 Sheet | CreateLibraryPage 内 Sheet | 一致 |
|
||
| 9.5 | 链接导入弹窗 | ImportPage 内 Alert | 一致 |
|
||
| 9.6 | 各类确认弹窗 | 多个 Alert/ConfirmationDialog | 一致 |
|
||
|
||
**一致页面数:43 个(含 6 个 Sheet/弹窗)**
|
||
|
||
---
|
||
|
||
## 二、代码存在但文档遗漏的页面
|
||
|
||
### 遗漏 1:RecallTestPage
|
||
|
||
- **代码位置:** `Features/AI/RecallTestPage.swift`
|
||
- **页面作用:** 独立的回忆测试页面,用户输入对特定知识点的理解,提交后跳转 AI 反馈页。
|
||
- **入口:** 代码中有 Route 定义但**未被任何 NavigationLink 引用**。Route 枚举中有 `aiFeedback` case,但未发现 `recallTest` case。
|
||
- **实际状态:** 代码存在但无导航入口(类似 AIHomeView 的情况)。
|
||
- **应出现在:** 01-iOS页面地图.md → 第六章 AI 辅助功能
|
||
- **建议补到位置:** 新增 6.6 节"回忆测试页(RecallTestPage)"
|
||
- **建议状态:** 占位实现(无导航入口 + 题目硬编码)
|
||
|
||
### 遗漏 2:Route.studyHome 独立页面
|
||
|
||
- **代码位置:** Route.swift `case studyHome`
|
||
- **说明:** Route 中定义了 `studyHome` 路由目标(指向 StudyHomeView(selectedTab: .constant("study"))),可被 NavigationLink 跳转到学习主页的独立副本。虽然与 Tab 1 的学习主页渲染同一 View,但路由跳转会 push 一个新的 NavigationStack 副本。
|
||
- **文档处理:** 文档将 StudyHomeView 仅归入 Tab 页面,未提及它也可作为 Push 路由目标。
|
||
- **建议:** 在页面跳转关系中标注 StudyHomeView 可被 Route.studyHome 推入导航栈。
|
||
|
||
---
|
||
|
||
## 三、文档记录但当前不可访问的页面
|
||
|
||
无。所有文档记录的页面在代码中均有对应的入口。
|
||
|
||
---
|
||
|
||
## 四、文档记录为"已完成",但实际为"部分完成"或"占位实现"的页面
|
||
|
||
| 文档页面 | 文档状态 | 实际状态 | 差异说明 |
|
||
|---------|---------|---------|---------|
|
||
| 学习会话页 (2.2) | 已完成 | 暂未确认 | 文档称"已完成"。页面计时功能完成,但**未发现调用 LearningSessionService.start/end 保存学习记录到 API 的代码**,学习时长仅在本地计时。 |
|
||
| 复习卡片页 (2.3) | 占位实现 | 占位实现 | 状态一致,但文档说 ReviewViewModel 和 ReviewPlanViewModel 代码已就绪。实际情况:ReviewCardView 完全忽略 ViewModel 的数据,使用不同类型的硬编码结构体 ReviewCardItem。 |
|
||
| 主动回忆页 (2.4) | 占位实现 | 占位实现 | 状态一致。 |
|
||
| 知识库首页 (3.1) | 部分完成 | 部分完成 | 状态一致。 |
|
||
| 知识库详情页 (3.3) | 部分完成 | 部分完成 | 状态一致。 |
|
||
| 学习分析页 (4.1) | 部分完成 | 部分完成 | 状态一致。但需补充:**每日学习时长(dailyMins)保存逻辑缺失**(GoalSettingDetailView 中 dailyMins 仅保存在本地 @State)。 |
|
||
| 设置页 (5.3) | 部分完成 | 部分完成 | 状态一致。需补充:"存储空间"行 → Route.settings(自引用),"登录设备管理" → Route.settings(自引用),均无实际导航目标。 |
|
||
| AI 反馈页 (6.3) | 占位实现 | 占位实现 | 状态一致。 |
|
||
| 薄弱知识点页 (6.4) | 占位实现 | 占位实现 | 状态一致。 |
|
||
| 资料阅读页 (8.1) | 部分完成 | 部分完成 | 状态一致。 |
|
||
| 每日思考页 (6.2) | 占位实现 | 占位实现 | 状态一致。但需补充:`submitted` 状态变量从未被设置为 true,提交按钮始终可见(这可能导致 UI 行为异常)。 |
|
||
|
||
---
|
||
|
||
## 五、文档重复记录的页面
|
||
|
||
无发现。文档每个页面只记录一次。
|
||
|
||
---
|
||
|
||
## 六、页面名称不同但实际为同一个页面的情况
|
||
|
||
无发现。文档页面名称与代码类型名称一一对应。
|
||
|
||
---
|
||
|
||
## 七、页面被错误归入业务模块的情况
|
||
|
||
| 页面 | 文档归类 | 建议归类 | 原因 |
|
||
|------|---------|---------|------|
|
||
| 创建知识库页 | 知识库 Tab | 正确 | 入口来自知识库首页和我的页 |
|
||
| 学习会话页 | 学习 Tab | 正确 | 入口来自资料阅读页 |
|
||
| 主动回忆页 | 学习 Tab | 正确 | 入口来自学习主页 |
|
||
|
||
无严重归类错误。
|
||
|
||
---
|
||
|
||
## 八、Sheet、弹窗、隐藏入口遗漏检查
|
||
|
||
### 已记录的 Sheet/弹窗(9.1-9.6)
|
||
|
||
| 文档项目 | 覆盖情况 |
|
||
|---------|---------|
|
||
| 快速笔记 (9.1) | 已覆盖 |
|
||
| 系统预览 (9.2) | 已覆盖 |
|
||
| AI 会话列表 Sheet (9.3) | 已覆盖 |
|
||
| 封面选择 Sheet (9.4) | 已覆盖 |
|
||
| 链接导入弹窗 (9.5) | 已覆盖 |
|
||
| 各类确认弹窗 (9.6) | 已覆盖 6 个中的 6 个 |
|
||
|
||
### 遗漏的 Sheet/弹窗
|
||
|
||
| 遗漏项 | 所在页面 | 说明 |
|
||
|--------|---------|------|
|
||
| 文件夹新建/重命名 Alert | FolderManageView | "新建分类" + "重命名"两个带 TextField 的 Alert,文档在 9.6 确认弹窗表格中未列出 |
|
||
|
||
建议在 9.6 确认弹窗表格中补充:
|
||
- 新建分类(FolderManageView)
|
||
- 重命名分类(FolderManageView)
|
||
|
||
---
|
||
|
||
## 九、页面入口和跳转关系错误
|
||
|
||
| 错误位置 | 文档描述 | 实际代码 | 严重程度 |
|
||
|---------|---------|---------|---------|
|
||
| 学习主页"查看完整分析" → ActiveRecallView | 文档:跳转主动回忆页 | 代码:`Route.activeRecall` → ActiveRecallView | **正确**(但主动回忆页为占位实现) |
|
||
| 学习主页"自我测试" → QuizTakerView | 文档:跳转测验作答页 | 代码:MainAction.selfTest → Route.quizTake(quizId:) | **正确** |
|
||
| 学习主页"自我测试"小卡片 → QuizListView | 文档未明确 | 代码:Route.quizList(knowledgeBaseId: "") | **需补充**,知识库 ID 为空字符串可能导致异常 |
|
||
| 设置页"复习提醒" → SettingsView | 文档:跳转设置页(从我的页复习提醒行) | 代码:`Route.settings` → SettingsView | **正确但奇怪**:从设置页的"复习提醒"行再次跳转 SettingsView 形成自引用 |
|
||
|
||
---
|
||
|
||
## 十、页面状态遗漏
|
||
|
||
| 遗漏状态 | 所在页面 | 说明 |
|
||
|---------|---------|------|
|
||
| LearningSessionView 未保存学习记录到 API | 学习会话页 | 文档标记为"已完成",但缺少 API 持久化,用户在分析页看不到本次学习数据 |
|
||
| StudyHomeViewModel 永不为 error | 学习主页 | error 状态代码存在但 ViewModel 中所有 API 调用用 try? 吞错,error 状态永不可达 |
|
||
| DailyThinkingPage submitted 永不为 true | 每日思考页 | 提交按钮始终可见,可能导致用户重复提交 |
|
||
| GoalSettingDetailView dailyMins 不持久化 | 学习目标设置页 | 每日时长选择不通过 API 保存,下次进入恢复默认"30 分钟" |
|
||
|
||
---
|
||
|
||
## 十一、总体评估
|
||
|
||
| 评估维度 | 结果 |
|
||
|---------|------|
|
||
| 文档页面覆盖率 | 43/45 (95.6%) — 遗漏 RecallTestPage + studyHome 路由 |
|
||
| 页面状态准确率 | 38/43 (88.4%) — 5 个页面状态描述与代码存在差异 |
|
||
| Sheet/弹窗覆盖率 | 8/9 (88.9%) — 遗漏 1 个确认弹窗组合 |
|
||
| 跳转关系准确率 | 基本正确,1 处需补充说明 |
|
||
| 页面状态描述完整度 | 需补充 4 处状态遗漏 |
|
||
|
||
**结论:页面地图文档整体质量较高,覆盖率 95%+。主要问题集中在页面完成状态的部分误判,以及个别状态的遗漏。**
|