284 lines
10 KiB
Markdown
284 lines
10 KiB
Markdown
# "想拍" App 产品需求文档 (PRD) - MVP版本
|
||
|
||
| 文档版本 | V1.0 (MVP) |
|
||
| ------------ | ----------------------- |
|
||
| **创建日期** | 2025年9月11日 |
|
||
| **创建人** | Claude |
|
||
| **项目名称** | 想拍 (snapwish) |
|
||
| **项目描述** | Shoot What Inspires You |
|
||
|
||
## 1. 引言
|
||
|
||
### 1.1. 项目背景
|
||
|
||
许多摄影爱好者和创意工作者在日常浏览社交媒体(如微博、Twitter、Instagram、Pinterest等)时,会发现很多能激发自己拍摄灵感的图片。然而,这些图片往往散落在各个平台的收藏夹或手机相册中,难以统一管理和快速查找。当用户想要寻找拍摄灵感时,需要在多个应用和文件夹中翻找,效率低下。"想拍"旨在解决这一痛点,提供一个统一的灵感收集和管理工具。
|
||
|
||
### 1.2. 产品愿景
|
||
|
||
成为摄影爱好者和创意人士首选的、最便捷的拍摄灵感收集与管理应用。通过无缝的分享体验和强大的分类功能,帮助用户捕捉、整理并随时回顾每一个创意火花。
|
||
|
||
### 1.3. 目标用户
|
||
|
||
- **摄影爱好者**:希望系统性地收集和整理摄影作品,以供学习和模仿
|
||
- **设计师/艺术家**:需要收集视觉素材,构建自己的灵感库
|
||
- **内容创作者/博主**:为自己的内容创作寻找视觉参考和创意灵感
|
||
- **普通用户**:喜欢美好图片,希望将喜欢的图片收藏并分类管理
|
||
|
||
### 1.4. MVP版本范围
|
||
|
||
本次V1.0 MVP版本专注于实现核心的灵感收集和管理功能,主要目标是让用户能够通过系统分享功能快速保存图片,并提供基础的文件夹和标签管理功能,以及良好的浏览查看体验。
|
||
|
||
## 2. 产品功能详述
|
||
|
||
### 2.1. 核心功能:接收并保存分享图片
|
||
|
||
#### 2.1.1. 从系统分享菜单接收图片
|
||
|
||
**功能描述**:App需要注册为系统分享菜单的目标应用。当用户在任何支持图片分享的应用中选择一张或多张图片并点击"分享"时,可以在分享列表中看到"想拍"App的图标。
|
||
|
||
**用户流程**:
|
||
1. 用户在第三方App中看到一张喜欢的图片
|
||
2. 用户长按图片或点击分享按钮,唤起系统分享菜单
|
||
3. 在分享列表中,用户找到并点击"想拍"图标
|
||
4. 系统自动跳转至"想拍"App的图片保存界面
|
||
|
||
**技术要求**:
|
||
- 支持接收单张图片和多张图片(最多30张)
|
||
- 能正确处理传入的图片文件流
|
||
- 支持最大30MB的图片文件
|
||
- 支持格式:JPG、PNG、WebP、HEIC、GIF、动态WebP、APNG
|
||
|
||
#### 2.1.2. 图片保存界面
|
||
|
||
**功能描述**:从分享菜单跳转过来后,展示待保存的图片预览,并提供文件夹和标签选择器,以及备注输入框。
|
||
|
||
**界面元素**:
|
||
- **图片预览区**:清晰展示待保存的图片缩略图。多张图片时显示网格预览,可点击查看大图
|
||
- **文件夹选择器**:
|
||
- 点击后弹出文件夹列表供用户选择
|
||
- 默认显示"未分类"
|
||
- 列表顶部应有"新建文件夹"的快捷入口
|
||
- **标签选择器**:
|
||
- 输入框支持动态匹配已存在的标签
|
||
- 用户可以从匹配列表中选择,也可以直接输入新标签
|
||
- 已选择的标签会显示在输入框下方
|
||
- 单张图片标签数量无限制
|
||
- 单个标签字数限制:20个中文汉字长度
|
||
- **备注输入框(可选)**:多行文本框,允许用户为图片添加文字描述
|
||
- **操作模式切换**:批量应用模式 vs 单张编辑模式
|
||
- **"保存"按钮**:将图片文件保存到本地,并将元数据存入数据库
|
||
- **"取消"按钮**:放弃本次保存,关闭该界面
|
||
|
||
**保存策略**:
|
||
- 原图保存至应用专属目录
|
||
- 自动生成500x500缩略图(WebP格式,质量85%)
|
||
- 按日期分类存储:`/yyyy/MM/dd/`
|
||
- 异步处理,避免阻塞UI
|
||
|
||
### 2.2. 组织与管理功能
|
||
|
||
#### 2.2.1. 文件夹管理
|
||
|
||
**功能描述**:用户可以创建、重命名和删除文件夹。仅支持一级文件夹结构。
|
||
|
||
**具体实现**:
|
||
- **创建**:用户可以在文件夹选择器或专门的文件夹页面创建新文件夹
|
||
- **查看**:在"文件夹"标签页中,以网格形式展示所有文件夹及其封面(默认为该文件夹最新一张图)
|
||
- **重命名**:长按文件夹或通过编辑按钮进行重命名
|
||
- **删除**:删除文件夹时,其中的图片自动归类到"未分类"文件夹
|
||
|
||
#### 2.2.2. 标签管理
|
||
|
||
**功能描述**:用户可以创建和删除标签,并查看所有使用特定标签的图片。
|
||
|
||
**具体实现**:
|
||
- **创建**:在保存图片时输入新标签即可自动创建
|
||
- **查看**:在"标签"管理页面,以列表形式展示所有标签
|
||
- **管理**:提供标签编辑功能,支持Material Icons图标,颜色跟随主题
|
||
- **去重**:按文本内容自动去重
|
||
- **图标**:支持从Material Icons中选择图标
|
||
- **颜色**:跟随应用主题色
|
||
|
||
### 2.3. 浏览与查看功能
|
||
|
||
#### 2.3.1. 主图库视图
|
||
|
||
**功能描述**:App的主界面,以瀑布流的形式展示所有已保存的图片。
|
||
|
||
**具体实现**:
|
||
- **布局**:瀑布流网格,手机2列,平板3-4列自适应
|
||
- **排序**:默认按保存时间倒序排列
|
||
- **间距**:图片间距8dp
|
||
- **加载**:支持上拉加载更多,下拉刷新
|
||
- **空状态**:显示简洁插画和说明文案
|
||
|
||
#### 2.3.2. 图片详情页
|
||
|
||
**功能描述**:点击图库中的任意一张图片,进入详情页。
|
||
|
||
**界面元素**:
|
||
- 高清大图查看,支持手势缩放和拖动
|
||
- 滑动切换:左右滑动切换上一张/下一张
|
||
- 双击放大:双击放大/缩小功能
|
||
- 横竖屏适配:根据设备方向自动调整布局
|
||
- 显示图片的所属文件夹、所有标签和备注信息
|
||
- 提供"编辑"按钮,允许用户修改文件夹、标签和备注
|
||
- 提供"删除"按钮,确认后删除图片
|
||
- 提供"导出"按钮,可将图片保存到系统相册
|
||
|
||
#### 2.3.3. 搜索功能
|
||
|
||
**功能描述**:在主图库顶部提供搜索功能。
|
||
|
||
**具体实现**:
|
||
- **搜索框**:支持关键词输入
|
||
- **搜索范围**:文件夹名称、标签名称、备注内容
|
||
- **触发方式**:点击搜索按钮触发搜索
|
||
- **搜索历史**:记录最近10条搜索历史
|
||
- **搜索结果**:在图库中实时展示搜索结果
|
||
|
||
### 2.4. 设置功能
|
||
|
||
**功能描述**:提供应用的基本设置选项。
|
||
|
||
**设置项**:
|
||
- **语言设置**:简体中文、繁体中文、English
|
||
- **主题模式**:跟随系统、浅色、深色
|
||
- **网格布局**:瀑布流(默认)、等宽网格
|
||
- **存储管理**:显示存储使用情况,清理缓存
|
||
- **关于**:版本信息、用户协议、隐私政策
|
||
|
||
### 2.5. 国际化支持
|
||
|
||
**支持语言**:
|
||
- 简体中文(默认)
|
||
- 繁体中文
|
||
- English
|
||
|
||
**文案风格**:活泼友好,符合年轻用户喜好
|
||
|
||
**App名称**:
|
||
- 中文:想拍
|
||
- 英文:snapwish
|
||
|
||
## 3. 非功能性需求
|
||
|
||
### 3.1. 性能要求
|
||
|
||
- **启动速度**:应用冷启动时间应在3秒以内
|
||
- **加载速度**:图库列表滑动流畅,图片加载不应出现明显卡顿
|
||
- **响应速度**:所有用户操作的响应时间应在200毫秒内
|
||
- **内存管理**:合理管理大图片内存,避免OOM
|
||
|
||
### 3.2. 易用性要求
|
||
|
||
- **UI/UX设计**:界面设计简洁、直观,符合主流操作习惯
|
||
- **核心操作路径**:分享→选择→保存应尽可能简短
|
||
- **空状态处理**:各种空状态都有友好的提示和引导
|
||
|
||
### 3.3. 平台要求
|
||
|
||
- **技术栈**:使用Flutter框架开发
|
||
- **目标平台**:Android和iOS
|
||
- **最低版本**:Android 7.0+,iOS 12.0+
|
||
|
||
### 3.4. 数据存储要求
|
||
|
||
- **图片文件**:保存在应用专属的内部存储目录
|
||
- **缩略图**:单独目录保存,定期清理策略
|
||
- **元数据**:使用Hive数据库存储图片信息
|
||
- **缓存管理**:智能缓存清理,避免占用过多空间
|
||
|
||
### 3.5. 图片处理要求
|
||
|
||
- **原图保存**:保持原始图片质量
|
||
- **缩略图生成**:500x500像素,WebP格式,85%质量
|
||
- **异步处理**:图片处理在后台进行,不阻塞UI
|
||
- **内存优化**:大图片分块加载,避免内存溢出
|
||
|
||
## 4. 界面设计规范
|
||
|
||
### 4.1. 视觉风格
|
||
|
||
- **设计风格**:Material Design
|
||
- **主题色彩**:支持动态主题色,跟随系统或用户选择
|
||
- **图标风格**:Material Icons
|
||
- **圆角规范**:8dp统一圆角
|
||
|
||
### 4.2. 交互规范
|
||
|
||
- **手势操作**:单击、长按、滑动、双击、捏合
|
||
- **动画效果**:页面转场、元素出现/消失、状态变化
|
||
- **反馈机制**:点击反馈、加载状态、操作结果提示
|
||
|
||
### 4.3. 空状态设计
|
||
|
||
- **插画风格**:简洁线性插画
|
||
- **文案风格**:温暖友好,具有引导性
|
||
- **操作引导**:提供明确的下一步操作建议
|
||
|
||
## 5. 开发计划
|
||
|
||
### 5.1. MVP版本开发周期(12-17天)
|
||
|
||
**Phase 1: 架构搭建(3-4天)**
|
||
- 项目结构搭建和配置
|
||
- 主题和国际化基础配置
|
||
- 数据模型设计和Hive配置
|
||
- 基础组件封装
|
||
|
||
**Phase 2: 分享功能(2-3天)**
|
||
- 分享接收功能实现
|
||
- 图片保存界面开发
|
||
- 文件存储和缩略图生成
|
||
|
||
**Phase 3: 图库展示(2-3天)**
|
||
- 主图库瀑布流界面
|
||
- 空状态页面设计
|
||
- 图片加载和缓存优化
|
||
|
||
**Phase 4: 管理功能(3-4天)**
|
||
- 文件夹管理功能
|
||
- 标签管理系统
|
||
- 图片详情页开发
|
||
|
||
**Phase 5: 搜索设置(2-3天)**
|
||
- 搜索功能实现
|
||
- 设置页面开发
|
||
- 性能优化和bug修复
|
||
|
||
### 5.2. 后续版本规划
|
||
|
||
**V1.1版本(短期)**
|
||
- 批量管理功能
|
||
- 数据备份与恢复
|
||
- 多种排序方式
|
||
- 视图切换(列表/网格)
|
||
|
||
**V2.0版本(中长期)**
|
||
- 云同步功能
|
||
- 智能标签推荐
|
||
- 图片来源追溯
|
||
- 主题色提取功能
|
||
|
||
## 6. 风险评估
|
||
|
||
### 6.1. 技术风险
|
||
- **大文件处理**:30MB GIF的内存管理需要特别注意
|
||
- **分享兼容性**:不同Android厂商的分享实现可能存在差异
|
||
- **存储权限**:Android 13+的媒体权限变更需要适配
|
||
|
||
### 6.2. 用户体验风险
|
||
- **首次使用**:没有引导流程,需要空状态设计足够友好
|
||
- **性能感知**:大量图片时的流畅度需要重点优化
|
||
|
||
### 6.3. 缓解措施
|
||
- 实现异步图片处理,避免阻塞主线程
|
||
- 充分测试各种分享场景和设备兼容性
|
||
- 实现智能缓存和内存管理策略
|
||
|
||
---
|
||
|
||
**文档状态**:已确认,进入开发阶段
|
||
**最后更新**:2025年9月11日
|
||
**确认人员**:产品负责人 + 技术负责人 |