Skip to content

功能设计文档 ​

本文档收录 TrailSnap 待开发功能的设计草案,供社区讨论和贡献参考。


1. 图片编辑功能 ​

1.1 背景与目标 ​

用户当前只能查看照片,缺少基本的编辑能力。图片编辑是相册应用的高频需求,可为后续"自动生成朋友圈九宫格"等功能打下基础。

1.2 功能范围 ​

基础编辑

  • 裁剪(自由裁剪、比例裁剪如 1:1、16:9)
  • 旋转(90°、水平翻转、垂直翻转)
  • 缩放与拖拽

标签与标注

  • 添加文字标签(支持字体、颜色、大小)
  • 添加箭头、框选等简单图形
  • 添加时间、地点水印

滤镜与调整

  • 基础调整:亮度、对比度、饱和度
  • 预设滤镜:复古、黑白、柔和等

1.3 技术方案 ​

  • 前端使用 Canvas API 或 WebGL 实现无损编辑
  • 编辑结果支持导出为原图质量的 JPEG/PNG
  • 编辑历史记录(Undo/Redo)

1.4 优先级 ​

中优先级 - 作为工具箱模块的一部分开发


2. 照片自动整理 ​

2.1 背景与目标 ​

用户照片随时间积累杂乱,手动整理耗时。通过 AI 自动按时间、地点、内容等维度归类,减少用户操作成本。

2.2 整理规则 ​

规则说明示例
按年份月份创建 2024/2024-03 或 2024-03 文件夹2024/2024-03 或 2024-03
按日期创建 2024/2024-03-15 或 2024-03-15 文件夹2024/2024-03-15 或 2024-03-15
按人物创建 人物-张三/ 文件夹张三的人脸照片
按场景创建 美食/、宠物/ 文件夹分类后的照片

2.3 技术方案 ​

  • 使用现有元数据(EXIF、地理位置、人脸标签、场景分类)
  • 复制或移动照片(用户选择)
  • 支持预览整理结果后再执行
  • 记录整理日志,支持撤销
  • 新增:支持平铺结构和递归嵌套结构两种时间目录格式

2.4 状态 ​

已实现 - 工具箱 → 照片自动整理

2.5 优先级 ​

中优先级 → 已上线


3. 自动旅行日志 ​

3.1 背景与目标 ​

用户在旅行后常需手动整理照片、编写游记,过程繁琐。AI 可自动从照片、票据、地点等数据生成结构化旅行记录。

3.2 输入数据 ​

  • 旅行期间的照片(含元数据)
  • 识别出的火车票、飞机票、门票
  • 地理位置轨迹
  • 可能的 AI 描述与评分

3.3 输出内容 ​

结构化日志

  • 标题:旅行名称(如"2024年3月厦门之旅")
  • 时间:出发日期、返回日期、总天数
  • 行程:每日行程时间线
  • 地点:去过的城市/景点
  • 人物:同行者
  • 费用:交通、门票等分类统计

图文混排

  • 支持导出为 Markdown/HTML
  • 可直接发布到博客平台
  • 支持生成 PDF

3.4 技术方案 ​

  • 使用 LangChain/LangGraph 编排多步骤生成流程
  • 分阶段生成:行程概览 → 每日详情 → 费用统计 → 最终润色
  • 支持流式输出,展示生成进度
  • 提供模板引擎,支持自定义输出格式

3.5 优先级 ​

高优先级 - 核心差异化功能


4. 朋友圈九宫格生成 ​

4.1 背景与目标 ​

用户分享旅行照片到朋友圈时,需手动拼图、选图、配文。提供一键生成九宫格及配套文案,降低分享成本。

4.2 功能模块 ​

智能选图

  • 从旅行照片中 AI 选出 9 张最具代表性的照片
  • 考虑因素:质量评分、内容多样性、时间分布

拼图样式

  • 3×3 标准九宫格
  • 自由排版(支持 1+2+6 等异形布局)
  • 样式模板:简约、文艺、复古

文案生成

  • 根据照片内容、景点生成文案
  • 支持多种风格:诗意、幽默、简短
  • 可选择添加话题标签

4.3 技术方案 ​

  • 使用 Canvas API 实现拼图
  • 调用大模型生成文案(few-shot prompts)
  • 支持预览和微调

4.4 优先级 ​

高优先级 - 强社交传播属性


5. 视频高光剪辑 ​

5.1 背景与目标 ​

静态照片难以传达旅行氛围。从 Live Photo、视频素材中自动剪辑 15-30 秒的高光短片,适合分享到短视频平台。

5.2 功能模块 ​

素材收集

  • 支持 Live Photo 视频片段
  • 支持用户上传的视频文件
  • 支持按相册/时间筛选素材

智能剪辑

  • 自动识别高光时刻(如笑容、动作、风景转换)
  • 自动匹配合适的背景音乐
  • 生成多种时长版本(15s/30s/60s)

后期处理

  • 转场效果(淡入淡出、滑动)
  • 基础调色
  • 添加文字标题/字幕

5.3 技术方案 ​

  • 使用 OpenCV 进行视频分析(场景检测、光学流)
  • 使用 FFmpeg 进行视频处理与导出
  • 或接入云服务(如剪映 API)

