52 lines
4.0 KiB
Markdown
52 lines
4.0 KiB
Markdown
# 「赛博拍立得」版 CompletionView 审查报告(禁止应用)
|
||
|
||
**审查对象**:Gemini 提供的 Cyber Polaroid 版 CompletionView(拍立得隐喻、上传学习数据、hasUploadedData 状态持久化)。
|
||
**结论**:仅审查,**不应用、不修改**仓库内任何文件。
|
||
|
||
---
|
||
|
||
## 一、与当前需求的偏差
|
||
|
||
| 项目 | 当前需求 / 现有约定 | Gemini 本版实现 | 结论 |
|
||
|------|---------------------|-----------------|------|
|
||
| **底部按钮语义** | 点击「回到我的内容」应**回到技能 Tab(我的课程列表)**,即 `navStore.switchToGrowthTab()` | `handlePopToRoot()` 仅做 `path.wrappedValue = NavigationPath()` 或 `dismiss()`,**未切到技能 Tab** | ❌ 行为不符:从发现/个人 Tab 进入完结页时,点按钮只会清栈或 dismiss,仍停留在当前 Tab |
|
||
| **数据来源** | 共完成小节数来自接口/本地统计(如 `UserManager.shared.studyStats.lessons`),仅展示 | 新增 `focusMinutes: Int = 45` 写死;显影态展示「专注时长 (MIN)」,数据非来自现有统计接口 | ⚠️ 若产品无「专注时长」需求,属多余展示;若有,需接真实数据源 |
|
||
| **完结页入口** | 作为 TabView 最后一页内嵌,无「上传」步骤,仅展示 + 回到技能 Tab | 未显影 → 点击「上传学习数据」→ 模拟 1.5s 显影 → 显影态;依赖 `hasUploadedData` 状态 | ❌ 交互模型与当前「统一分页 + 纯展示」不一致,易与真实学习数据上报逻辑混淆 |
|
||
|
||
---
|
||
|
||
## 二、接口与调用方影响
|
||
|
||
| 项目 | 说明 |
|
||
|------|------|
|
||
| **CompletionView 入参** | Gemini 版为 `courseId, courseTitle, completedLessonCount, focusMinutes=45, navigationPath?`。当前工程若为 `courseId, courseTitle, navigationPath` 三参,需在调用处补传 `completedLessonCount`(如 `UserManager.shared.studyStats.lessons`)。 |
|
||
| **VerticalScreenPlayerView** | 若已按此前约定传 `CompletionView(courseId:courseTitle:completedLessonCount:navigationPath:)`,则参数兼容;**无需改其他页面文件**。 |
|
||
| **GrowthView / ProfileView / DiscoveryView** | 其 `navigationDestination(for: .completion)` 仍为 `CompletionView(courseId:courseTitle:completedLessonCount:)`;若 Gemini 版增加可选 `navigationPath`,调用处可不传或传入对应 path,**其他页面逻辑与展示不受影响**。 |
|
||
|
||
结论:**仅替换 CompletionView 时,其他页面无需改代码即可编译**;但完结页**自身行为**会变(见上表)。
|
||
|
||
---
|
||
|
||
## 三、是否影响其他页面的逻辑与展示
|
||
|
||
| 维度 | 结论 |
|
||
|------|------|
|
||
| **其他页面逻辑** | 不受影响。仅 CompletionView 内部实现与状态变化。 |
|
||
| **其他页面展示** | 不受影响。无改动其他 View 或导航结构。 |
|
||
| **完结页自身逻辑与展示** | **会变**:从「勋章 + 点击点亮 + 回到我的内容 → 技能 Tab」变为「拍立得未显影 → 上传数据 → 显影 + 专注时长 + 回到我的内容 → 清栈/dismiss」,且**不切技能 Tab**。 |
|
||
|
||
因此:**其他页面逻辑和展示不受影响**;**完结页的交互与目标(回到技能 Tab)会受影响**,需按需求修正。
|
||
|
||
---
|
||
|
||
## 四、审查结论汇总
|
||
|
||
| 项目 | 结论 |
|
||
|------|------|
|
||
| **其他页面** | 逻辑与展示均不受影响;仅替换 CompletionView 时调用方可不改或仅补参。 |
|
||
| **底部按钮** | 未调用 `navStore.switchToGrowthTab()`,不符合「回到技能 Tab-我的课程列表」需求,需补回。 |
|
||
| **数据与交互** | 写死 focusMinutes、上传模拟、hasUploadedData 与当前「仅展示接口/本地统计 + 统一分页」不一致;若采用本版,需与产品/接口对齐并接入真实数据。 |
|
||
| **建议** | 不应用本版;若保留「赛博拍立得」视觉,需在不动其他页面的前提下:① 底部按钮改为 `navStore.switchToGrowthTab()`;② 移除或对接「上传学习数据」与「专注时长」逻辑,与现有统计与导航一致。 |
|
||
|
||
**未对仓库内任何文件进行修改。**
|