Files
suixinkan_ios_new/suixinkan/Features/TravelAlbum/TravelAlbum.md
汉秋 c71b45bdfd 对齐有线传图页 Android UI,并改用相对路径持久化本地照片。
还原顶栏、浮动卡片、时间侧栏与底部交互;照片路径改为 CameraDownloads 相对路径并兼容旧数据;格式 Chip 固定 JPG 且不可点击。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 11:16:28 +08:00

2.7 KiB
Raw Blame History

TravelAlbum

职责

旅拍相册(新增相册 / 新建相册任务)模块,包含任务创建、相册详情、小程序码与 USB 有线传图上传。

入口

  • 权限 URItravel_albumTravelAlbumEntryView
  • Android 对照:ui/travelalbumWiredCameraTransferScreen.kt

核心页面

页面 说明
TravelAlbumEntryView 新增相册列表、新建任务入口;卡片主区域点击进入详情,底部保留「拍传」「相册码」
CreateTravelAlbumSheet 先拍再买 / 买了再拍创建弹窗
TravelAlbumDetailView 相册详情与素材管理
WiredCameraTransferView 有线传图页UI 对齐 Android

有线传图 UI 结构

Android 对照:zhiflyfollow/.../WiredCameraTransferScreen.kt

WiredTransferHeaderView          # 蓝色顶栏:相册名 + 手机号
WiredTransferControlCard         # 浮动白卡片:设备存储 / 连接状态 / 筛选 Chip / Tab
WiredTransferSelectAllBar        # 勾选模式全选栏(条件显示)
WiredTransferPhotoListPanel      # 时间侧栏 + 30 分钟分组列表
WiredTransferBottomBar           # 批量上传 + 指定上传
SpecifyUploadBottomSheet         # 指定上传选项弹层

有线传图交互流程

  1. 刷新:顶部连接区「刷新」按钮 → refreshCameraFiles() → 同步相机历史文件
  2. 批量上传三态
    • 首次点击 → 进入勾选模式
    • 有选中项 → 上传选中照片
    • 无选中项 → 取消选择
  3. 指定上传:底部 Sheet 选择「上传所有未上传的照片」或「上传所有今日拍摄的照片」
  4. 时间侧栏:按 30 分钟时间段分组,点击侧栏滚动到对应 section
  5. 格式 Chip:当前固定展示 JPG与「不修图」一样不可点击RAW 等格式后续扩展

业务流程

  1. 创建任务:POST .../travel-album/create
  2. 进入有线传图Sony 相机 PTP 下载(Core/CameraTethering
  3. OSS 上传:复用 OSSUploadService.uploadAlbumFile
  4. 素材登记:POST .../travel-album/upload-material
  5. 本地照片路径以相对 Documents 的路径持久化(如 CameraDownloads/xxx.JPG),加载时自动迁移旧版绝对路径

解耦关系

  • CameraTransferPipeline 只依赖 CameraAssetUploadSink 协议
  • TravelAlbumMaterialUploader 实现 OSS + 后端登记
  • 与「相册管理」(Features/AssetsAPI、Store、路由完全隔离

依赖模块

  • Core/CameraTethering — USB/PTP 相机
  • Core/CameraTransfer — 传输编排
  • Core/Upload — OSS STS 上传

二期待补齐

  • RAW 预览
  • 格式 Chip 扩展 RAW / JPEG+RAW并与 CameraTransferPipeline 联动
  • 设备存储不足时的业务侧限制(当前仅 UI 提示弹窗)