001project_wildgrowth/ios/WildGrowth/COMPLETION_Y2K版_审查报告.md

4.2 KiB
Raw Blame History

CompletionView Y2K 版 — 审查报告(不应用)

审查日期2025-01-29
范围Y2K 风格完结页设计稿与附带的 Swift 代码
结论:仅审查、不修改仓库;以下为兼容性与逻辑核对结果。


1. 接口与调用方兼容性

项目 当前仓库 Y2K 提案 结论
CompletionView 初始化参数 courseId: String, courseTitle: String?, navigationPath: Binding<NavigationPath>? 与提案一致3 个参数,同名同类型) 兼容
VerticalScreenPlayerView 调用 CompletionView(courseId:, courseTitle:, navigationPath:) 无需修改 可直接编译
GrowthView / 其他 navigationDestination 若存在 .completion 且传上述 3 参数 无需修改 无影响

替换为 Y2K 版后,仅需整文件替换 CompletionView.swift无需改任何调用处


2. 数据与依赖一致性

项目 当前实现 Y2K 提案 结论
UserManager UserManager.sharedstudyStats.(time, lessons) 相同
导航 navStore.switchToGrowthTab() + navigationPath?.wrappedValue = NavigationPath()dismiss() 与提案一致
持久化 key has_revealed_course_\(courseId) has_y2k_booted_\(courseId) ⚠️ 见下
  • 持久化 key 不同:若从当前「赛博拍立得」版直接切到 Y2K 版用户在本课程下会视为「未启动过」Y2K需再按一次 SYNC 才会显示结果。若希望换肤后「已显影过的课程仍为已显影」,可把 Y2K 的 storageKey 改为与现版一致(例如继续用 has_revealed_course_\(courseId)),否则保留 has_y2k_booted_\(courseId) 亦可,属产品选择。

3. 逻辑差异(游客与加载)

项目 当前实现 Y2K 提案 建议
游客 (isGuest) 点击后不调 API直接显影并写持久化 仍执行 Task.sleep + fetchUserProfile()catch 后置 isSystemOn = true 建议在 Y2K 的 startUpload() 内保留与现版一致的游客分支:若 userManager.isGuest 则直接设 isSystemOn = true 并写持久化,不调 fetchUserProfile,避免无谓请求与约 1.2s 延迟。
登录用户 拉取 fetchUserProfile 后显影 1.2s 后拉取 + 显影) 行为一致

若严格遵循「只换皮肤、逻辑不变」,建议在 Y2K 版中补上与现版相同的 isGuest 短路逻辑。


4. UI / 实现细节核对

  • Y2K 外壳与屏幕:半透明渐变 + strokeBorder 高光 + .ultraThinMaterial、LCD 开/关色、果冻按钮与 SYNC DATA/进度态,均为纯视觉,无逻辑影响。
  • Y2KIdleView / Y2KResultView:使用 userManager.studyStats.lessons / time 与当前数据源一致;字体与 XP 风格进度条仅为样式。
  • ForEach(0..<n):提案中 ForEach(0..<3)ForEach(0..<5)ForEach(0..<80) 等以 Range<Int> 配合 id: \.self 在 SwiftUI 中合法,无需改。
  • 屏幕内布局:内屏 overlay 中再 .padding(12) 会形成双层内边距;若希望与现版内边距一致,可后续微调数值,非阻塞。

5. 影响范围(仅换 CompletionView 时)

  • 仅替换 Views/CompletionView.swift 为 Y2K 版时:
    • VerticalScreenPlayerView:无需改动。
    • MapView / MainTabView / GrowthView / ProfileView / DiscoveryView:无改动、无影响。
  • 若采纳「持久化 key 统一」或「游客短路」建议,仅需在 Y2K 版单文件内修改,不涉及其他页面。

6. 总结

维度 结论
接口兼容 三参数一致,调用方无需修改
数据与导航 与现版一致
持久化 key ⚠️ 与现版不同,换肤后需再按一次 SYNC可按需统一 key
游客逻辑 ⚠️ 建议在 Y2K 版中保留与现版相同的 isGuest 短路,实现「只换皮肤」
其他页面 无影响

审查结论Y2K 版可作为「仅换皮肤」的替换方案;建议在应用前(若采纳)补上游客短路逻辑,并按产品需求决定是否统一持久化 key。本次未对仓库做任何修改。