| 文档信息 | 内容 |
|---|---|
| 文档名称 | NAS智能相册产品需求文档 |
| 版本号 | V2.0 |
| 创建日期 | 2026-03-10 |
| 创建人 | Claude |
| 基于文档 | AWOL智能相册产品需求文档 V1.0 |
| 状态 | 初稿 |
| 时间 | 版本号 | 变更人 | 主要变更内容 |
|---|---|---|---|
| 2025/10/3 | V1.0 | 欧阳鹏昊 | 文档新建 |
| 2026/03/10 | V2.0 | Claude | 优化文档结构,补充技术规格,增加测试验收标准 |
本文档旨在详细说明NAS智能相册产品的产品需求、功能设计、技术规格和验收标准,为产品设计、开发、测试提供明确的指导依据。
NAS智能相册是一款面向NAS用户的专业级照片管理应用,通过深度整合AI智能识别技术,为用户提供照片存储、整理、搜索、分享的一站式解决方案。产品核心优势在于:
随着智能手机的普及和拍照质量的提升,用户照片数量呈爆炸式增长。传统的外置硬盘、网盘已无法满足用户对照片高效管理的需求。NAS(网络附属存储)为用户提供了私有云存储方案,而现有NAS相册产品存在以下痛点:
打造一款基于NAS的智能相册应用,通过AI技术降低用户照片管理成本,提升使用体验。
核心目标:
| 用户类型 | 特征描述 | 核心需求 | 使用频率 |
|---|---|---|---|
| 专业摄影师 | 拥有大量RAW格式照片,需要专业管理工具 | RAW格式支持、EXIF信息查看、色彩管理 | 每日使用 |
| 家庭用户 | 保存家庭生活照片,需与家人共享 | 人脸识别、家庭共享、宝宝相册 | 每周数次 |
| 旅行爱好者 | 拍摄大量风景照片,需要按地点整理 | 地点相册、地图视图、AI场景识别 | 每周数次 |
| 内容创作者 | 需要快速检索、整理素材库 | 标签管理、智能搜索、批量操作 | 每日使用 |
| 竞品名称 | 选择原因 | 目标用户 | 核心优势 | 主要不足 |
|---|---|---|---|---|
| 绿联相册 | NAS直接竞品,相册用户量大 | 喜欢拍照收藏的用户 | 宝宝相册、条件相册、自定义学习、照片收集 | 界面体验一般 |
| 极相册 | NAS竞品,AI功能完善 | 喜欢拍照收藏的用户 | AI识别准确、宠物识别好 | 商业化重,部分功能需付费 |
| 飞牛相册 | NAS竞品,用户群体相似 | 喜欢拍照收藏的用户 | 地图功能强、分类丰富 | 性能一般 |
| Immich | 开源优秀项目,功能全面 | 喜欢拍照收藏的用户 | 功能完善、社区活跃、持续更新 | 部署复杂,NAS适配需改造 |
| 功能模块 | 绿联相册 | 极相册 | 飞牛相册 | Immich | 本产品目标 |
|---|---|---|---|---|---|
| 图库基础 | |||||
| 手动上传 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 关联文件夹 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 时间按轴视图 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 文件夹视图 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 视图大小切换 | ✅ | ✅ | ❌ | ❌ | ✅ |
| 筛选功能 | ✅ | ✅ | ❌ | ❌ | ✅ |
| 收藏夹 | ❌ | ✅ | ✅ | ✅ | ✅ |
| 相册管理 | |||||
| 自建相册 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 个人相册 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 共享相册 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 条件相册 | ✅ | ❌ | ✅ | ❌ | ✅ |
| 宝宝相册 | ✅ | ✅ | ✅ | ❌ | ✅ |
| 地点相册 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 智能分类 | |||||
| 人脸聚类 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 证件照 | ✅ | ❌ | ✅ | ❌ | ✅ |
| 动物识别 | ✅ | ✅ | ✅ | ❌ | ✅ |
| 风景识别 | ❌ | ✅ | ✅ | ❌ | ✅ |
| 宠物品种识别 | ❌ | ✅ | ❌ | ❌ | ✅ |
| 图片操作 | |||||
| 多选 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 全选 | ❌ | ❌ | ❌ | ✅ | ❌(性能考虑) |
| 幻灯片播放 | ❌ | ✅ | ❌ | ✅ | ✅ |
| 分享 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 收藏 | ❌ | ✅ | ✅ | ✅ | ✅ |
| 下载 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 编辑图片信息 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OCR文字识别 | ✅ | ✅ | ❌ | ❌ | ✅ |
| 归档 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 移动到加密文件夹 | ❌ | ❌ | ❌ | ✅ | ❌ |
| 设置标签 | ❌ | ✅ | ✅ | ✅ | ✅ |
| 视频功能 | |||||
| 播放/暂停 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 上一个/下一个 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 进度seek | ✅ | ✅ | ✅ | ✅ | ✅ |
| 音量调节 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 全屏播放 | ✅ | ❌ | ✅ | ✅ | ✅ |
| 倍速播放 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 实用工具 | |||||
| 相似图片识别 | ✅ | ✅ | ✅ | ❌ | ✅ |
| 重复图片识别 | ✅ | ✅ | ❌ | ✅ | ✅ |
| 大文件识别 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 图片收集 | ✅ | ❌ | ❌ | ❌ | ✅ |
| 系统功能 | |||||
| 任务管理 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 通知管理 | ❌ | ❌ | ❌ | ✅ | 整合到OS通知 |
| 搜索功能 | |||||
| 以文搜图 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 按地点搜索 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 按人物搜索 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 个人设置 | |||||
| 个性化设置 | ❌ | ❌ | ✅ | ✅ | ✅ |
| 账户使用统计 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 登录设备管理 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 用户管理 | ❌ | ❌ | ❌ | ✅ | 整合OS用户系统 |
| 文件夹管理 | ✅ | ✅ | ✅ | ✅ | ✅ |
| AI模型管理 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 自定义学习 | ✅ | ❌ | ❌ | ❌ | ✅ |
| 主题模式 | ❌ | ❌ | ✅ | ✅ | ✅ |
| 使用显卡转码 | ❌ | ✅ | ✅ | ✅ | ✅ |
| 相册备份 | ✅ | ✅ | ✅ | ✅ | ✅ |
基于竞品分析,本产品的差异化优势:
| 优先级 | 定义 | 示例 |
|---|---|---|
| P0 | 基石功能,无该功能则无法使用;主卖点相关的功能;硬件已规划选型,软件必须配合适配的功能 | 照片上传、时间轴视图、人脸识别、以文搜图 |
| P1 | 用户需求量大,有可以提升用户体验,且大部分竞品都有,但没有也不会影响用户主要场景使用的功能 | 地图视图、幻灯片播放、回收站 |
| P2 | 产品评估未来可作为差异点的功能;用户痒点功能 | 高级编辑、AI修图 |
| 分类 | 功能名称 | 功能描述 | 目的/价值 | 优先级 | 备注 |
|---|---|---|---|---|---|
| 照片浏览 | |||||
| 时间轴视图 | 以时间轴视图浏览照片 | 基础能力 | P0 | ||
| 文件夹视图 | 按用户规整的文件夹维度查看照片 | 方便有整理习惯的用户 | P1 | ||
| 地图视图 | 以世界地图的方式查看照片 | 清晰展现用户足迹 | P1 | ||
| 类型视图 | 按图片、动/实况图、视频分类展示 | 方便用户按类型查找 | P1 | 需新增 | |
| 照片上传 | 将本地/NAS中的图片手动上传到相册 | 基础能力 | P0 | ||
| 关联文件夹 | 关联NAS文件夹中的图片,监测变动实时更新 | 基础能力 | P0 | ||
| 最近添加 | 按时间顺序,最近加入的100张图片(近3个月) | 方便用户查看最新照片 | P1 | ||
| 我的收藏 | 汇总展示用户收藏的照片 | 方便用户查看 | P1 | ||
| 相册管理 | |||||
| 创建相册 | 用户按自己的习惯创建聚合相册 | 基础能力 | P0 | ||
| 个人相册 | 仅自己可见的个人相册 | 基础能力 | P0 | ||
| 共享相册 | 与NAS内其他用户共享相册 | 家庭协作 | P0 | ||
| 条件相册 | 基于条件自动聚合照片(如时间、地点、标签) | 智能分类 | P1 | ||
| 宝宝相册 | 特定人物相册,支持按年龄聚合 | 家庭场景 | P1 | ||
| 地点相册 | 基于地理位置自动聚合 | 方便查看旅行照片 | P1 | ||
| 智能识别 | |||||
| 人脸识别 | 通过AI识别人脸自动聚合 | 方便查找人物照片 | P0 | ||
| 地点识别 | 识别照片中的地理位置,按地级市聚合 | 方便查找旅行照片 | P0 | ||
| 标签识别 | 读取照片EXIF中的标签信息,按标签聚合 | 方便管理 | P1 | ||
| 智能分类-证件 | AI识别证件照片并聚合 | 方便管理证件照片 | P0 | ||
| 智能分类-动物 | AI识别猫、狗等动物并聚合 | 宠物场景 | P0 | ||
| 智能分类-宠物品种 | 识别猫狗品种 | 宠物爱好者 | P2 | ||
| 智能分类-风景 | 识别风景场景 | 旅行场景 | P2 | ||
| 图片操作 | |||||
| 上一张/下一张 | 切换查看的图片 | 基础能力 | P0 | ||
| 放大/缩小 | 缩放查看图片 | 基础能力 | P0 | ||
| 实况/动态图浏览 | 点击播放实况图 | iOS用户需求 | P1 | ||
| 多选 | 选择多条内容 | 批量操作基础 | P0 | ||
| 快捷键多选 | 使用Shift快捷多选 | 提升效率 | P0 | ||
| 幻灯片放映 | 自动播放选择的图片 | 欣赏体验 | P1 | ||
| 分享 | 分享照片/相册给其他用户 | 社交需求 | P0 | ||
| 收藏 | 将图片添加到收藏 | 方便快速访问 | P1 | ||
| 下载 | 将图片下载到本地 | 备份需求 | P1 | ||
| 编辑图片信息 | 编辑EXIF信息、标题、描述 | 信息管理 | P1 | ||
| OCR文字识别 | 识别图片中的文字信息 | 可搜索 | P1 | ||
| 设置标签 | 为图片添加自定义标签 | 分类管理 | P1 | ||
| 添加到相册 | 将图片添加到指定相册 | 组织管理 | P0 | ||
| 删除 | 删除该图片 | 数据管理 | P0 | ||
| 归档 | 将图片在时间轴/相册中隐藏 | 隐私保护 | P1 | ||
| 视频操作 | |||||
| 播放/暂停 | 播放或暂停视频 | 基础能力 | P0 | ||
| 上一个/下一个 | 切换播放内容 | 连续播放 | P0 | ||
| 进度Seek | 拖动进度条到指定时间点 | 精准控制 | P0 | ||
| 音量调节 | 调整播放音量 | 体验优化 | P0 | ||
| 全屏播放 | 全屏模式 | 沉浸体验 | P0 | ||
| 倍速播放 | 0.5~2.0区间倍速播放 | 效率工具 | P0 | ||
| 实用工具 | |||||
| 共享管理 | 管理已共享的相册、链接及收到的共享 | 共享管理 | P1 | ||
| 检查重复项 | 检查图库中的重复内容 | 存储优化 | P1 | ||
| 查看大文件 | 列出大于50M的图片和大于1GB的视频 | 存储优化 | P1 | 需基于immich改造 | |
| 回收站 | 管理临时删除的图片,30天后自动清空 | 数据安全 | P1 | ||
| 相似图片识别 | AI识别相似图片 | 整理工具 | P1 | ||
| 批量标记 | 批量为图片添加标签 | 效率工具 | P1 | ||
| 图片收集 | 从文件夹批量收集照片 | 整理工具 | P1 | ||
| 搜索功能 | |||||
| 以文搜图 | 通过描述搜索对应的图片(CLIP模型) | 智能搜索 | P0 | ||
| 文本识别搜索 | 通过识别图片中的具体文字搜索 | OCR搜索 | P1 | ||
| 按人物搜索 | 搜索指定人物的照片 | 快速检索 | P0 | ||
| 按地点搜索 | 搜索指定地点的照片 | 快速检索 | P0 | ||
| 系统功能 | |||||
| 账户信息 | 显示用户头像、用户名,接入NAS账户体系 | 鉴权管理 | P0 | ||
| 文件夹管理 | 设置个人图库关联的文件夹 | 数据来源管理 | P0 | ||
| AI模型管理 | 设置人脸、CLIP、OCR模型开关 | AI能力管理 | P0 | ||
| 自定义学习 | 训练自定义人脸识别模型 | 精准识别 | P1 | ||
| 主题模式 | 切换深色/浅色模式 | 个性化 | P1 | ||
| 使用显卡转码 | 启用GPU加速视频转码 | 性能优化 | P1 | ||
| 相册备份 | 将手机等设备中的照片备份到相册 | 数据同步 | P0 | ||
| 任务管理 | 查看后台扫描、AI处理任务进度 | 任务监控 | P1 |
| 技术领域 | 选型 | 说明 |
|---|---|---|
| 基础框架 | Immich | 开源相册项目,功能完善,社区活跃 |
| 编程语言 | ||
| 后端 | NestJS + TypeScript | |
| 前端 | React + TypeScript + Tailwind CSS | |
| 移动端 | Flutter/React Native | |
| 数据库 | ||
| 主数据库 | PostgreSQL | |
| 缓存 | Redis | |
| 存储 | ||
| 对象存储 | NAS文件系统(挂载为外部库) | |
| 缩略图 | NAS本地存储 | |
| AI能力 | ||
| 人脸识别 | face recognition library | |
| 向量搜索 | CLIP模型 + FAISS/PGVector | |
| OCR | Tesseract | |
| 图像处理 | Sharp |
移植目标: 将immich应用重新打包为可原生运行在ZIMAOS的安装包方式
移植工作内容:
环境适配
用户系统集成
文件系统适配
AI模型管理
设计原则:
| 规则 | 说明 |
|---|---|
| 1. 用户一致性 | 相册用户与NAS用户一致,打开相册时带入当前登录用户 |
| 2. 数据隔离 | 每个用户创建自己的图库和相册,在【相册】应用中,用户的数据独立 |
| 3. 默认图库 | 用户登录后,自动检索用户目录/Photos下的图片,用户上传的图片保存在该目录 |
| 4. 共享机制 | 用户可以将相册共享给系统中的其他用户,也可接受其他用户共享的相册 |
| 5. 删除机制 | 删除照片后临时移入回收站,回收站清理后才真实删除文件 |
用户数据结构:
sql-- 用户表(关联NAS用户)
users (
id: UUID,
nas_user_id: VARCHAR, -- 关联NAS用户ID
name: VARCHAR, -- 用户名
avatar: VARCHAR, -- 头像路径
default_library_id: UUID -- 默认图库ID
)
-- 图库表
libraries (
id: UUID,
user_id: UUID, -- 所属用户
name: VARCHAR, -- 图库名称
path: VARCHAR, -- 关联NAS文件夹路径
is_default: BOOLEAN, -- 是否默认图库
scan_status: ENUM -- 扫描状态
)
-- 相册表
albums (
id: UUID,
user_id: UUID, -- 创建者
name: VARCHAR, -- 相册名称
type: ENUM, -- 类型: personal/shared/system
shared_with: JSON, -- 共享用户列表
conditions: JSON, -- 条件相册规则(可选)
created_at: TIMESTAMP
)
-- 共享关系表
shares (
id: UUID,
album_id: UUID, -- 被共享的相册
owner_id: UUID, -- 共享者
recipient_id: UUID, -- 接收者
permission: ENUM, -- 权限: read/write/admin
created_at: TIMESTAMP
)
| 格式 | 扩展名 | 说明 | 优先级 |
|---|---|---|---|
| JPEG | .jpg, .jpeg | 最常用的照片格式 | P0 |
| PNG | .png | 支持透明度的无损格式 | P0 |
| GIF | .gif | 动图和静态图 | P0 |
| WebP | .webp | Google开发的现代格式 | P0 |
| HEIF/HEIC | .heic, .heif | 苹果设备常用,高效压缩 | P0 |
| AVIF | .avif | 下一代图像格式,压缩率更高 | P1 |
| 品牌 | 主要格式 | 其他格式 |
|---|---|---|
| Canon | .cr2, .cr3 | .crw |
| Nikon | .nef, .nrw | .raw |
| Sony | .arw, .sr2 | .srf, .srw |
| Fujifilm | .raf | - |
| Olympus | .orf | - |
| Panasonic | .rw2, .raw | - |
| Leica | .rwl, .raw | - |
| Pentax | .pef, .ptx | .raw |
| Sigma | .x3f | - |
| Hasselblad | .3fr | - |
| Phase One | .iiq | - |
| DNG(通用) | .dng | Adobe数字负片格式 |
| 格式 | 扩展名 | 说明 |
|---|---|---|
| TIFF | .tif, .tiff | 高质量无损格式 |
| BMP | .bmp | Windows位图 |
| ICO | .ico | 图标格式 |
| SVG | .svg | 矢量图形(需要配置) |
| PPM/PGM/PBM | .ppm, .pgm, .pbm | 无损位图格式 |
| 格式 | 扩展名 | 说明 |
|---|---|---|
| MP4 | .mp4, .m4v | 最常见的视频格式 |
| MOV | .mov | 苹果设备常用 |
| AVI | .avi | 传统视频格式 |
| WebM | .webm | Web优化的视频格式 |
| MKV | .mkv | 开源容器格式 |
| WMV | .wmv | Windows视频格式 |
| 3GP | .3gp | 移动设备格式 |
| QuickTime | .qt | Apple格式 |
| FLV | .flv | Flash视频 |
| 类型 | 限制值 | 说明 |
|---|---|---|
| 照片数量 | 10万张/用户 | 为保证性能设置上限,超限提示用户删除 |
| 相册数量 | 1万个/用户 | 个人创建相册数量限制 |
| 单文件大小 | 10GB | 单个照片/视频最大支持大小 |
| 缩略图大小 | 自动生成 | 支持多种尺寸(200px, 500px, 1000px) |
相册WEB V0.1版本将基于开源immich相册进行改造适配,保留核心功能,优化用户体验,并与NAS OS深度集成。
┌─────────────────────────────────────────────────────────────┐ │ [Logo] 相册 [用户头像▼] [设置] │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ │ │ │ │ │ │ │ │ 主内容区 │ │ │ 导航 │ │ │ │ 菜单 │ │ │ │ │ │ │ │ │ │ │ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘
Figma链接: https://www.figma.com/design/GEYjKAaakgF4jtrD1tRdsx/%E7%9B%B8%E5%86%8C?node-id=195-7
| 菜单项 | Immich对应 | 改动说明 |
|---|---|---|
| 照片 | 照片 | 保持 |
| 文件夹 | 文件夹 | 保持 |
| 地图 | 地图 | 保持 |
| 最近添加 | - | 新增,显示近3个月加入的照片 |
| 我的收藏 | 收藏夹 | 保持 |
| 相册 | 相册 | 导航栏不做折叠 |
| 人物 | 人物 | 保持 |
| 地点 | 探索>地点 | 从"探索"模块提取 |
| 标签 | 标签 | 保持 |
| 类型 | - | 新增,按图片/动图/视频分类 |
| 智能分类 | - | 新增,包括证件、动物等 |
| 共享管理 | 共享 | 整合共享链接管理 |
| 检查重复项 | 实用工具>检查重复项 | 提到一级菜单 |
| 查看大文件 | 实用工具>查看大文件 | 提到一级菜单 |
| 归档 | 归档 | 保持 |
| 回收站 | 回收站 | 保持 |
| 锁定文件夹 | 移除,无需该功能 | |
| 存储空间 | 移除,使用OS系统监控 | |
| 服务器状态 | 移除,使用OS系统监控 |
功能描述: 使用CLIP模型,通过自然语言描述搜索图片
元素规范:
| 属性 | 值/规则 |
|---|---|
| 默认状态 | 开启 |
| 提示文案 | "请描述你想搜索的图片,如:海边夕阳" |
| 支持语言 | 中文、英文、德文、法文、意大利文、西班牙文 |
| 最大字符数 | 50字符 |
| 超限提示 | "请精简您的内容,控制在50字符内" |
交互流程:
功能描述: 按人名、地点名、文件名、OCR识别文字关键词搜索
元素规范:
| 属性 | 值/规则 |
|---|---|
| 切换方式 | 关闭【智能搜索】自动切换 |
| 提示文案 | "请输入照片人名,地点,文件名,照片内文字进行搜索" |
| 支持语言 | 中文、英文、德文、法文、意大利文、西班牙文 |
| 最大字符数 | 50字符 |
结果页特性:
空态页:
| 属性 | 规则 |
|---|---|
| 排序 | 按时间由近到远 |
| 最大数量 | 5条 |
| 存储位置 | 端侧localStorage |
| 清除逻辑 | 相册页面关闭重新打开后清除 |
交互设计:
┌────────────────────────────────────────────────┐ │ │ │ [搜索框] [添加▼] [用户头像] [设置] │ │ ┌───────────────────┐ │ │ │ 上传照片 │ │ │ │ 创建相册 │ │ │ └───────────────────┘ │ └────────────────────────────────────────────────┘
操作说明:
功能规范:
| 属性 | 规则 |
|---|---|
| 切换位置 | 设置页或快捷入口 |
| 支持模式 | 深色模式、浅色模式 |
| 默认模式 | 浅色 |
| 持久化 | 保存在用户偏好设置中 |
设计决策:
immich自带【通知】功能,但内容未做用户可读性处理。本产品将相册通知接入到OS系统通知中,故移除immich自带的【通知】功能。
通知场景:
点击右上角 [用户头像▼] → 选择 [设置] 进入设置页
默认关联文件夹:
/Users/{username}/Photos添加关联文件夹:
| 规则 | 说明 |
|---|---|
| 选择器 | 使用ZIMA OS现有单选文件夹选择器 |
| 范围 | 根据用户权限列出可选文件夹 |
| 限制 | 仅支持选择文件夹 |
| 数量 | V0.1仅支持单选 |
| 扫描 | 添加后自动执行增量扫描 |
文件夹信息展示:
| 信息项 | 说明 |
|---|---|
| 文件夹图标 | 标准文件夹图标 |
| 文件夹路径 | 显示完整路径 |
| 可用空间 | 格式化显示(如"50.2GB") |
| 照片数量 | 整数 |
| 视频数量 | 整数 |
| 扫描状态 | "图片扫描中" / "已扫描 X/Y" |
| 标签 | 默认文件夹显示"默认"标签 |
扫描功能:
| 操作 | 说明 |
|---|---|
| 单个扫描 | 点击文件夹旁【扫描】按钮 |
| 全部扫描 | 点击右上角【扫描全部】按钮 |
| 扫描模式 | 增量扫描(仅扫描新文件) |
| 扫描状态 | 显示"已扫描 X/Y"(实时更新) |
| 停止扫描 | 扫描中可点击停止 |
| 扫描完成 | 显示"扫描完成"及扫描结果统计 |
| 功能 | 模型 | 操作 |
|---|---|---|
| 智能搜索模型 | Intel CLIP | 识别全部、识别缺失 |
| 人脸检测 | 人脸模型 | 开关、重新识别 |
| 人脸识别 | 人脸模型 | 开关、重新识别 |
| 文本识别 | OCR模型 | 开关、重新识别 |
| 重复项检测 | Intel CLIP | 开始检测 |
操作与immich现有保持一致。
基于immich【照片】模块改造
| 改动项 | 说明 | 原因 |
|---|---|---|
| 【上传】→【添加】 | 将上传按钮改为添加按钮 | 呼出快捷添加菜单 |
| 移除【全选】按钮 | 去掉选择状态下的全选按钮及CTRL+A功能 | 性能问题 |
| 移除【移动到锁定文件夹】 | 去掉更多菜单中的该选项 | 移除锁定文件夹功能 |
改动说明: 将功能区嵌入到内容区中,其他功能与immich【文件夹】完全一致
┌──────────────────────────────────────────────────┐ │ 文件夹 [上传▼] │ ├──────────────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 文件夹1 │ │ 文件夹2 │ │ 文件夹3 │ │ │ │ │ │ │ │ │ │ │ │ 125张 │ │ 89张 │ │ 234张 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └──────────────────────────────────────────────────┘
功能说明: 与immich【地图】模块完全一致
数据来源:
功能说明: 按最近加入到图库的时间顺序以时间轴的方式列出最近3个月的照片
与其他模块差异:
基于immich【收藏夹】模块改造
| 改动项 | 说明 |
|---|---|
| 移除【全选】按钮 | 去掉选择状态下的全选按钮及CTRL+A功能 |
| 移除【移动到锁定文件夹】 | 去掉更多菜单中的该选项 |
V0.1版本与immich保持一致
改动清单:
| 改动项 | 说明 |
|---|---|
| 排序功能提到右上角 | 可切换【最新的优先】【最旧的优先】,默认最新优先 |
| 共享用户常驻展示 | 当前用户默认展示,无需切换 |
| 移除【选项】菜单 | 排序、添加用户已外置;评论、点赞功能不需要 |
功能说明: 与immich【人物】模块保持一致
自动聚类规则:
功能说明: V0.1版本复用immich中的【探索-地点】模块
功能说明: 复用immich【标签】功能
数据来源:
功能说明: 将照片库内容按类型自动分类
| 分组名称 | 包含内容 | 规则 |
|---|---|---|
| 图片 | 静态图片 | .jpg, .png, .webp, .heic等 |
| 动图 | 动态图片 | .gif |
| 实况图 | iOS实况图 | .heic(Live Photo) |
| 视频 | 视频文件 | .mp4, .mov, .avi等 |
显示规则:
与相册内容页差异:
| 差异项 | 类型内容页 | 相册内容页 |
|---|---|---|
| 创建时间 | 不展示 | 展示 |
| 共享用户 | 无 | 展示 |
| 右上角操作 | 无【添加】【分享】【地图】【删除】 | 完整操作 |
功能说明: 根据AI模型自动聚类照片
| 分类 | AI模型 | 说明 |
|---|---|---|
| 证件 | CLIP分类 | 身份证、护照、驾驶证等 |
| 猫 | 宠物识别 | 各类猫咪 |
| 狗 | 宠物识别 | 各类狗只 |
| 其他动物 | 动物识别 | 除猫狗外的动物 |
特性:
功能分类:
列表信息:
| 信息项 | 说明 |
|---|---|
| 相册名称 | 共享相册的名称 |
| 创建时间 | 共享创建的时间 |
| 内容数量 | 相册内的照片/视频数量 |
| 创建者 | 相册创建者用户名 |
| 权限 | 读/写/管理 |
V0.1逻辑:
功能描述: 调用AI模型分析重复图片,逻辑复用immich
检测标准:
操作:
| 属性 | 值 |
|---|---|
| 分类 | 照片、视频 |
| 排序 | 按内容容量大小由大到小 |
| 照片阈值 | ≥ 50MB |
| 视频阈值 | ≥ 1GB |
| 操作 | 说明 |
|---|---|
| 删除 | 支持多选、快捷键多选 |
| 删除逻辑 | 移入回收站,无需二次确认 |
功能说明: 复用immich归档功能
归档效果:
功能说明: 复用immich回收站
生命周期:
基于immich改造
| 改动项 | 说明 |
|---|---|
| 增加【文本识别】功能 | 弹出内容窗显示识别的文本,支持一键复制 |
| 移除【上传至项目堆叠】 | 从更过菜单移除 |
| 移除【移动到锁定文件夹】 | 从更多菜单移除 |
文本识别功能:
┌────────────────────────────────────────────────────┐ │ [图片显示区域] │ │ │ ├────────────────────────────────────────────────────┤ │ [上一张] [放大] [缩小] [文本识别▼] [下一张] │ └────────────────────────────────────────────────────┘ 点击【文本识别】: ┌────────────────────────────────────────────────────┐ │ OCR文字识别结果 │ │ ┌──────────────────────────────────────────────┐ │ │ │ 识别出的文字内容... │ │ │ │ │ │ │ └──────────────────────────────────────────────┘ │ │ [一键复制] │ └────────────────────────────────────────────────────┘
功能说明: 功能逻辑复用immich
操作菜单调整:
功能说明: 复用immich视频播放功能
支持的格式:
功能说明: 复用immich任务管理功能
任务类型:
移动端功能基于WEB端精简,重点优化移动交互
核心功能:
简化功能:
Figma链接: https://www.figma.com/design/GEYjKAaakgF4jtrD1tRdsx/%E7%9B%B8%E5%86%8C?node-id=599-13
交互说明在原型中体现
| 功能 | 说明 |
|---|---|
| 相册备份 | 将手机照片自动备份到NAS相册 |
| 后台上传 | 支持后台备份,应用关闭继续上传 |
| Wi-Fi限制 | 仅在Wi-Fi下上传(可配置) |
| 充电时上传 | 仅在充电时上传(可配置) |
| 离线浏览 | 已下载的照片可离线浏览 |
| 指标 | 要求 | 说明 |
|---|---|---|
| 加载性能 | ||
| 缩略图加载 | < 500ms | 单张缩略图 |
| 缩略图列表 | < 2s | 100张缩略图列表 |
| 大图加载 | < 2s | 原图/大尺寸预览图 |
| 视频首帧 | < 3s | 视频缩略图 |
| 搜索性能 | ||
| 关键词搜索 | < 1s | 普通关键词搜索 |
| 向量搜索 | < 3s | CLIP向量相似度搜索 |
| 全文搜索 | < 5s | OCR内容搜索 |
| AI处理 | ||
| 人脸检测 | < 1s/张 | 单张照片 |
| OCR识别 | < 3s/张 | 单张照片 |
| CLIP向量化 | < 500ms/张 | 单张照片 |
| 并发能力 | ||
| 同时在线用户 | ≥ 50 | 家庭NAS场景 |
| 并发上传 | ≥ 10GB/h | 集中上传场景 |
| 并发下载 | ≥ 20GB/h | 批量下载场景 |
| 存储能力 | ||
| 单用户照片数 | ≤ 10万 | 硬限制 |
| 单用户相册数 | ≤ 1万 | 硬限制 |
| 总存储容量 | 不限 | 取决于NAS容量 |
| 类别 | 要求 |
|---|---|
| 浏览器 | Chrome ≥ 90, Safari ≥ 14, Firefox ≥ 88, Edge ≥ 90 |
| 操作系统 | Windows 10+, macOS 11+, Linux主流发行版 |
| 移动端 | iOS 15+, Android 10+ |
| 分辨率 | 桌面 ≥ 1366x768, 移动响应式适配 |
| 网络 | 支持内网访问,外网访问需配合NAS穿透设置 |
| 安全项 | 要求 |
|---|---|
| 认证 | 接入NAS用户系统,使用JWT或Session认证 |
| 权限 | 用户数据隔离,共享权限严格控制 |
| HTTPS | 生产环境强制使用HTTPS |
| XSS防护 | 输入输出过滤,CSP策略 |
| CSRF防护 | Token验证 |
| SQL注入防护 | 参数化查询 |
| 文件访问控制 | 严格校验文件路径,防止目录遍历 |
| 指标 | 要求 |
|---|---|
| 可用性 | 99.9%(月度) |
| 故障恢复 | 自动重启,断线重连 |
| 数据备份 | 支持数据库定期备份 |
| 日志记录 | 完整的操作日志和错误日志 |
| 监控告警 | 关键指标监控,异常告警 |
| 功能 | 验收标准 | 测试用例 |
|---|---|---|
| 照片上传 | 支持拖拽上传、点击上传,进度显示,支持多种格式 | 上传JPG/PNG/WebP/HEIC/视频各1张 |
| 时间轴浏览 | 按拍摄时间正确排序,日期分组显示,滚动流畅 | 上传不同日期照片,验证排序和分组 |
| 文件夹关联 | 关联后自动扫描,新增文件自动同步,移除后不再显示 | 关联文件夹→添加新图片→验证自动同步 |
| 人脸识别 | 上传含人脸照片后自动识别并聚类 | 上传含5人照片,验证5个人物分组 |
| 以文搜图 | 输入描述能搜索到相关图片 | 上传"海边"照片,搜索"海边夕阳" |
| 相册创建 | 创建相册成功,可添加照片,支持共享 | 创建→添加照片→分享给其他用户 |
| 回收站 | 删除后进入回收站,可恢复,30天后自动清理 | 删除→检查回收站→恢复→验证恢复 |
| 场景 | 指标 | 测试方法 |
|---|---|---|
| 缩略图列表加载 | 100张 < 2s | 上传100张照片,打开时间轴计时 |
| 大图加载 | 单张 < 2s | 打开大图,记录加载时间 |
| 搜索响应 | 关键词搜索 < 1s | 搜索常用关键词,记录响应时间 |
| AI人脸识别 | 1张 < 1s | 上传含人脸照片,记录识别时间 |
| 并发访问 | 10用户同时访问 | 压力测试,监控响应时间 |
| 测试项 | 测试环境 | 验证内容 |
|---|---|---|
| 浏览器兼容 | Chrome, Safari, Firefox, Edge各版本 | 核心功能可用,布局正常 |
| 系统兼容 | Windows, macOS, Linux | 安装运行正常 |
| 移动端兼容 | iOS, Android各主流机型 | App功能正常,布局适配 |
| 分辨率适配 | 1366x768, 1920x1080, 2560x1440 | 布局自适应 |
| 测试项 | 测试方法 | 验证内容 |
|---|---|---|
| 权限隔离 | 用A用户登录,尝试访问B用户相册 | 拒绝访问 |
| SQL注入 | 输入SQL特殊字符搜索 | 不报错,安全过滤 |
| XSS攻击 | 输入HTML脚本作为相册名 | 不执行,转义显示 |
| CSRF攻击 | 模拟跨站请求 | Token验证拦截 |
| 文件路径遍历 | 尝试访问../../etc/passwd | 拒绝访问 |
| 文件类型伪造 | 修改文件扩展名上传 | 验证真实文件类型 |
| 场景 | 并发数 | 持续时间 | 验收标准 |
|---|---|---|---|
| 上传压力 | 10并发 | 10分钟 | 上传成功率 > 95% |
| 浏览压力 | 50并发 | 10分钟 | 响应时间 < 3s |
| 搜索压力 | 20并发 | 5分钟 | 响应时间 < 2s |
| 长期稳定性 | 10在线 | 24小时 | 无崩溃,内存稳定 |
每次发布前执行:
发布目标: 核心功能可用,满足主要使用场景
功能范围:
交付物:
新增功能:
新增功能:
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| Immich版本兼容性 | 移植工作量大 | 选择稳定版本,保持跟踪 |
| AI模型性能 | 识别速度慢 | 支持GPU硬件加速 |
| 大规模数据性能 | 10万张照片卡顿 | 分页加载,懒加载优化 |
| 浏览器内存溢出 | 大量缩略图OOM | 虚拟滚动,资源回收 |
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| 用户数据丢失 | 重大事故 | 数据库定期备份,回收站保护 |
| 存储空间不足 | 无法上传 | 存储监控,告警提示 |
| 共享权限混乱 | 隐私泄露 | 权限校验,日志审计 |
| 依赖项 | 要求 | 状态 |
|---|---|---|
| NAS OS版本 | ZIMAOS 1.5.2+ | ✅ |
| PostgreSQL | 12+ | ✅ |
| Redis | 6+ | ✅ |
| Python环境 | 3.9+ | ✅ |
| Node.js环境 | 16+ | ✅ |
| Figma设计稿 | 已确认 | ✅ |
| 术语 | 说明 |
|---|---|
| EXIF | 可交换图像文件格式,包含照片的元数据(拍摄时间、设备、GPS等) |
| CLIP | OpenAI的对比语言-图像预训练模型,用于以文搜图 |
| OCR | 光学字符识别,从图像中提取文字 |
| Immich | 开源自托管相册和照片管理应用 |
| ZIMAOS | NAS操作系统名称 |
| Live Photo | 苹果实况图,包含静态图和短视频 |
| RAW | 相机原始图像格式,包含未压缩的图像数据 |
| HEIC | 高效图像容器,苹果设备使用的高效压缩格式 |
| 文档名称 | 链接/路径 |
|---|---|
| Figma设计稿 | https://www.figma.com/design/GEYjKAaakgF4jtrD1tRdsx/相册 |
| Immich官网 | https://immich.app/ |
| Immich GitHub | https://github.com/immich-app/immich |
本文作者:oyph
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!