3.9 KiB
3.9 KiB
CompletionView Skeleton & Reveal 版 — 审查报告(不应用)
审查日期:2025-01-29
范围:Skeleton & Reveal Edition(纯白卡片 + 呼吸骨架屏 + 蓝色弥散光 + 粒子庆祝)
结论:仅审查、不修改仓库;需求落实正确,ParticleModifier 已按前次审查完成修复,有一处可选视觉层级调整。
1. 需求落实情况
| 项目 | 要求 | 定稿实现 | 结论 |
|---|---|---|---|
| 纯白卡片 | 彻底去「脏」,回归纯白 | background(Color.white) |
✅ |
| 拒绝空状态 | 未激活时用骨架屏替代留白 | IdleSkeletonView:RoundedRectangle 骨架 + 呼吸透明度 | ✅ |
| 呼吸骨架 | 暗示「数据等你揭开」 | isBreathing ? 0.3 : 0.6 配合 repeatForever(autoreverses: true) |
✅ |
| 蓝色弥散光 | 激活后四周泛蓝光 | shadow(color: isSystemOn ? brandBlue.opacity(0.25) : ..., radius: 40) |
✅ |
| 彩带爆炸 | 激活瞬间粒子庆祝 | ConfettiExplosion(Circle + Capsule) | ✅ |
| 布局平衡 | 激活后数字填补按钮消失空间 | ActiveDashboard 使用 Spacer 居中,无按钮占位 | ✅ |
2. ParticleModifier 修复确认
Magic Card 版审查中的两处问题均已修正:
| 项目 | Magic Card 版问题 | Skeleton & Reveal 实现 | 结论 |
|---|---|---|---|
| 弧度转换 | cos(angle) 使用角度制 |
angleRad = angleDegrees * .pi / 180,使用 cos(angleRad) |
✅ |
| 随机值稳定 | angle/distance 为计算属性,每次重算 |
init 中生成并存入 let angleRad、let distance |
✅ |
| 粒子颜色 | randomElement()! 每次重绘变化 |
confettiColors[i % confettiColors.count] 按 index 固定 |
✅ |
3. 逻辑继承
| 项目 | 结论 |
|---|---|
| 持久化 Key | ✅ has_revealed_course_\(courseId) |
| 游客短路 | ✅ 0.5s 延迟,performActivation(0, 0),不调网络 |
| 登录用户 | ✅ 0.8s 延迟 → fetchUserProfile → performActivation |
| checkSystemStatus | ✅ 已激活时恢复最终值 |
| 数字滚动 | ✅ withAnimation(.linear(1.5)) + RollingNumberText |
4. 可选:粒子与文字层级
当前实现:ConfettiExplosion 使用 .zIndex(2),卡片内容 VStack 使用默认 zIndex,因此粒子叠在文字之上。
注释意图:「粒子炸在文字后面,但在卡片背景前面」——若希望粒子在文字后面,需要降低粒子的 zIndex,或提高卡片内容的 zIndex。
建议:若需粒子在文字后面,可为卡片 VStack 添加 .zIndex(1),并为 ConfettiExplosion 使用 .zIndex(0) 或不设置。若希望粒子在前面以增强庆祝感,可保持现状。属视觉偏好,非必须修改。
5. 其他实现细节
| 项目 | 说明 |
|---|---|
| 骨架 blur(radius: 3) | 增加模糊感,在多数设备上可接受;低端机若有卡顿再考虑去掉 |
| 呼吸动画 | onAppear 中 withAnimation(.easeInOut(duration: 1.0).repeatForever(autoreverses: true)) 驱动 isBreathing,逻辑正确 |
| ScaleButtonStyle | 未使用,无重复定义风险 |
| 接口 | 三参数不变,可直接替换 |
6. 总结
| 维度 | 结论 |
|---|---|
| 需求落实 | ✅ 纯白、骨架屏、弥散光、粒子、布局均符合 |
| ParticleModifier | ✅ 弧度、随机稳定、颜色已修正 |
| 逻辑继承 | ✅ Key、游客、登录用户、数字滚动正确 |
| 粒子层级 | ⚪ 可选:按需求调整 zIndex 以实现「粒子在文字后面」 |
| 接口兼容 | ✅ 可直接替换 |
审查结论:Skeleton & Reveal 版满足设计要求,ParticleModifier 已正确修复,可直接使用;如需粒子在文字后方,可按上节建议调整 zIndex。本次未对仓库做任何修改。