# 给 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 等业务数据。**