001project_wildgrowth/ios/WildGrowth/COMPLETION_git_1.30dazhi合并前...

137 lines
6.2 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.

# 1.30dazhi合并前 · 完结页相关变更清单(禁止应用)
**说明**:根据 git 拉取的 **1.30dazhi合并前** 分支与 commit **f725f31** 核对:除完结页外,**其他页面是否有被影响**。
**结论**:仅做审查与清单整理,**绝对禁止应用任何代码**。
---
## 一、当前分支与提交
- **当前分支**`1.30dazhi合并前`
- **完结页相关提交**`f725f31` — `feat: 完成页逻辑与占位页进入、无完成按钮;课程完成导航与文档`
- **工作区**:有 **1 个未提交修改**`ios/WildGrowth/WildGrowth/VerticalScreenPlayerView.swift`(约 41 行变更)
---
## 二、f725f31 中「除完结页外」被改动的文件(其他页面)
**f725f31** 里,**除了** 新增的 `CompletionView.swift` 和文档、以及 `VerticalScreenPlayerView.swift` 的完成页逻辑外,**以下页面/文件也被一起改动了**
### 1. CourseNavigation.swift
| 变更 | 说明 |
|------|------|
| `.player` | 由 `(courseId, nodeId)` 改为 `(courseId, nodeId, isLastNode, courseTitle)` |
| 新增 `.completion` | `(courseId, courseTitle, completedLessonCount)` |
| 注释 | 「从 HomeView 提取」改为「供 DiscoveryView / GrowthView / MapView / ProfileView 共用」 |
**影响**:所有使用 `CourseNavigation.player` / `.completion` 的调用方必须传新参数或处理新 case。
---
### 2. MainTabView.swift
| 变更 | 说明 |
|------|------|
| Tab 选中状态 | 由 `@State private var selection` 改为使用 `navStore.selectedTab` |
| 新增 `NavigationStore` | `@Published var selectedTab`、`func switchToGrowthTab()` |
| TabView 绑定 | `TabView(selection: $selection)``TabView(selection: $navStore.selectedTab)` |
| 登录成功跳转 | `selection = 2``navStore.selectedTab = 2` |
| 多处 print | `selection``navStore.selectedTab` |
**影响**Tab 切换与完成页「回到技能页」依赖 `navStore.selectedTab``switchToGrowthTab()`
---
### 3. MapView.swift
| 变更 | 说明 |
|------|------|
| 点击小节进入播放器 | `CourseNavigation.player(courseId, nodeId)``CourseNavigation.player(courseId, nodeId, isLastNode, courseTitle)` |
| 新增 `isLastNode` | `(chapter.id == data.chapters.last?.id) && (index == chapter.nodes.count - 1)` |
| 传入 `courseTitle` | `data.courseTitle` |
**影响**:从地图进播放器时,会多传 `isLastNode`、`courseTitle`,与 `CourseNavigation` 新签名一致。
---
### 4. ProfileView.swift
| 变更 | 说明 |
|------|------|
| `.map` | `MapView(courseId:)``MapView(courseId:, navigationPath: $navStore.profilePath)` |
| `.player` | `VerticalScreenPlayerView` 增加 `navigationPath: $navStore.profilePath`、`isLastNode`、`courseTitle` |
| 新增 `.completion` | `CompletionView(courseId, courseTitle, completedLessonCount)` |
**影响**:我的 Tab 下地图、播放器、完成页的导航与传参全部按新枚举和完成页流程改过。
---
### 5. DiscoveryView.swift
| 变更 | 说明 |
|------|------|
| `.map` | `MapView(courseId:)``MapView(courseId:, navigationPath: $navStore.homePath)` |
| `.player` | `VerticalScreenPlayerView` 增加 `isLastNode`、`courseTitle`(原已有 navigationPath |
| 新增 `.completion` | `CompletionView(courseId, courseTitle, completedLessonCount)` |
**影响**:发现 Tab 下地图、播放器、完成页的导航与传参全部按新枚举和完成页流程改过。
---
### 6. GrowthView.swift
| 变更 | 说明 |
|------|------|
| `.player` | `VerticalScreenPlayerView` 增加 `isLastNode`、`courseTitle`(原已有 MapView navigationPath |
| 新增 `.completion` | `CompletionView(courseId, courseTitle, completedLessonCount)` |
**影响**:技能 Tab 下播放器、完成页的导航与传参全部按新枚举和完成页流程改过。
---
### 7. VerticalScreenPlayerView.swiftf725f31 内)
| 变更 | 说明 |
|------|------|
| 占位页 | `CompletionPlaceholderPage` 由「带 courseId/courseTitle/navigationPath + onAppear 里 push」改为「纯视觉占位」 |
| 新增 | TabView 上 `.onChange(of: currentNodeId)`,当 `newId == "wg://completion"` 时 0.1s 后 append `.completion` |
**影响**:完成页进入方式从「占位页 onAppear」改为「父视图 onChange」避免预加载误触。
---
## 三、当前工作区未提交改动(仅 1 个文件)
| 文件 | 变更概要 |
|------|----------|
| **VerticalScreenPlayerView.swift** | 在 f725f31 基础上CompletionPlaceholderPage 去掉参数、改为纯 ZStackTabView 增加 `.onChange(of: currentNodeId)` 的完成页 push 逻辑与上面「f725f31 内」描述一致,可能是同一逻辑的又一次提交前微调或重复修改) |
**其他页面**:当前 **无** 未提交修改。GrowthView、ProfileView、DiscoveryView、MapView、MainTabView、CourseNavigation 等在工作区均为已提交状态f725f31
---
## 四、直接回答「除了完结页,其他页面有没有被影响」
**有。**
在引入完结页的 **f725f31** 中,除了:
- 新增:`CompletionView.swift`、`COMPLETION_PAGE_MEANING.md`、`COMPLETION_VIEW_*` 等文档
- 修改:`VerticalScreenPlayerView.swift`(占位页 + 完成页进入逻辑)
还**一并修改了**以下「其他页面」以支持完成页导航与播放器参数:
1. **CourseNavigation.swift** — 枚举增加 `.completion`、`.player` 增加 `isLastNode`、`courseTitle`
2. **MainTabView.swift** — Tab 状态迁到 `navStore.selectedTab`,新增 `switchToGrowthTab()`
3. **MapView.swift** — 进播放器时传 `isLastNode`、`courseTitle`
4. **ProfileView.swift** — MapView 传 navigationPath播放器传 isLastNode、courseTitle增加 `.completion` destination
5. **DiscoveryView.swift** — MapView 传 navigationPath播放器传 isLastNode、courseTitle增加 `.completion` destination
6. **GrowthView.swift** — 播放器传 isLastNode、courseTitle增加 `.completion` destination
因此:**1.30dazhi合并前** 分支上,完结页不是「只动完结页」,而是**和上述 6 个文件一起**在 f725f31 里改的;当前工作区里,只有 **VerticalScreenPlayerView.swift** 还有未提交修改,其他页面没有新的未提交变更。
---
**未对仓库进行任何应用或修改操作。**