Files
to-live-photo/TASK.md
empty 5aba93e967 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>
2025-12-16 10:24:31 +08:00

6.4 KiB
Raw Blame History

TASKto-live-photo

说明:本清单按阶段拆解研发事项,默认最低支持 iOS/iPadOS 16+,先完成 MVP 闭环,再逐步完善。

M0技术预研 / POC以"系统可识别 Live Photo"为第一目标)

  • 建立 Xcode 工程骨架SwiftUI 优先),设置 Deployment Target = iOS/iPadOS 18.0
  • 补齐权限与 Info.plist 文案:
    • NSPhotoLibraryUsageDescription
    • NSPhotoLibraryAddUsageDescription
  • POC最小链路跑通不做复杂编辑
    • 从相册导入视频PHPicker视频过滤
    • 以默认参数(~0.917s、1080x1920、60fps 策略)生成 photo + pairedVideo
    • 写入相册PHAssetCreationRequest 同时写入 .photo 与 .pairedVideo
    • 校验:保存后按 assetId 取回并验证 Live 识别(相册 Live 标识 + 长按可播 + 可设置为动态壁纸
  • 约束与策略确认(写入代码常量/配置):
    • 时长限制:标准化为 ~0.917s(与 iPhone 原生 Live Photo 一致)
    • 分辨率上限:竖屏 1080x1920横屏 1920x1080
    • 帧率策略:统一转换为 60fps
    • HDR 策略:默认转 SDRExportParams.hdrPolicy = .toneMapToSDR
    • 编码策略:默认 H.264ExportParams.codecPolicy = .fallbackH264
  • 设计基础设施:
    • WorkItem / ExportParams 数据模型(与 TECHSPEC 对齐)
    • CacheManager按 workId 建目录
    • LoggerLivePhotoLogger 阶段化日志

M0 完成定义

  • 能在至少 1 台 iPhone + 1 台 iPad 上生成并保存 Live Photo且系统相册可识别有 Live 标识,长按可播放)。
  • 额外达成:生成的 Live Photo 可设置为动态壁纸,动态效果正常。

M1MVP导入→编辑→生成→保存→引导

1) UI 页面闭环

  • HomeView首页导入入口最近作品功能移至 M2
  • EditorView时长裁剪、预览比例裁剪/封面帧选择移至下方编辑能力)
  • ProcessingView进度条 + 阶段文案 + 返回重试
  • ResultView保存到相册、进入壁纸引导、继续制作
  • WallpaperGuideView按系统版本展示步骤卡片、FAQ、打开照片 App、完成确认

2) 编辑能力MVP 版)

  • 比例模板iPhone 锁屏 / 全面屏 / 4:3 等(先做 2~3 个核心模板)
  • 裁剪手势:缩放 + 拖拽,保持比例
  • 时长裁剪slider1~1.5s 范围)
  • 封面帧:滑杆选择 keyFrameTime实时刷新封面预览

3) 生成与保存(与 TECHSPEC 阶段枚举对齐)

  • 生成管线normalize → extractKeyFrame → writePhotoMetadata → writeVideoMetadata → saveToAlbum → validate
  • 取消策略:取消时终止任务并清理未写入相册的中间文件
  • 错误码与可行动建议:覆盖 LPB-001/101/201/301/401/901

4) 引导内容MVP 版)

  • 版本检测iOS/iPadOS 16 显示"系统限制/不支持锁屏 Live 动效"的明确文案
  • iOS/iPadOS 17+:展示步骤卡片(照片 App → 分享 → 用作壁纸 → 开启 Live
  • FAQMotion not available、低电量模式、找不到 Live 按钮等

5) 基础埋点(可先打印日志,后续再接 SDK

  • home_import_video_click / import_video_success
  • editor_generate_click / build_livephoto_start / build_livephoto_fail
  • save_album_success / save_album_fail
  • guide_open / guide_complete

6) MVP QA手工为主

  • 测试矩阵iPhone 1~2 台 + iPad 1 台iOS/iPadOS 17+ 与 16 各至少 1 台
  • 素材覆盖H.264/HEVC、30/60fps、竖/横、SDR/HDR
  • 验收点:生成成功率、保存成功率、相册识别率、引导文案准确性
  • 测试文档docs/TEST_MATRIX.md包含 13 个测试用例)

M1 完成定义

  • 按 PRD 的 MVP 验收标准打通闭环:生成 Live Photo → 保存相册可识别 → 可进入引导并在不同系统版本下给出正确提示。

M2完善体验提升 + 失败率降低)

  • 兼容模式开关UI 可见):降分辨率/30fps/H.264/SDR
  • 自动诊断与建议:根据素材参数提示"建议缩短/建议兼容模式/建议转 SDR"等
  • iPad 编辑页布局优化:左右分栏(预览/参数)
  • 最近作品列表完善:持久化(仅存参数与缩略图/assetId不重复存媒体
  • 设置页(可选):权限状态、清理缓存、反馈入口
  • 错误反馈包导出可选builder.log + 参数(不包含媒体内容)

M3稳定性 / 上线准备

  • 性能与内存优化:大视频处理、峰值内存控制
  • 崩溃与异常收敛:日志脱敏、错误归因完善(按 stage 统计)
  • App Store 合规检查:权限文案、引导表述(不承诺一键设置壁纸)、隐私说明
  • 产出核心文档补齐(按需要最小化):
    • 测试文档MVP 测试矩阵与用例
    • 用户手册:导入/生成/保存/设置引导与常见问题

M4AI 增强(差异化功能)

  • Real-ESRGAN Core ML 集成架构
    • AIEnhancer 模块:公共 API 和配置
    • RealESRGANProcessorCore ML 推理逻辑
    • TiledImageProcessor分块处理内存优化
    • ImageFormatConverter格式转换工具
  • LivePhotoCore 集成
    • ExportParams 扩展 aiEnhanceConfig
    • LivePhotoBuildStage 新增 .aiEnhance 阶段
    • resolveKeyPhotoURL 集成 AI 增强(失败静默降级)
  • UI 集成
    • EditorView AI 超分辨率开关
    • ProcessingView 新阶段文案
    • 设备能力检查isAvailable
  • 模型准备
    • 使用预转换的 Real-ESRGAN x4plus Core ML 模型来源john-rocky/CoreML-Models
    • 将 RealESRGAN_x4plus.mlmodel 放入 Resources 目录66.9MB,编译后 64MB
    • Package.swift 已配置模型资源打包
    • 模型输入 512x512输出 2048x2048实际放大约 2.25x

M5未来优化可选

  • 包体积优化
    • 使用 INT8 量化模型(预估可从 64MB 降至 ~16MB
    • 或使用 On-Demand Resources 按需下载模型
  • 性能优化
    • 尝试使用支持灵活输入尺寸的模型(避免缩放损失)
    • 探索 Metal Performance Shaders 替代方案

决策备忘(后续需要你拍板)

  • HDR 默认策略:默认转 SDR vs 首次提示用户选择
  • 编码兜底策略:完全自动兜底 vs 失败后提示开启兼容模式
  • 高级合成(照片+视频)进入哪个阶段(建议 M2