# 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%+。主要问题集中在页面完成状态的部分误判,以及个别状态的遗漏。**