2.6 KiB
2.6 KiB
给 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 等业务数据。