feat: M2-M4 完成,添加 AI 增强、设计系统、App Store 准备

新增功能:
- AI 超分辨率模块 (Real-ESRGAN Core ML)
- Soft UI 设计系统 (DesignSystem.swift)
- 设置页、隐私政策页、引导页
- 最近作品管理器

App Store 准备:
- 完善截图 (iPhone 6.7"/6.5", iPad 12.9")
- App Store 元数据文档
- 修复应用图标 alpha 通道
- 更新显示名称为 Live Photo Studio

工程配置:
- 配置 Git LFS 跟踪 mlmodel 文件
- 添加 Claude skill 开发指南
- 更新 .gitignore 规则

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
empty
2025-12-16 10:24:31 +08:00
parent 64cdb82459
commit 5aba93e967
46 changed files with 5279 additions and 421 deletions

296
docs/TEST_MATRIX.md Normal file
View File

@@ -0,0 +1,296 @@
# Live Photo Maker 测试文档
## 测试矩阵
### 设备覆盖
| 设备类型 | 系统版本 | 测试优先级 |
|---------|---------|-----------|
| iPhone (任意机型) | iOS 18+ | P0 |
| iPhone (任意机型) | iOS 17.x | P0 |
| iPhone (任意机型) | iOS 16.x | P1 |
| iPad (任意机型) | iPadOS 18+ | P1 |
| iPad (任意机型) | iPadOS 17.x | P1 |
### 素材覆盖
| 素材类型 | 编码 | 帧率 | 方向 | HDR | 测试优先级 |
|---------|------|------|------|-----|-----------|
| 标准视频 | H.264 | 30fps | 竖屏 | SDR | P0 |
| 标准视频 | H.264 | 60fps | 竖屏 | SDR | P0 |
| HEVC 视频 | HEVC | 30fps | 竖屏 | SDR | P0 |
| HEVC 视频 | HEVC | 60fps | 竖屏 | SDR | P1 |
| 横屏视频 | H.264 | 30fps | 横屏 | SDR | P1 |
| HDR 视频 | HEVC | 30fps | 竖屏 | HDR | P1 |
| 4K 视频 | H.264/HEVC | 30fps | 竖屏 | SDR | P2 |
---
## 测试用例
### TC001: 基础导入流程
**前置条件**: 相册中有可用视频
**步骤**:
1. 打开 App进入首页
2. 点击「选择视频」按钮
3. 从相册选择一个 2-5 秒的视频
4. 等待视频加载完成
**预期结果**:
- 视频加载成功,跳转到编辑页
- 编辑页显示视频预览
- 时长滑块显示正确的时间范围
**优先级**: P0
---
### TC002: 编辑页参数调整
**前置条件**: 已导入视频,处于编辑页
**步骤**:
1. 调整时长滑块,选择 1-1.5 秒区间
2. 切换不同的比例模板(锁屏/全屏/4:3
3. 使用双指手势缩放和拖动预览区域
4. 开启/关闭兼容模式
**预期结果**:
- 时长滑块可正常拖动,显示选中时长
- 切换比例后预览区域实时更新
- 手势操作流畅,裁剪区域可调整
- 兼容模式开关状态正确显示
**优先级**: P0
---
### TC003: 生成 Live Photo
**前置条件**: 已完成编辑参数设置
**步骤**:
1. 点击「生成 Live Photo」按钮
2. 观察进度页面的阶段变化
3. 等待生成完成
**预期结果**:
- 显示进度条和阶段文案
- 阶段依次为normalize → extractKeyFrame → writePhotoMetadata → writeVideoMetadata → saveToAlbum → validate
- 生成成功后跳转到结果页
- 结果页显示「Live Photo 已保存」
**优先级**: P0
---
### TC004: 相册验证
**前置条件**: Live Photo 已生成并保存
**步骤**:
1. 打开系统「照片」App
2. 找到刚保存的照片
3. 查看照片详情,确认有 LIVE 标识
4. 长按照片,触发动画播放
**预期结果**:
- 照片左上角显示「LIVE」标识
- 长按可播放动画效果
- 动画时长约 0.9 秒
**优先级**: P0
---
### TC005: 设置为壁纸iOS 17+
**前置条件**: Live Photo 已保存,设备为 iOS 17+
**步骤**:
1. 在结果页点击「查看壁纸设置指南」
2. 按引导打开照片 App
3. 选择 Live Photo → 分享 → 用作壁纸
4. 确认 Live Photo 图标已开启(高亮)
5. 完成设置,锁屏长按测试
**预期结果**:
- 引导页正确显示 iOS 17+ 的步骤
- 壁纸设置成功
- 锁屏长按可触发动画
**优先级**: P0
---
### TC006: 兼容模式测试
**前置条件**: 有 4K/HDR/HEVC 视频素材
**步骤**:
1. 导入高规格视频
2. 查看自动诊断建议
3. 开启兼容模式
4. 生成 Live Photo
**预期结果**:
- 显示「建议开启兼容模式」提示
- 兼容模式下参数自动调整为 720p/30fps/H.264/SDR
- 生成成功,文件体积较小
**优先级**: P1
---
### TC007: 取消生成
**前置条件**: 正在生成 Live Photo
**步骤**:
1. 在进度页点击「取消」按钮
2. 确认取消操作
**预期结果**:
- 生成任务立即停止
- 返回编辑页或首页
- 缓存目录中的临时文件已清理
**优先级**: P1
---
### TC008: 最近作品
**前置条件**: 已成功生成至少一个 Live Photo
**步骤**:
1. 返回首页
2. 查看「最近作品」区域
3. 点击最近作品卡片
**预期结果**:
- 显示最近生成的作品缩略图
- 显示比例和时间信息
- 点击可进入壁纸引导页
**优先级**: P1
---
### TC009: 设置页功能
**前置条件**: 无
**步骤**:
1. 点击首页右上角设置图标
2. 查看权限状态
3. 点击「清理缓存」
4. 点击「导出诊断报告」
**预期结果**:
- 权限状态正确显示(已授权/未授权)
- 缓存清理后显示「0 KB」
- 诊断报告生成并弹出分享面板
**优先级**: P2
---
### TC010: iOS 16 系统限制提示
**前置条件**: 设备为 iOS 16
**步骤**:
1. 完成 Live Photo 生成
2. 进入壁纸引导页
**预期结果**:
- 显示「iOS 17+ 才支持锁屏动态效果」警告
- 引导步骤说明 iOS 16 的限制
- FAQ 包含相关问题解答
**优先级**: P1
---
### TC011: AI 超分辨率增强
**前置条件**: 设备支持 AI 增强iOS 17+≥4GB RAM
**步骤**:
1. 导入视频,进入编辑页
2. 开启「AI 超分辨率」开关
3. 确认显示「分辨率提升约 2 倍」等信息
4. 点击生成 Live Photo
5. 观察进度页显示「AI 增强封面」阶段
**预期结果**:
- AI 增强阶段耗时约 2-3 秒
- 生成成功,封面图分辨率提升
- 无崩溃或异常
**优先级**: P1
---
### TC012: AI 增强不可用设备
**前置条件**: 设备不支持 AI 增强iOS 16 或 <4GB RAM
**步骤**:
1. 进入编辑页
2. 查看 AI 超分辨率区域
**预期结果**:
- 开关置灰不可点击
- 显示「当前设备不支持 AI 增强」提示
**优先级**: P2
---
## 异常场景
### TC013: 权限被拒绝
**步骤**: 在系统设置中拒绝相册权限后尝试保存
**预期结果**: 显示错误提示,引导用户前往设置授权
---
### TC014: 视频时长不足
**步骤**: 导入时长小于 0.5 秒的视频
**预期结果**: 显示「视频时长不足」错误提示
---
### TC015: 磁盘空间不足
**步骤**: 在磁盘空间极低时尝试生成
**预期结果**: 显示存储空间不足错误,建议清理缓存
---
## 验收标准
- [ ] P0 用例全部通过TC001-TC005
- [ ] P1 用例通过率 ≥ 90%TC006-TC011
- [ ] 无崩溃
- [ ] 生成成功率 ≥ 95%(标准素材)
- [ ] 相册识别率 100%
- [ ] AI 增强成功率 ≥ 90%(支持设备)
## 测试用例统计
| 优先级 | 用例数 | 说明 |
|--------|--------|------|
| P0 | 5 | TC001-TC005核心流程 |
| P1 | 6 | TC006-TC011进阶功能 |
| P2 | 4 | TC012, TC013-TC015边界场景 |
| **总计** | **15** | |