43 lines
2.6 KiB
Markdown
43 lines
2.6 KiB
Markdown
|
|
# 给 Gemini 的反馈:完结页不要改逻辑层
|
|||
|
|
|
|||
|
|
## 核心要求
|
|||
|
|
|
|||
|
|
**坚持「点击按钮时拉后端」**,不要改逻辑层。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 数据流(必须保持)
|
|||
|
|
|
|||
|
|
- **当前逻辑**:用户点击「标记完成」/「上传学习数据」等按钮 → **在 CompletionView 内部**调用后端拉取最新数据(如 `UserManager.shared.fetchUserProfile()`)→ 用拉取结果(如 `UserManager.shared.studyStats.lessons` / `.time`)展示。
|
|||
|
|
- **要求**:完结页的**数据来源与拉取时机**保持上述逻辑,即**点击按钮时在页面内拉后端**,不在父视图提前传「已完成小节数、专注时长」等业务数据。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 不要做的改动(逻辑层)
|
|||
|
|
|
|||
|
|
- **不要**让 CompletionView 增加必选参数 `completedLessonCount`、`focusMinutes` 等由父视图传入的「业务数据」。
|
|||
|
|
- **不要**把「拉取最新统计」的责任从 CompletionView 挪到父视图(如 VerticalScreenPlayerView)或改成「进入页面时父视图传参」。
|
|||
|
|
- **不要**改变「点击按钮 → 调接口 → 用接口/本地统计结果展示」这一套流程;可以保留「上传/显影」的**交互与动效**,但**显影后展示的数据必须来自点击后拉取的结果**(例如继续用 UserManager.studyStats 或等价数据源)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 可以做的(仅 UI / 视觉)
|
|||
|
|
|
|||
|
|
- 可以改完结页的**视觉与动效**(例如拍立得、赛博海报、骨架、显影动画等)。
|
|||
|
|
- 可以改**按钮文案**(如「上传学习数据」「标记完成」)和**排版**(顶对齐、大数字等)。
|
|||
|
|
- 可以保留 **UserDefaults 显影状态**(已显影过则直接展示结果态,不重复播动画),只要结果态展示的数据仍来自**点击时拉取的后端/统计**(例如首次显影时点按钮拉取,之后用本地缓存或同一数据源)。
|
|||
|
|
- **回到我的内容**:必须调用 `navStore.switchToGrowthTab()`,回到技能 Tab。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 接口约定(建议)
|
|||
|
|
|
|||
|
|
- CompletionView 的入参保持与现有一致或仅做**可选**扩展(如可选 `navigationPath`),**不要**新增必选的「业务数据」参数(如 `completedLessonCount: Int`、`focusMinutes: Int`)。
|
|||
|
|
- 小节数、专注时长等**在 CompletionView 内部**从现有数据源获取(如 UserManager.studyStats),并在**用户点击按钮后**通过现有或约定的接口拉取最新再展示。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 一句话总结
|
|||
|
|
|
|||
|
|
**只改完结页的 UI/动效/文案,不要改「点击按钮时拉后端、用拉取结果展示」的逻辑与数据层;不要通过父视图传入 completedLessonCount、focusMinutes 等业务数据。**
|