拍照片,生成步骤文档 —— 为现场工作者打造的移动端工作流手册工具。
现场巡检、设备安装、运维记录场景下,打字不便,用拍照 + 语音快速生成结构化的操作手册,支持图片编辑、模板复用、PDF 导出。
| 模块 | 能力 |
|---|---|
| 📸 拍照采集 | 相机拍摄 / 相册多选,三层数据存储(原图 / 编辑后 / 缩略图) |
| ✂️ 图片编辑 | 旋转、调色(亮度/对比/饱和度);裁剪/标注/马赛克按钮已加入工具栏,渲染逻辑待接入 |
| 🎤 语音转文字 | 长按录音转文字,适配现场无法打字的场景(ASR 可替换为云端) |
| 📑 模板复用 | 内置电力巡检、设备安装等工作流模板,一键创建 |
| 📄 PDF 导出 | 图文并茂的 PDF,系统分享发送 |
| 🏷 标签管理 | 手册多标签分类,标签筛选 |
| 📤 导入导出 | 手册 JSON 导出/导入,便于备份和跨设备迁移 |
| 🗂 手册管理 | 搜索、筛选(最近/收藏/未完成)、收藏、排序(更新/创建/标题/完成度)、滑动删除 |
| ✅ 进度跟踪 | 步骤完成态、整体完成进度、步骤拖拽排序 |
| 💾 本地持久化 | drift (SQLite) 离线存储,无需联网 |
- Android(主要目标,CI 自动构建 APK)
- iOS(需 macOS 环境签名)
- Linux(桌面调试)
Clean Architecture lite,三层 + 八个 feature 模块:
lib/
├── app.dart # MaterialApp 入口 + 主题
├── main.dart # bootstrap
├── core/
│ ├── theme.dart # SnapFlowTheme (teal-green #0D9488)
│ ├── db/ # drift database + schema (Manuals/Steps/StepImages)
│ └── files/ # 三层文件服务 (originals/edited/thumbnails)
├── features/
│ ├── manual/ # 手册核心 (domain/data/presentation)
│ ├── capture/ # 图片采集抽象 (相机/相册)
│ ├── editor/ # 图片编辑器 (5 工具栏,裁剪/标注/马赛克待接入渲染)
│ ├── voice/ # 语音转文字 (ASR + hold-to-record)
│ ├── export/ # PDF 导出
│ ├── import_export/ # 手册 JSON 导出/导入
│ ├── tag/ # 标签 CRUD + 手册打标签
│ └── template/ # 内置 + 用户自定义模板
└── shared/
├── providers.dart # Riverpod providers
└── widgets/ # EmptyState, SnapToast, SnapSheet, SnapIconButton
Manual 1──* Step 1──* StepImage
│ │ │
│ │ ├─ originalPath (原图)
│ │ ├─ editedPath (编辑后)
│ ├─ title └─ thumbnailPath (缩略图)
├─ note
├─ completed
└─ optionalFields (动态键值对)
- Flutter ≥ 3.24
- Dart ≥ 3.5
- Android Studio / Xcode(移动端)
# 克隆
git clone https://github.com/mo-888/snap-flow.git
cd snap-flow
# 安装依赖
flutter pub get
# 生成 drift 代码(首次或修改 schema 后)
dart run build_runner build --delete-conflicting-outputs
# 运行
flutter runflutter test # 单元 + widget 测试
flutter analyze # 静态分析| 类别 | 选型 |
|---|---|
| 框架 | Flutter |
| 状态管理 | Riverpod 2 |
| 数据库 | drift (SQLite) |
| 图片处理 | image |
| 图片采集 | image_picker |
| 录音 | record |
| pdf + printing | |
| 分享 | share_plus |
| 文件选择 | file_picker(导入 JSON) |
| 路由 | Navigator 1.0 |
提交到 main 自动触发 GitHub Actions 三平台构建:
| 平台 | 产物 | 说明 |
|---|---|---|
| Android | snapflow-android.apk |
Release APK,可直接安装 |
| iOS | snapflow-ios-unsigned.zip |
未签名 .app(无开发者账号,需自签 / sideload) |
| Linux | snapflow-linux-x64.zip |
x64 bundle |
- main 分支:构建成功后自动发布到 Releases 的
latest预发布,每次提交覆盖更新。 - 正式版:打 tag 触发,如
git tag v0.1.0 && git push --tags→ 生成带 changelog 的正式 Release。 - 临时产物:每次 run 的 Artifacts 也可在 Actions 页下载(保留 30 天)。
详见 .github/workflows/build.yml。
⚠️ iOS 因无 Apple 开发者账号,CI 产出未签名.app,仅作构建验证。要在真机运行需自备签名(个人签名 / AltStore / Sideloadly 等)。
MIT