5.4 优先级 ​

低优先级 - 技术复杂度高,可后期考虑


6. 网络文件夹扫描 ​

6.1 背景与目标 ​

用户的照片可能分散存储在各种网盘和网络存储中,如百度网盘、阿里云盘、OneDrive、SMB 共享目录、WebDAV 服务器等。打通这些数据源,让 TrailSnap 能够统一管理和分析跨平台的照片资产。

6.2 支持的存储类型 ​

云盘服务

服务API 类型说明
百度网盘开放 API需要申请应用获取 API Key
阿里云盘开放 APIOAuth2.0 授权
OneDriveMicrosoft Graph APIOAuth2.0 授权
Google DriveGoogle Drive APIOAuth2.0 授权
DropboxDropbox APIOAuth2.0 授权

网络文件协议

协议说明适用场景
SMB/CIFSWindows 网络共享、NAS 常用协议家庭 NAS、局域网共享
WebDAVHTTP-based 文件访问协议许多 NAS 和云服务支持
FTP/SFTP传统文件传输协议legacy 系统连接

6.3 功能模块 ​

连接管理

  • 支持添加多个存储账号
  • OAuth2.0 授权流程(云盘)
  • 账号凭据安全存储(加密)
  • 连接状态检测与自动重连

文件扫描

  • 递归扫描指定文件夹
  • 仅扫描图片文件(jpg、png、heic、raw 等)
  • 增量扫描(仅扫描新增文件)
  • 扫描进度展示与中断支持

元数据提取

  • 文件名、路径、大小、创建/修改时间
  • EXIF 元数据(相机、GPS、时间)
  • 与现有照片库去重(基于文件哈希)

预览与导入

  • 缩略图预览
  • 选择性导入(按文件夹、按日期范围)
  • 导入模式:仅索引(原文件保留在原处)或复制到本地

6.4 技术方案 ​

云盘 SDK

网络协议

架构设计

┌─────────────────────────────────────────┐
│            Storage Adapter Layer         │
│  ┌─────────┐ ┌─────────┐ ┌───────────┐ │
│  │ BaiduPCS│ │ Aliyun  │ │ OneDrive  │ │
│  └─────────┘ └─────────┘ └───────────┘ │
│  ┌─────────┐ ┌─────────┐ ┌───────────┐ │
│  │  SMB    │ │ WebDAV  │ │   SFTP    │ │
│  └─────────┘ └─────────┘ └───────────┘ │
└─────────────────────────────────────────┘
                    │
                    ▼
┌─────────────────────────────────────────┐
│           Unified File Indexer           │
│  - 文件列表抽象层                        │
│  - 去重检测(MD5/SHA256)               │
│  - 元数据标准化                          │
└─────────────────────────────────────────┘
                    │
                    ▼
┌─────────────────────────────────────────┐
│           TrailSnap Photo Store          │
│  - 导入照片到本地索引                    │
│  - 或仅保持元数据引用                    │
└─────────────────────────────────────────┘

安全性

  • 云盘 OAuth Token 安全存储(加密后存库)
  • 网络协议凭据加密存储
  • 定期刷新 Token
  • 最小权限原则(只申请读权限)

6.5 优先级 ​

高优先级 - 大幅扩展数据源,提升应用价值


7. 家庭共享与协作 ​

7.1 背景与目标 ​

家庭成员可能共用一个 TrailSnap 实例,或希望共享特定相册给家人。支持多用户协作场景。

7.2 功能模块 ​

权限管理

  • 管理员、普通用户角色
  • 相册级权限控制(查看、编辑、分享)
  • 访客模式(仅查看指定相册)

相册分享

  • 生成分享链接(可选密码保护)
  • 有效期控制(24小时/7天/永久)
  • 禁止下载开关

评论与点赞

  • 家庭成员可对照片评论
  • 简单点赞反应

7.3 技术方案 ​

  • 复用现有用户系统,增加角色字段
  • 分享链接使用 JWT 或临时 Token
  • 评论存储在独立表

7.4 优先级 ​

低优先级 - 涉及多用户场景可后续考虑


8. 智能相册推荐 ​

8.1 背景与目标 ​

用户可能不会主动创建相册。系统可主动推荐"值得整理"的相册,如"周末小聚"、"十一长假"等。

8.2 推荐场景 ​

场景触发条件
周末小聚周六/日有 5+ 张照片,集中在一地
十一长假国庆假期有 20+ 张照片
美食集锦近期"美食"分类有 10+ 张照片
家人时刻近期含"父母""子女"标签照片居多
景点打卡某 5A 景区有 3+ 张照片

8.3 技术方案 ​

  • 定时任务扫描,分析近期照片分布
  • 基于规则+AI 识别生成推荐
  • 展示给用户确认后创建相册

8.4 优先级 ​

中优先级 - 提升用户活跃度


优先级汇总 ​

优先级功能
高自动旅行日志、朋友圈九宫格、网络文件夹扫描
中图片编辑、智能相册推荐
低视频高光剪辑、家庭共享与协作
已上线照片自动整理

本文档为设计草案,具体实现细节可在正式开发前进一步细化。欢迎通过 Issue 或 PR 贡献想法。

基于 AGPL-3.0 许可发布