snap_wish/CLAUDE.md
2025-09-12 18:17:35 +08:00

9.9 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

项目概览

项目名称:想拍 (InspoSnap)
项目描述Shoot What Inspires You - 拍摄灵感收集与管理应用
当前阶段MVP v1.1 开发中
技术栈Flutter + Riverpod + Hive
参考文档snapwish_PRD_v1.1.md - 已确认的产品需求文档

技术方案

核心技术选型

  • 框架Flutter 3.2.5+ (Dart)
  • 状态管理Riverpod (现代、类型安全)
  • 数据库Hive (轻量级、高性能)
  • 图片处理flutter_image_compress + image
  • 瀑布流flutter_staggered_grid_view
  • 国际化flutter_localizations
  • 分享接收receive_sharing_intent
  • 图片查看photo_view
  • UI组件Material Design + 自定义主题

架构设计

lib/
├── core/               # 核心功能
│   ├── constants/      # 常量定义
│   ├── errors/         # 错误处理
│   ├── utils/          # 工具类(图片压缩、文件操作)
│   └── theme/          # 主题配置
├── data/               # 数据层
│   ├── datasources/    # 数据源
│   │   ├── local/      # Hive数据库
│   │   └── share/      # 分享接收
│   ├── models/         # 数据模型
│   └── repositories/   # 数据仓库
├── domain/             # 业务逻辑层
│   ├── entities/       # 实体类
│   ├── repositories/   # 仓库接口
│   └── usecases/       # 用例
├── presentation/       # 表示层
│   ├── providers/      # Riverpod状态管理
│   ├── pages/          # 页面
│   ├── widgets/        # 组件
│   └── l10n/           # 国际化
└── main.dart          # 应用入口

开发命令

# 安装依赖
flutter pub get

# 运行应用
flutter run                    # 默认设备
flutter run -d android         # Android设备
flutter run -d ios            # iOS设备

# 代码分析
flutter analyze

# 运行测试
flutter test

# 构建发布
flutter build apk             # Android APK
flutter build ios            # iOS应用
flutter build web            # Web版本

# 清理缓存
flutter clean

技术规范

图片处理规范

  • 缩略图长边500pxWebP格式85%质量,保持原始比例
  • 大GIF处理:提取前几帧作为缩略图,避免内存溢出
  • 存储路径:按保存日期分类 /yyyy/MM/dd/
  • 缓存策略30天/500MB自动清理

性能指标

  • 冷启动时间< 2秒
  • 图片加载空窗期< 200ms
  • 搜索响应时间< 500ms
  • 内存占用< 200MB正常使用
  • 用户操作响应< 200ms

UI/UX规范

  • 响应式断点手机≤600dp(2列),平板>600dp(3-4列)
  • 图片间距8dp标准间距
  • 动画时长页面转场300ms
  • 加载体验:骨架屏 + 进度提示

开发任务分解

📋 任务清单(模块化开发)

🔧 Phase 1: 架构搭建3-4天

