ios-projects/docs/system-map/ios/01-iOS页面地图.md

787 lines
40 KiB
Markdown
Raw Permalink 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.

# 01 iOS 页面地图
> 按用户可见的页面层级整理,不按代码目录组织。
---
## 一、启动与登录流程
### 1.1 启动页SplashScreen
- **页面作用:** 应用启动时显示品牌标识,后台静默恢复登录会话。
- **页面入口:** 应用冷启动时的默认展示。
- **页面组成:** 深色渐变背景、品牌图标(大脑)、"知习"标题、加载指示器。
- **用户可执行操作:** 无(自动跳转)。
- **自动执行功能:** 从系统钥匙串读取 Token → 调用 API 校验 → 恢复会话或跳转到登录页。
- **可跳转页面:** 自动跳转至 Welcome 页(未登录)或主界面(已登录)。
- **页面主要状态:** 仅展示态。会话恢复中 / 恢复完成自动跳转。
- **当前完成情况:** 已完成
---
### 1.2 欢迎页WelcomePage
- **页面作用:** 向新用户介绍产品核心功能,引导进入登录流程。
- **页面入口:** 未登录用户从启动页自动跳转,或已登录用户退出后进入。
- **页面组成:** 页面渐变背景、装饰光晕、"AI 驱动"标签、主标题"用 AI 重新定义你的学习方式"、三个功能介绍卡片主动回忆、费曼解释、AI 分析)、"开始使用"按钮。
- **用户可执行操作:** 点击"开始使用"进入登录页。
- **自动执行功能:** 无。
- **可跳转页面:** LoginPage登录页
- **页面主要状态:** 仅展示态。
- **当前完成情况:** 已完成
---
### 1.3 登录页LoginPage
- **页面作用:** 用户使用 Apple ID 登录应用。
- **页面入口:** 欢迎页点击"开始使用"。
- **页面组成:** 页面渐变背景、品牌图标、欢迎文案、"使用 Apple 账号登录以同步学习数据"提示、Sign in with Apple 按钮、错误信息区域、登录中取消按钮覆盖层。
- **用户可执行操作:** Apple ID 登录、取消登录。
- **自动执行功能:** 登录成功后自动保存 Token 至钥匙串、切换会话状态。
- **可跳转页面:** 登录成功 → Onboarding 页(首次)或主界面(已设定目标)。
- **页面主要状态:** 待登录 / 登录中 / 登录失败(显示错误提示)。
- **当前完成情况:** 已完成
---
### 1.4 账号状态页AccountStatusView
- **页面作用:** 当账号被禁用或已注销时,向用户展示状态说明。
- **页面入口:** 启动时 AuthManager 检测到账号为 disabled 或 deleted 状态。
- **页面组成:** 页面渐变背景、状态图标、标题文案、说明文字、"返回首页"按钮。
- **用户可执行操作:** 点击"返回首页"回到未登录状态,可重新登录。
- **自动执行功能:** 无。
- **可跳转页面:** 回到 Welcome 页。
- **页面主要状态:** 禁用态 / 注销态(两种展示略有不同)。
- **当前完成情况:** 已完成
---
### 1.5 引导页OnboardingPage
- **页面作用:** 首次登录后展示产品价值,引导用户理解产品核心流程。
- **页面入口:** 首次登录成功后自动跳转。
- **页面组成:** 页面渐变背景、4 步引导指示器、步骤标题与说明、"下一步"/"开始使用"按钮、"跳过"链接。四步分别为输入知识、主动输出、AI 分析、掌握知识。
- **用户可执行操作:** 点击"下一步"依次浏览、点击"跳过"直接结束。
- **自动执行功能:** 无。
- **可跳转页面:** GoalSetupPage目标设置页或直接进入主界面跳过
- **页面主要状态:** 展示第1-4步。
- **当前完成情况:** 已完成
---
### 1.6 目标设置页GoalSetupPage
- **页面作用:** 用户设定学习目标、偏好方法和每日学习时间。
- **页面入口:** Onboarding 完成后自动跳转,或从"我的"→"学习目标设置"进入。
- **页面组成:** 页面渐变背景、标题"设定你的学习目标"、四个学习目标选项(备考考试/职业技能/通识学习/自定义)、三种学习方法多选(间隔回忆/费曼技巧/AI 分析、四个每日学习时间选项15分钟/30分钟/1小时/不限制)、"开始学习"按钮。
- **用户可执行操作:** 选择学习目标、选择学习方法、选择每日时间、确认进入主界面。
- **自动执行功能:** 确认后将目标通过 API 保存至用户偏好。
- **可跳转页面:** 主界面 ContentView。
- **页面主要状态:** 选择中(单选目标、多选方法、单选时间)/ 已确认。
- **当前完成情况:** 部分完成(学习目标和方法通过 API 保存;每日学习时长仅保存在本地 @State,缺乏可靠持久化)
---
## 二、学习(底部导航 Tab 1
### 2.1 学习主页StudyHomeView
- **页面作用:** 学习工作台,聚合展示今日学习任务、复习卡片、自我测试等学习入口。
- **页面入口:** 底部导航"学习" Tab默认选中
- **页面组成:**
- 标题栏:页面标题"学习"(实际未显示明显标题)
- 连续学习天数(火焰图标 + 天数)
- 主操作卡片(动态变化,见下)
- 今日复习卡片(卡片数 + 预计时长)
- 自我测试卡片(可用测验数)
- 每周摘要卡片(本周分钟数 / 复习卡片数 / 活跃天数 / 连续天数)
- 底部"查看完整分析"链接
- **用户可执行操作:**
- 点击主操作卡片(根据优先级不同,操作不同)
- 点击复习卡片入口
- 点击自我测试入口
- 点击每周摘要区域查看详细分析
- 下拉刷新
- **自动执行功能:** 页面加载时自动计算优先级最高的学习操作(继续学习 > 今日复习 > 自我测试 > 开始学习 > 空状态引导)
- **可跳转页面:**
- MaterialReaderView资料阅读继续学习时
- ReviewCardView复习卡片
- QuizTakerView自我测试
- QuizListView测验列表
- ActiveRecallView主动回忆
- 切换到"知识库" Tab
- **页面主要状态:** 加载中 / 加载失败(错误提示 + 重试按钮)/ 已加载·有任务 / 已加载·空状态。
> View 支持 error 状态展示,但 ViewModel 中所有 API 调用使用 try? 吞错error 状态在实际运行中永不可达。
- **当前完成情况:** 已完成
---
### 2.2 学习会话页LearningSessionView
- **页面作用:** 专注学习计时器,记录单次学习时长。
- **页面入口:** 从学习主页或资料阅读页的学习任务入口进入。
- **页面组成:** 环形计时器(带动画渐变环)、任务信息卡片(任务名称、类型、建议时长 30 分钟、今日已学时长)、提示卡片、底部状态栏"学习中…"、暂停/继续按钮、结束按钮。
- **用户可执行操作:** 暂停/继续计时、结束学习。
- **自动执行功能:** 进入页面自动开始计时1秒精度学习结束时自动展示庆祝动画。
- **可跳转页面:** 无(结束学习后展示庆祝动画,用户可返回)。
- **页面主要状态:** 计时中 / 已暂停 / 学习完成(庆祝动画覆盖层)。
- **当前完成情况:** 暂未确认(本地计时功能完成,但代码中未发现调用 LearningSessionService API 保存学习记录的代码,学习时长可能不持久化到服务端)
---
### 2.3 复习卡片页ReviewCardView
- **页面作用:** 基于间隔重复的闪卡复习。
- **页面入口:** 学习主页"今日复习"入口、AI 快捷操作。
- **页面组成:** 进度条、卡片正面(问题)、卡片反面(答案 + 出处)、自评按钮组("完全不会"/"有点难"/"基本会"/"很简单")。
- **用户可执行操作:** 点击卡片翻转查看答案、点击自评按钮评分、自动跳至下一张。
- **自动执行功能:** 评分后自动前进到下一张卡片,全部完成后自动展示庆祝动画。
- **可跳转页面:** 无。
- **页面主要状态:** 卡片正面 / 卡片反面(含自评按钮)/ 全部完成(庆祝动画覆盖层)。
- **当前完成情况:** 占位实现(展示 3 张机器学习相关硬编码卡片,未接通 ReviewViewModel 和 API
---
### 2.4 主动回忆页ActiveRecallView
- **页面作用:** 用户主动输出知识点内容,由 AI 评估掌握程度。
- **页面入口:** 学习主页底部链接或 AI 快捷操作。
- **页面组成:** 进度条、问题卡片(含题目类型标签:语音/文字 和来源、回答输入区TextEditor 或语音占位按钮)、提交按钮、提交确认区("下一题"/"查看 AI 分析"按钮)。
- **用户可执行操作:** 输入文字答案、提交答案、查看 AI 分析、进入下一题。
- **自动执行功能:** 提交答案后展示"AI 正在分析你的回答…"思考动画覆盖层,全部完成后展示庆祝动画。
- **可跳转页面:** AIFeedbackPageViewAI 反馈页)。
- **页面主要状态:** 答题模式 / 答案已提交 / AI 分析中(覆盖层)/ 全部完成(庆祝动画覆盖层)。
- **当前完成情况:** 占位实现3 道硬编码机器学习题目,第 3 题标记为语音类型但语音功能未实现)
---
## 三、知识库(底部导航 Tab 2
### 3.1 知识库首页LibraryHomeView
- **页面作用:** 展示和管理用户的知识库列表。
- **页面入口:** 底部导航"知识库" Tab。
- **页面组成:** 标题"知识库"、搜索按钮、创建按钮、搜索栏、筛选分类横条(全部/我的/已订阅/官方)、知识库卡片列表(封面图、名称、描述、日期、可见性标签、置顶标记)。
- **用户可执行操作:**
- 点击知识库卡片进入详情
- 点击搜索按钮进入搜索
- 点击创建按钮新建知识库
- 切换筛选分类
- 下拉刷新
- 无限滚动加载更多
- **自动执行功能:** 页面加载时自动拉取知识库列表。
- **可跳转页面:**
- LibraryDetailPage知识库详情
- LibrarySearchView搜索
- CreateLibraryPage创建知识库
- **页面主要状态:** 加载中 / 各分类的空状态(文案不同)/ 已加载·有数据 / 分页加载更多中 / 刷新中。
- **当前完成情况:** 部分完成("官方"筛选返回空数组,待后端支持;搜索页仅展示空状态,未实现搜索逻辑)
---
### 3.2 知识库搜索页LibrarySearchView
- **页面作用:** 搜索知识库和知识点。
- **页面入口:** 知识库首页点击搜索图标。
- **页面组成:** 搜索输入框、空白搜索区域。
- **用户可执行操作:** 输入搜索关键词(实际搜索逻辑未实现)。
- **自动执行功能:** 无。
- **可跳转页面:** 无。
- **页面主要状态:** 搜索前空状态。
- **当前完成情况:** 部分完成(页面框架和输入框已搭建,搜索逻辑未实现)
---
### 3.3 知识库详情页LibraryDetailPage
- **页面作用:** 查看知识库内容,管理知识点和来源文件。
- **页面入口:** 知识库首页点击知识库卡片。
- **页面组成:**
- 知识库信息头部(封面、标题、描述、元数据行)
- 两个标签页切换:知识点 Tab / 来源 Tab
- **知识点 Tab** 知识点列表(类型图标、类型标签、日期、学习进度)、排序菜单、操作菜单、批量选择模式
- **来源 Tab** 来源文件列表(含阅读状态标签、删除按钮)
- 底部 AI 对话按钮(知识库范围)
- 文件夹管理入口Sheet
- **用户可执行操作:**
- 切换知识点/来源 Tab
- 点击知识点进入详情
- 长按/滑动删除知识点
- 批量选择与批量删除
- 切换排序方式(默认/文件大小/创建时间/更新时间)
- 点击上传导入资料
- 打开文件夹管理弹窗
- 点击底部 AI 对话按钮
- 点击来源文件进入资料阅读
- 删除来源文件
- 点击"知识库管理"(操作菜单中存在,但 action 为空 TODO未实现
- **自动执行功能:** 页面加载时自动拉取知识点列表和来源列表。
- **可跳转页面:**
- KnowledgeDetailPage知识点详情
- ImportPage导入资料
- AddKnowledgePage添加知识点
- QuizListView生成测验
- AIChatPageAI 对话,知识库范围)
- MaterialReaderView资料阅读
- FolderManageView文件夹管理Sheet 弹窗)
- **页面主要状态:**
- 加载中 / 加载失败
- 知识点 Tab·有数据 / 知识点 Tab·空
- 来源 Tab·有数据 / 来源 Tab·空
- 批量选择模式
- 删除确认弹窗
- **当前完成情况:** 部分完成(知识点重命名 TODO、移动到文件夹 TODO、知识库管理页 TODO、收藏状态切换 TODO
---
### 3.4 创建知识库页CreateLibraryPage
- **页面作用:** 创建新的知识库。
- **页面入口:** 知识库首页点击创建按钮、"我的"页学习资产入口。
- **页面组成:** 封面图区域(可点击上传)、知识库名称输入框(必填)、描述输入框(必填)、创建按钮。
- **用户可执行操作:** 从相册选择封面图(自动裁剪为 512×512、输入名称和描述、点击创建。
- **自动执行功能:** 封面上传时自动调整图片尺寸。
- **可跳转页面:** 无(创建成功后返回上一页)。
- **页面主要状态:** 编辑中(名称/描述为空时按钮禁用)/ 封面上传中 / 创建中。
- **当前完成情况:** 已完成
---
### 3.5 添加知识点页AddKnowledgePage
- **页面作用:** 向知识库添加新的知识点。
- **页面入口:** 知识库详情页操作菜单中的"添加"。
- **页面组成:** "内容来源"分段选择器(手动 / 文件)、手动模式下的标题输入框和内容编辑器、文件模式下的"选择文件"/"图片"按钮、已选文件列表(可移除)、上传进度指示器、保存按钮。
- **用户可执行操作:**
- 手动模式:输入标题和内容文字,点击保存。
- 文件模式选择文件PDF/纯文本/图片)、选择照片、移除已选文件、批量保存。
- **自动执行功能:** 文件模式下自动检测 MIME 类型,大于 2MB 的图片自动压缩,文件上传至腾讯云 COS。
- **可跳转页面:** 无(保存成功后返回上一页)。
- **页面主要状态:** 手动模式 / 文件模式 / 文件上传中 / 保存中。
- **当前完成情况:** 已完成
---
### 3.6 知识点详情页KnowledgeDetailPage
- **页面作用:** 查看知识点详细内容,支持多种文件格式渲染。
- **页面入口:** 知识库详情页点击知识点。
- **页面组成:** 根据内容类型不同展示不同渲染方式:
- URL 型知识点:嵌入 MaterialReaderView 渲染
- 纯文本知识点:直接文本渲染(支持 Markdown
- 图片/PDF/Word/Excel/PPT/ePub对应原生阅读器或系统预览
- 工具栏菜单(笔记、预览选项、阅读原文按钮)
- **用户可执行操作:** 阅读内容、查看原文、添加笔记、收藏UI 存在但后端未支持)。
- **自动执行功能:** 加载知识点内容,自动从 COS 下载文件(带过期 URL 重新获取逻辑)。
- **可跳转页面:** MaterialReaderView。
- **页面主要状态:** 加载中 / 错误(显示概要回退文字 + 重试按钮)/ 内容已就绪。
- **当前完成情况:** 部分完成(收藏切换有 UI 但后端 API 未支持,收藏标记为 TODO
---
### 3.7 编辑知识点页EditKnowledgePage
- **页面作用:** 编辑知识点标题和内容。
- **页面入口:** 知识点详情页工具栏菜单。
- **页面组成:** 标题输入框、内容编辑器、保存按钮。
- **用户可执行操作:** 修改标题和内容、保存。
- **自动执行功能:** 无。
- **可跳转页面:** 无(保存后返回)。
- **页面主要状态:** 编辑中 / 保存中。
- **当前完成情况:** 已完成
---
### 3.8 导入资料页ImportPage
- **页面作用:** 向知识库导入外部资料。
- **页面入口:** 知识库详情页操作菜单中的"导入"。
- **页面组成:** 三种导入方式入口:文件导入、相册导入、链接导入。自动检测或提示选择目标知识库。
- **用户可执行操作:**
- 文件导入:选择 PDF 或纯文本文件
- 相册导入:选择照片
- 链接导入:输入 URL通过弹窗
- **自动执行功能:** 自动选择第一个知识库,无知识库时提示用户创建。
- **可跳转页面:** ImportReviewPage导入候选审核页
- **页面主要状态:** 选择导入方式 / 导入中 / 导入失败(错误横幅)。
- **当前完成情况:** 已完成
---
### 3.9 导入候选审核页ImportReviewPage
- **页面作用:** 审核 AI 从导入资料中提取的知识点候选。
- **页面入口:** 导入资料完成后自动跳转。
- **页面组成:** 候选知识点列表(含置信度分数)、每条候选可展开查看详情、接受/拒绝按钮、"全部接受"按钮。
- **用户可执行操作:** 接受单个候选、拒绝单个候选、批量全部接受。
- **自动执行功能:** 加载该来源的导入候选列表。
- **可跳转页面:** 无。
- **页面主要状态:** 加载中 / 无待审核候选 / 有待审核列表。
- **当前完成情况:** 已完成
---
### 3.10 发现公开库页DiscoverView
- **页面作用:** 浏览和订阅其他用户公开的知识库。
- **页面入口:** "我的"页"发现公开库"入口。
- **页面组成:** 公开知识库列表(标题、描述、知识条目数)、每条右侧有订阅/取消订阅按钮。
- **用户可执行操作:** 订阅知识库、取消订阅。
- **自动执行功能:** 加载公开知识库列表。
- **可跳转页面:** 无。
- **页面主要状态:** 加载中 / 空(无公开知识库)/ 已加载。
- **当前完成情况:** 已完成
---
### 3.11 文件夹管理FolderManageView
- **页面作用:** 管理知识库内的文件夹/分类。
- **页面入口:** 知识库详情页操作菜单中的"文件夹管理"(以 Sheet 形式弹出)。
- **页面组成:** 文件夹列表(含名称)、新建按钮、每条可滑动操作(重命名、删除)。
- **用户可执行操作:** 创建文件夹(通过弹窗输入名称)、重命名文件夹、删除文件夹。
- **自动执行功能:** 加载该知识库的文件夹列表。
- **可跳转页面:** 无Sheet 内操作)。
- **页面主要状态:** 文件夹列表 / 新建弹窗 / 重命名弹窗。
- **当前完成情况:** 已完成
---
## 四、分析(底部导航 Tab 3
### 4.1 学习分析页AnalysisHomeView
- **页面作用:** 展示学习数据分析和趋势洞察。
- **页面入口:** 底部导航"分析" Tab。
- **页面组成:**
- 标题"学习分析"+ 日期范围筛选("近 7 天"
- 4 个统计徽章:综合掌握 / 总分钟 / 复习卡片 / 活跃天
- 4 个阅读统计徽章:今日阅读 / 本周阅读 / 已读资料 / 阅读资料
- 掌握度趋势折线图(含动画)
- 阅读时长趋势柱状图
- 本周学习活跃柱状图
- 连续学习统计(当前连续/最长连续/最后活跃)
- 最近学习记录列表(最多 5 条)
- 学习推荐列表(含优先级标签)
- 继续阅读入口
- AI 综合分析文字摘要
- 薄弱知识点列表(最多 5 条)
- **用户可执行操作:**
- 点击薄弱知识点查看详情(跳转 WeakPointsPage
- 点击继续阅读入口(跳转 MaterialReaderView
- 下拉刷新数据
- **自动执行功能:** 页面加载时自动并行拉取活动概览、趋势、连续天数、推荐、阅读数据等。
- **可跳转页面:**
- WeakPointsPage薄弱知识点详情
- MaterialReaderView继续阅读
- **页面主要状态:** 加载中 / 加载失败(错误提示 + 重试按钮)/ 已加载·有数据 / 部分数据为空时隐藏对应区域。
- **当前完成情况:** 部分完成(掌握度趋势折线图和每周活跃柱状图使用编译时硬编码的 7 天数据,未从 ViewModel API 数据读取,属于占位实现;其他数据来自 API
---
## 五、我的(底部导航 Tab 4
### 5.1 个人中心页ProfileView
- **页面作用:** 用户个人信息与功能入口集合。
- **页面入口:** 底部导航"我的" Tab。
- **页面组成:**
- 顶部导航栏:标题"我的"、发现公开库按钮、通知图标、设置图标
- 个人资料卡片(头像、昵称、邮箱、活跃天/复习卡片/分钟统计)
- 功能菜单:学习目标设置、复习提醒、学习方法偏好、帮助与反馈
- 学习资产区域:知识库/条目/卡片计数、发现公开库入口、消息中心入口、存储空间展示
- **用户可执行操作:**
- 点击资料卡片进入编辑资料
- 点击各菜单项进入对应子页面
- 点击通知图标进入通知列表
- 点击设置图标进入设置
- **自动执行功能:** 页面加载时自动拉取用户资料、活动摘要、资产和存储统计。
- **可跳转页面:**
- EditProfilePage编辑资料
- GoalSettingDetailView学习目标设置
- SettingsView设置从复习提醒行进入也是设置
- MethodPreferenceView学习方法偏好
- FeedbackFormView帮助与反馈
- CreateLibraryPage学习资产入口
- DiscoverView发现公开库
- NotificationListView通知列表/消息中心)
- **页面主要状态:** 加载中 / 已加载(含默认值和占位信息)。
- **当前完成情况:** 已完成
---
### 5.2 编辑资料页EditProfilePage
- **页面作用:** 编辑个人资料信息。
- **页面入口:** 个人中心页点击资料卡片。
- **页面组成:**
- 头像区域(可点击上传,自动裁剪为正方形 256×256
- 基本信息区:昵称输入框、学习身份输入框
- 学习档案区:学习方向输入框、当前目标输入框
- 个人简介输入框
- 保存按钮(含加载状态)
- **用户可执行操作:** 从相册选择头像、编辑各文本字段、保存。
- **自动执行功能:** 头像选择后自动裁剪上传。
- **可跳转页面:** 无。
- **页面主要状态:** 加载中(加载现有资料)/ 编辑中 / 头像上传中 / 保存中 / 错误提示。
- **当前完成情况:** 已完成
---
### 5.3 设置页SettingsView
- **页面作用:** 应用全局设置。
- **页面入口:** 个人中心页点击设置图标或"复习提醒"行。
- **页面组成:**
- 外观与语言区:外观模式选择(跟随系统/深色/浅色)、语言
- 学习设置区:学习目标(导航)、方法偏好(导航)
- 复习提醒区:提醒开关、提醒时间选择器、间隔天数选择器
- 通知设置区:复习提醒开关、导入完成通知开关、系统通知开关
- 数据与存储区存储空间、iCloud 同步开关
- 账号区:个人信息、设备管理
- 帮助与反馈、隐私政策、用户协议
- 退出登录按钮(带确认弹窗)
- 底部关于信息(版本号)
- **用户可执行操作:** 切换外观模式、设置复习提醒时间和间隔天数、切换通知开关、iCloud 同步开关、退出登录、跳转子页面。
- **自动执行功能:** 外观模式变更时自动保存至用户偏好 API。
- **可跳转页面:**
- GoalSettingDetailView学习目标设置
- MethodPreferenceView方法偏好
- **页面主要状态:** 各开关状态、退出登录确认弹窗。
- **当前完成情况:** 部分完成(三个通知开关绑定到同一个 $reviewReminder 变量,存在明确 bug"设备管理"、"隐私政策"、"用户协议"入口无导航目标;"存储空间"行导航目标为 Route.settings 自身,形成无效自引用;"登录设备管理"行同理,导航目标也为 Route.settings 自身)
---
### 5.4 学习目标设置页GoalSettingDetailView
- **页面作用:** 配置学习目标和每日学习时长。
- **页面入口:** 设置页"学习目标"或"我的"页"学习目标设置"。
- **页面组成:** 四个学习目标选项(备考考试/职业技能/通识学习/自定义、四个每日学习时间选项15分钟/30分钟/1小时/不限制)。
- **用户可执行操作:** 选择目标和时间,保存。
- **自动执行功能:** 保存至用户 API。
- **可跳转页面:** 无。
- **页面主要状态:** 当前选中态展示。
- **当前完成情况:** 部分完成(学习目标选择通过 API 保存,但每日学习时长 dailyMins 仅保存在本地 @State 变量,不通过 API 持久化,下次进入恢复默认"30 分钟"
---
### 5.5 学习方法偏好页MethodPreferenceView
- **页面作用:** 配置偏好的学习方式。
- **页面入口:** 设置页或"我的"页"学习方法偏好"。
- **页面组成:** 四种方法选项(间隔回忆/费曼技巧/AI分析/主动回忆),多选框形式。
- **用户可执行操作:** 多选/取消方法,保存。
- **自动执行功能:** 保存至用户偏好 API。
- **可跳转页面:** 无。
- **页面主要状态:** 选中/未选中。
- **当前完成情况:** 已完成
---
### 5.6 通知列表页NotificationListView
- **页面作用:** 查看和管理系统通知。
- **页面入口:** "我的"页通知图标或消息中心入口。
- **页面组成:** 通知列表按日期分组(今天/本周/更早),每条通知含类型图标、标题、内容、时间、已读/未读状态。顶部"全部已读"按钮。
- **用户可执行操作:** 点击单条通知标记为已读、点击"全部已读"。
- **自动执行功能:** 加载通知列表。
- **可跳转页面:** 无。
- **页面主要状态:** 加载中 / 有通知 / 无通知。
- **当前完成情况:** 已完成
---
### 5.7 帮助与反馈页FeedbackFormView
- **页面作用:** 用户提交反馈和问题报告。
- **页面入口:** "我的"页"帮助与反馈"、设置页"帮助与反馈"。
- **页面组成:** 反馈类型选择器Bug反馈/功能建议/内容问题/其他)、内容输入框、提交按钮。
- **用户可执行操作:** 选择反馈类型、输入描述文字、提交。
- **自动执行功能:** 提交至反馈 API。
- **可跳转页面:** 无。
- **页面主要状态:** 编辑中 / 提交中 / 已提交(可继续提交新的)。
- **当前完成情况:** 已完成
---
## 六、AI 辅助功能(跨模块访问)
### 6.1 AI 对话页AIChatPage
- **页面作用:** 与 AI 进行学习相关的对话互动。
- **页面入口:** 知识库详情页底部 AI 对话按钮、AI 反馈页"深入提问"、资料阅读页工具栏 AI 按钮(多处入口,均可附带对话范围上下文)。
- **页面组成:**
- 对话消息列表用户消息紫色渐变气泡、AI 消息含思考过程和内容)
- AI 思考过程区(可折叠、含流式输出动画)
- 范围标签(当对话限定在特定知识库/资料时显示)
- 工具栏按钮(新建对话、会话列表)
- 底部输入栏(文字输入框、语音图标(占位)、发送按钮)
- AI 回复完成后显示"复制"和"重新生成"按钮
- **用户可执行操作:**
- 发送文字消息
- 查看 AI 思考过程
- 复制 AI 回复
- 重新生成回复
- 新建对话
- 打开会话列表 Sheet
- 在会话列表中搜索、删除、归档会话
- **自动执行功能:** 流式接收 AI 回复并实时展示,自动创建或恢复对话会话。
- **可跳转页面:** 无(页面内操作)。
- **页面主要状态:**
- 创建会话中 / 会话创建失败
- 消息列表(含滚动加载历史)
- AI 回复流式输出中(含思考动画)
- 会话列表 Sheet搜索、筛选、编辑操作
- **当前完成情况:** 已完成
---
### 6.2 每日思考页DailyThinkingPage
- **页面作用:** 展示一道每日思考题,用户提交回答后获取 AI 反馈。
- **页面入口:** AI 反馈页"再来一题"。
- **页面组成:** 思考题目(硬编码:"Transformer 中的注意力机制")、评估要点提示、回答输入框、"提交获取 AI 反馈"按钮。
- **用户可执行操作:** 输入答案、提交获取 AI 反馈。
- **自动执行功能:** 无。
- **可跳转页面:** AIFeedbackPageView。
- **页面主要状态:** 回答中 / 提交后跳转。
- **当前完成情况:** 占位实现(题目硬编码,无 ViewModel无动态题目来源。注submitted 状态变量在代码中从未被设置为 true提交按钮始终可见可能导致用户重复提交
---
### 6.3 AI 反馈页AIFeedbackPageView
- **页面作用:** 展示 AI 对用户回答的分析评分和建议。
- **页面入口:** 主动回忆完成后、每日思考提交后、回忆测试提交后。
- **页面组成(两阶段):**
- 分析中:动画步骤指示器("解析你的回答结构…"等 4 步,约 5 秒)
- 分析结果:得分圆环、掌握度评价文字、用户原始回答、答对的部分列表、需要完善的内容、参考答案要点、"加入待巩固"按钮、"深入提问"按钮、"再来一题"按钮
- **用户可执行操作:** 查看分析结果、加入待巩固(跳转学习主页)、深入提问(跳转 AI 对话)、再来一题(跳转每日思考)。
- **自动执行功能:** 模拟分析过程5 秒后自动展示结果)。
- **可跳转页面:** StudyHomeView、AIChatPage、DailyThinkingPage。
- **页面主要状态:** 分析中 / 分析结果。
- **当前完成情况:** 占位实现(得分 78/100 硬编码,所有分析文字硬编码,未接通真实 AI 分析 API
---
### 6.4 薄弱知识点页WeakPointsPage
- **页面作用:** 展示用户的薄弱知识点列表。
- **页面入口:** 学习分析页薄弱知识点区域"全部"链接。
- **页面组成:** 薄弱知识点列表,每项含掌握度分数、知识点名称、所属知识库、优先级标签(高/中)。
- **用户可执行操作:** 查看列表。
- **自动执行功能:** 无。
- **可跳转页面:** 无。
- **页面主要状态:** 展示态。
- **当前完成情况:** 占位实现5 个硬编码知识点,主题为贝叶斯定理/正态分布/词根/Covariance/梯度下降,无 ViewModel未接通 API
---
### 6.5 AI 首页AIHomeView
- **页面作用:** 原本设计为 AI 功能的聚合首页,包含快速操作入口、每日思考题和 AI 输入。
- **页面入口:** 代码中无任何页面跳转到此页——该页面未接入导航系统,属于废弃页面。
- **页面组成:** 日期 + 服务器状态、Hero 区、Rive 动画占位、4 个快捷操作按钮、每日思考卡片、推荐问题列表、底部输入栏。
- **用户可执行操作:** (理论上的操作,实际不可达)
- **自动执行功能:** 健康检查服务器状态。
- **可跳转页面:** 理论上ActiveRecallView、WeakPointsPage、AIChatPage、ReviewCardView、DailyThinkingPage。
- **页面主要状态:** 服务器在线/检查中/离线。
- **当前完成情况:** 占位实现已废弃无导航入口。Rive 动画标注为占位,推荐问题硬编码)
---
### 6.6 回忆测试页RecallTestPage
- **页面作用:** 用户对特定知识点进行回忆测试,输入理解后提交,获取 AI 反馈。
- **页面入口:** 代码中无任何页面跳转到此页——Route 枚举中无对应 case属于代码存在但无导航入口的页面。
- **页面组成:** 提示文字(硬编码:"请回忆并写下你对「偏差-方差权衡」的理解"、TextEditor 回答输入框、"提交"按钮。
- **用户可执行操作:** (理论上的操作,实际不可达)输入答案、提交获取 AI 反馈。
- **自动执行功能:** 无。
- **可跳转页面:** 理论上AIFeedbackPageView。
- **页面主要状态:** 编辑中 / 提交后跳转。
- **当前完成情况:** 占位实现(无导航入口,题目硬编码,无 ViewModel。注submitted 状态变量在代码中从未被设置为 true提交按钮始终可见可能导致用户重复提交
---
## 七、测验功能(跨模块访问)
### 7.1 测验列表页QuizListView
- **页面作用:** 查看知识库下的所有测验,并可以生成新测验。
- **页面入口:** 知识库详情页操作菜单中的"测验"。
- **页面组成:** 测验列表(含测验标题等信息)、空状态提示("暂无测验"+"生成测验"按钮)、"生成新测验"按钮。
- **用户可执行操作:** 生成新测验、点击已有测验进入作答。
- **自动执行功能:** 加载该知识库的测验列表。
- **可跳转页面:** QuizTakerView测验作答
- **页面主要状态:** 加载中 / 空(引导生成)/ 有测验列表 / 生成失败Toast 提示)。
- **当前完成情况:** 已完成
---
### 7.2 测验作答页QuizTakerView
- **页面作用:** 逐题作答。
- **页面入口:** 测验列表点击测验、学习主页自我测试入口。
- **页面组成:** 进度条(当前题号/总题数)、题目题干、选项/答案区。支持三种题型选择题A/B/C/D 单选)、判断题(正确/错误按钮)、填空题(文本输入)。
- **用户可执行操作:** 选择题选择答案、判断正误、输入填空答案、上一题/下一题导航、提交全部答案。
- **自动执行功能:** 提交后自动计算得分。
- **可跳转页面:** QuizResultView测验结果
- **页面主要状态:** 答题中 / 提交中。
- **当前完成情况:** 已完成
---
### 7.3 测验结果页QuizResultView
- **页面作用:** 展示测验得分和详细答题情况。
- **页面入口:** 测验作答提交后自动跳转。
- **页面组成:** 大号得分数字(低于 60 分红色、高于 60 分绿色)、正确/总题数统计、"重新测验"按钮、逐题详细结果(正确/错误标记 + 解析)。
- **用户可执行操作:** 查看每道题的结果和解析、点击重新测验。
- **自动执行功能:** 加载测验结果详情。
- **可跳转页面:** 无(重新测验回到 QuizTakerView 或 QuizListView
- **页面主要状态:** 加载中 / 结果已加载。
- **当前完成情况:** 已完成
---
## 八、资料阅读(跨模块访问)
### 8.1 资料阅读页MaterialReaderView
- **页面作用:** 阅读学习资料,支持多种文件格式。
- **页面入口:** 学习主页"继续学习"、学习分析页"继续阅读"、知识库详情页来源文件、知识点详情页。
- **页面组成:**
- 根据文件类型不同展示不同内容:
- Markdown/文本/图片:原生渲染(标题、段落、列表、代码块、引用、表格、图片)
- PDF/Word/Excel系统预览按钮QuickLook
- PowerPoint外部打开按钮ShareLink
- 不支持的格式:提示文字
- 工具栏按钮标记已读、AI 对话(资料范围)、资料详情、开始学习会话、知识提取
- 笔记功能入口Sheet
- 解析状态 Toast
- **用户可执行操作:**
- 阅读/滚动内容
- 标记已读/取消标记
- 打开 AI 对话(资料范围)
- 查看资料详情
- 开始学习会话
- 添加笔记
- QuickLook 预览PDF/Office
- 外部打开PowerPoint
- **自动执行功能:**
- 自动记录阅读位置2 秒防抖上报)
- 自动开始/暂停/恢复阅读会话(前后台切换)
- 自动心跳上报15 秒间隔)
- 优先恢复上次阅读位置API > 本地缓存 > 会话位置)
- 文件不存在时自动从 COS 下载
- 后台时自动导出并上传阅读事件
- **可跳转页面:**
- AIChatPage资料范围对话
- MaterialDetailView资料详情
- LearningSessionView学习会话
- **页面主要状态:** 加载中 / 加载失败(重试)/ 已加载·按格式渲染 / 解析状态 Toast。
- **当前完成情况:** 部分完成(核心功能已就位,解析触发使用 60×2s 硬编码轮询,存在改进空间)
---
### 8.2 资料详情页MaterialDetailView
- **页面作用:** 展示资料的元数据、处理状态和学习统计。
- **页面入口:** 资料阅读页工具栏"信息"按钮。
- **页面组成:**
- "原始文件"区域AI 处理状态横幅(处理中/就绪/失败)、文件元数据(名称、格式、大小、上传日期)、阅读进度卡片
- "学习内容"区域:知识点计数、测验计数
- **用户可执行操作:** 查看文件信息、查看阅读进度、查看关联学习内容。
- **自动执行功能:** 并行加载知识库详情、知识点列表、测验列表、阅读进度。
- **可跳转页面:** 无。
- **页面主要状态:**
- AI 处理状态:处理中(琥珀色横幅)/ 就绪(绿色横幅)/ 失败(红色横幅)
- 数据加载中
- **当前完成情况:** 已完成
---
## 九、弹窗与 Sheet
### 9.1 快速笔记QuickNoteSheet
- **页面作用:** 在阅读过程中快速添加笔记。
- **页面入口:** 资料阅读页工具栏笔记按钮(以 Sheet 形式弹出)。
- **页面组成:** 资料上下文头部、笔记内容 TextEditor自动聚焦、取消/保存按钮。
- **用户可执行操作:** 输入笔记文字、保存或取消。
- **自动执行功能:** 自动获取当前阅读位置作为笔记锚点。
- **可跳转页面:** 无Sheet 内操作)。
- **页面主要状态:** 编辑中 / 保存后关闭。
- **当前完成情况:** 已完成
---
### 9.2 系统预览QuickLook
- **页面作用:** 使用系统 QuickLook 预览 PDF、Word、Excel 等 Office 文件。
- **页面入口:** 资料阅读页中非原生支持格式的"系统预览"按钮(以 Sheet 形式弹出)。
- **页面组成:** 系统原生 QLPreviewController。
- **用户可执行操作:** 系统标准的文件预览操作。
- **自动执行功能:** 无。
- **可跳转页面:** 无。
- **页面主要状态:** 加载中 / 预览中。
- **当前完成情况:** 已完成
---
### 9.3 AI 会话列表 Sheet
- **页面作用:** 浏览和管理历史 AI 对话会话。
- **页面入口:** AI 对话页工具栏"会话列表"按钮(以 Sheet 形式弹出,支持 .medium 和 .large 展示高度)。
- **页面组成:** 可搜索会话列表,每条显示会话范围和最后消息时间;支持滑动操作(删除、归档)。
- **用户可执行操作:** 搜索会话、切换会话、删除会话、归档会话。
- **自动执行功能:** 根据当前对话范围过滤会话列表。
- **可跳转页面:** 选择会话后关闭 Sheet 并加载对应对话。
- **页面主要状态:** 会话列表 / 搜索中 / 空列表。
- **当前完成情况:** 已完成
---
### 9.4 封面选择 Sheet
- **页面作用:** 为知识库选择封面图片。
- **页面入口:** 创建知识库页封面区域点击(以 Sheet 形式弹出,固定高度 220pt
- **页面组成:** "从相册选择"选项。
- **用户可执行操作:** 打开系统相册选择图片。
- **自动执行功能:** 图片自动缩放为 512×512。
- **可跳转页面:** 无。
- **页面主要状态:** 选择中。
- **当前完成情况:** 已完成
---
### 9.5 链接导入弹窗
- **页面作用:** 输入 URL 以导入链接内容。
- **页面入口:** 导入资料页"链接导入"按钮(以 Alert 形式弹出,含输入框)。
- **页面组成:** 输入框URL、确认/取消按钮。
- **用户可执行操作:** 输入链接地址、确认导入。
- **自动执行功能:** 无。
- **可跳转页面:** 无。
- **页面主要状态:** 输入中。
- **当前完成情况:** 已完成
---
### 9.6 各类确认弹窗
以下为各页面中使用的系统 Alert 确认弹窗:
| 弹窗 | 所在页面 | 触发操作 |
|------|---------|---------|
| 删除知识库确认 | LibraryDetailPage | 操作菜单"删除知识库" |
| 批量删除确认 | LibraryDetailPage | 批量选择后点击删除 |
| 新建文件夹 | FolderManageView | 点击"新建" |
| 重命名文件夹 | FolderManageView | 滑动->重命名 |
| 退出登录确认 | SettingsView | 点击"退出登录" |
| 结束学习确认 | LearningSessionView | 点击"结束"confirmationDialog |
以上确认弹窗均已完成。