功能设计文档
本文档收录 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 |
| 阿里云盘 | 开放 API | OAuth2.0 授权 |
| OneDrive | Microsoft Graph API | OAuth2.0 授权 |
| Google Drive | Google Drive API | OAuth2.0 授权 |
| Dropbox | Dropbox API | OAuth2.0 授权 |
网络文件协议
| 协议 | 说明 | 适用场景 |
|---|---|---|
| SMB/CIFS | Windows 网络共享、NAS 常用协议 | 家庭 NAS、局域网共享 |
| WebDAV | HTTP-based 文件访问协议 | 许多 NAS 和云服务支持 |
| FTP/SFTP | 传统文件传输协议 | legacy 系统连接 |
6.3 功能模块
连接管理
- 支持添加多个存储账号
- OAuth2.0 授权流程(云盘)
- 账号凭据安全存储(加密)
- 连接状态检测与自动重连
文件扫描
- 递归扫描指定文件夹
- 仅扫描图片文件(jpg、png、heic、raw 等)
- 增量扫描(仅扫描新增文件)
- 扫描进度展示与中断支持
元数据提取
- 文件名、路径、大小、创建/修改时间
- EXIF 元数据(相机、GPS、时间)
- 与现有照片库去重(基于文件哈希)
预览与导入
- 缩略图预览
- 选择性导入(按文件夹、按日期范围)
- 导入模式:仅索引(原文件保留在原处)或复制到本地
6.4 技术方案
云盘 SDK
- 百度网盘:baidupcs-go 或官方 Python SDK
- 阿里云盘:自研 OAuth2 + API 调用
- OneDrive:Microsoft Graph SDK for Python
- Google Drive:google-api-python-client
- Dropbox:dropbox-sdk-python
网络协议
- SMB:pysmb 或 python-smb
- WebDAV:webdavclient3
- FTP/SFTP:ftplib / pysftp
架构设计
┌─────────────────────────────────────────┐
│ 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 贡献想法。