任务1.1: 项目基础配置

  • 创建Flutter项目并配置基础依赖
  • 配置国际化支持(简中/繁中/English
  • 设置主题系统(浅色/深色/跟随系统)
  • 配置Material Design和自定义色彩方案

任务1.2: 数据层架构

  • 配置Hive数据库和实体模型
  • 实现数据访问对象DAO模式
  • 创建基础Repository接口和实现
  • 设置数据迁移和版本管理

任务1.3: 核心工具类

  • 图片压缩工具类长边500px + WebP
  • 文件存储管理工具
  • UUID生成和路径管理
  • 错误处理和日志系统

任务1.4: 基础UI组件

  • 创建可复用的按钮组件
  • 实现加载状态组件(骨架屏)
  • 空状态页面组件
  • 错误提示组件

📤 Phase 2: 分享功能2-3天

任务2.1: 分享接收机制

  • 配置receive_sharing_intent插件
  • 实现Android分享接收配置
  • 实现iOS分享接收配置
  • 处理多张图片接收逻辑

任务2.2: 保存界面UI

  • 创建半透明模态框界面
  • 实现图片网格预览组件
  • 构建文件夹选择器弹窗
  • 实现标签输入和选择组件

任务2.3: 保存业务逻辑

  • 实现批量保存模式(默认)
  • 实现单张编辑模式切换
  • 处理保存进度提示
  • 异步保存和缩略图生成

任务2.4: 文件夹管理

  • 创建文件夹弹窗界面
  • 实现Material Icons选择器
  • 文件夹排序(最近使用)
  • 文件夹CRUD操作

🖼️ Phase 3: 图库展示2-3天

任务3.1: 主图库界面

  • 实现瀑布流布局flutter_staggered_grid_view
  • 响应式列数切换手机2列/平板3-4列
  • 图片懒加载和缓存优化
  • 下拉刷新和上拉加载更多

任务3.2: 搜索功能

  • 实现常驻搜索框
  • 模糊搜索算法(文件夹+标签+备注)
  • 搜索历史记录最近10条
  • 空搜索结果页面

任务3.3: 状态管理

  • 图库状态管理Riverpod
  • 图片加载状态管理
  • 搜索状态管理
  • 分页数据管理

📁 Phase 4: 管理功能3-4天

任务4.1: 图片详情页

  • 图片查看器photo_view
  • 左右滑动切换(非循环)
  • 双击放大/缩小功能
  • 横竖屏适配

任务4.2: 详情信息展示

  • 显示文件夹、标签、备注信息
  • 编辑功能入口
  • 删除功能(二次确认)
  • 导出到系统相册

任务4.3: 标签管理系统

  • 标签列表页面
  • 标签编辑功能
  • Material Icons选择
  • 标签使用统计

任务4.4: 文件夹页面

  • 文件夹网格展示
  • 文件夹封面设置
  • 文件夹重命名功能
  • 文件夹删除处理

⚙️ Phase 5: 搜索设置2-3天

任务5.1: 设置页面

  • 设置页面分组布局
  • 语言切换功能
  • 主题模式切换
  • 网格布局切换

任务5.2: 存储管理

  • 存储使用情况显示
  • 一键清理缓存功能
  • 缩略图管理
  • 存储路径管理

任务5.3: 性能优化

  • 虚拟滚动实现
  • 内存管理优化
  • 大图片处理优化
  • 启动速度优化

任务5.4: 最终调试

  • 完整功能测试
  • 性能测试和调优
  • 多设备兼容性测试
  • Bug修复和完善

数据模型定义

核心实体类

// 图片实体
class InspirationImage {
  final String id;              // UUID
  final String filePath;        // 原图路径
  final String thumbnailPath;   // 缩略图路径
  final String? folderId;       // 文件夹ID
  final List<String> tags;      // 标签ID列表
  final String? note;           // 备注内容
  final DateTime createdAt;     // 创建时间(保存时间)
  final DateTime updatedAt;     // 更新时间
  final String? originalName;   // 原始文件名
  final int fileSize;           // 文件大小
  final String mimeType;        // MIME类型
  final int? width;             // 图片宽度
  final int? height;            // 图片高度
  final bool isFavorite;        // 是否收藏
}

// 文件夹实体
class ImageFolder {
  final String id;              // UUID
  final String name;            // 文件夹名称
  final String? coverImageId;   // 封面图片ID
  final String icon;            // Material Icons名称
  final DateTime createdAt;     // 创建时间
  final DateTime updatedAt;     // 更新时间
  final DateTime lastUsedAt;    // 最近使用时间
}

// 标签实体
class ImageTag {
  final String id;              // UUID
  final String name;            // 标签名称
  final String icon;            // Material Icons名称
  final String color;           // 十六进制颜色
  final int usageCount;         // 使用次数
  final DateTime lastUsedAt;    // 最近使用时间
}

开发注意事项

代码规范

  • 遵循Dart官方代码风格指南
  • 使用有意义的变量和函数命名
  • 添加必要的代码注释
  • 保持widget的纯净性业务逻辑分离到provider

性能要求

  • 冷启动时间 < 2秒
  • 图片加载流畅,无卡顿
  • 用户操作响应 < 200ms
  • 内存占用 < 200MB

错误处理

  • 分享失败:"出了点小问题,请重新分享试试~"
  • 保存失败:同上
  • 存储空间不足:同上
  • 所有错误都需要友好提示

兼容性要求

  • Android 7.0+ (API 24+)
  • iOS 12.0+
  • 适配各种屏幕尺寸和分辨率

当前开发任务

🎯 当前阶段Phase 1.2 - 数据层架构搭建

预计时间1天 优先级:高

具体任务

  • 配置Hive数据库和实体模型
  • 实现数据访问对象DAO模式
  • 创建基础Repository接口和实现
  • 设置数据迁移和版本管理

已完成任务Phase 1.1 - 项目基础配置 下一个任务Phase 1.3 - 核心工具类

开发顺序:严格按照任务编号顺序执行,每个任务完成后再进行下一个任务。

代码提交:每个任务完成后提交一次,确保版本控制清晰。


最后更新2025年9月12日
开发状态Phase 1.2 进行中
下一阶段:数据层架构搭建...

记住:功能优先,保持代码整洁,及时沟通! 🚀

开发进度跟踪

📊 总体进度

  • Phase 1.1: 项目基础配置5/5
  • Phase 1.2: 数据层架构搭建0/4
  • Phase 1.3: 核心工具类0/4
  • Phase 1.4: 基础UI组件0/4
  • Phase 2: 分享功能0/4

🎯 当前任务详情

任务编号1.2
任务名称:数据层架构搭建
任务状态:进行中
预计完成2025年9月12日
依赖项Phase 1.1 完成

任务验收标准

  • Hive数据库配置完成
  • 实体模型定义完整
  • DAO模式实现正确
  • Repository接口设计合理
  • 数据迁移机制可用