本文件夹是 Capture:D 项目的最终版唯一交付物。
CaptureD/
├── PROJECT_RULES.md ← 开发规范(唯一权威)
├── ARCHITECTURE.md ← 架构文档
├── DEVELOPMENT_LOG.md ← 开发日志
├── README.md ← 本文件
│
├── ADR/ ← 架构决策记录(6 文件)
├── App/ ← App 入口(2 文件)
├── Core/ ← 底层服务(11 文件)
├── Features/ ← UI 功能模块(14 文件)
├── Shared/ ← 通用组件/主题/常量(14 文件)
├── ShareExtension/ ← 分享扩展(1 文件)
├── Config/ ← 设置指南 + 分发指南(2 文件)
└── CaptureD/ ← Xcode target 资源(entitlements + assets)
项目唯一权威开发规范。覆盖开发流程、架构规范、代码规范、测试规范、文档规范、Git 规范、ADR 规范、重构规范和 Capture:D 专项规范。所有开发行为必须以此为准。
系统架构文档。包含目录结构、模块依赖关系图、SwiftData 数据模型定义、数据流说明和安全架构。
开发日志。按时间倒序记录每次开发内容、决策原因、遇到的问题和下一步计划。
架构决策记录。每条 ADR 记录一个重大架构决策的背景、决定和后果。
| 文件 | 决策内容 |
|---|---|
| 000-record-architecture-decisions.md | 采用 ADR 记录架构决策 |
| 001-share-extension-as-only-entry.md | Share Extension 作为唯一图片入口 |
| 002-ai-manual-trigger-only.md | AI 完全手动触发,不自动运行 |
| 003-no-photo-library-access.md | 废除相册权限,App 完全独立 |
| 004-merge-unsorted-folders.md | 合并"未分析"和"未知来源"为"未整理" |
| 005-file-naming-convention.md | 文件命名规范:作品名|作者 格式 |
App 入口和生命周期管理。
| 文件 | 职责 |
|---|---|
| CaptureDApp.swift | SwiftUI App 入口,启动时处理 Share Extension 写入的待处理图片(含 name/tags 字段解析) |
| ContentView.swift | 根视图,判断引导完成状态,FAB 按钮触发统一发布流程(纯文字→碎碎念,带图→选分类入库) |
核心基础设施层,不包含任何 UI 代码。被 Features 层调用。
| 子目录 | 文件 | 职责 |
|---|---|---|
| AI/ | AIServiceProtocol.swift | AI 服务统一接口定义 |
| AI/ | ClaudeService.swift | Claude API 适配器 |
| AI/ | DeepSeekService.swift | DeepSeek API 适配器 |
| AI/ | DoubaoService.swift | 豆包 API 适配器 |
| AI/ | AIManager.swift | AI 调用管理、队列化、费用计数、平台切换 |
| AI/Prompts/ | PromptTemplates.swift | 各分类(找书/找诗/找画/找歌)的 AI 提示词模板 |
| Database/ | Models.swift | SwiftData 数据模型(CollectionFile、ImageRecord、ContentBlock: Identifiable、PendingImage 含 name/tags) |
| Database/ | DatabaseManager.swift | 数据库 CRUD、内容块编辑/追加、搜索+分类组合查询、文件合并、回收站管理 |
| Storage/ | PhotoStorageManager.swift | 图片文件读写、缩略图生成、空间计算 |
| Keychain/ | KeychainManager.swift | API Key 安全存取(iOS Keychain) |
| Network/ | NetworkManager.swift | HTTP 请求封装、错误处理 |
按功能拆分的 UI 模块,每个子目录对应 App 的一个屏幕/功能。
| 子目录 | 文件 | 职责 |
|---|---|---|
| Collection/ | CollectionView.swift | 首页双列瀑布流 + 分类 tab + 内嵌搜索栏(搜索+分类组合过滤) + 点击标题回主页 |
| Collection/ | CategoryFilterBar.swift | 分类筛选 tab 栏(带 Safari 弹性动画) |
| Collection/ | UnsortedBanner.swift | 固定顶部白条——未整理文件入口 |
| Detail/ | FileDetailView.swift | 文件详情页(逐条编辑铅笔按钮 + 右对齐追加按钮 + 左滑图片浮层) |
| Detail/ | ImageGalleryOverlay.swift | 左滑图片浮层(图片撑满无白边 + 跨分类金色光晕 + tag 跳转) |
| UnsortedFiles/ | UnsortedFilesView.swift | 未整理文件列表 + 选图 + AI 分析按钮 |
| Murmur/ | MurmurTimelineView.swift | 碎碎念时间线(Threads 风格紧凑单列布局) |
| Murmur/ | MurmurCard.swift | 单条碎碎念卡片(Threads 风格紧凑布局,无背景色) |
| Settings/ | SettingsView.swift | 设置主页(AI 配置/费用/存储/隐私) |
| Settings/ | AIConfigView.swift | AI 平台选择 + API Key 输入 |
| Settings/ | APIKeyGuideView.swift | API Key 申领指导(各平台图文步骤) |
| Settings/ | BudgetView.swift | AI 费用管理(调用次数/费用估算/月度上限) |
| Settings/ | StorageView.swift | 存储空间用量查看 |
| Settings/ | PrivacyPolicyView.swift | 隐私政策页面 |
| Settings/ | ExportView.swift | 数据导出 |
| RecycleBin/ | RecycleBinView.swift | 回收站(恢复/清空/30 天自动清理) |
| Onboarding/ | OnboardingView.swift | 首次引导页(3 页分步介绍) |
| Sidebar/ | SidebarView.swift | 侧边栏(热力图 + 关键词云) |
| Sidebar/ | HeatmapView.swift | 活跃度热力图 |
| Sidebar/ | KeywordCloudView.swift | 关键词词云 |
已删除:
Search/SearchView.swift(搜索功能已内嵌至 CollectionView)
跨模块复用的组件、样式和工具。
| 子目录 | 文件 | 职责 |
|---|---|---|
| Theme/ | AppTheme.swift | 全局颜色、字号、间距、圆角、阴影、动画参数 |
| Theme/ | ButtonStyles.swift | 分类按钮、主要按钮、次要按钮样式 |
| Theme/ | CardStyles.swift | 浮层卡片、瀑布流卡片样式修饰符 |
| Theme/ | TextStyles.swift | AI 注释、文件标题、正文、时间标注样式 |
| Components/ | TimelineSeparator.swift | 时间标记(Threads 风格左对齐相对时间,无气泡底色) |
| Components/ | FloatingImageCard.swift | 浮层图片卡片(图片撑满 + 日期左下角悬浮白字 + 金色光晕 + 长按触感) |
| Components/ | ComposeSheet.swift | 统一输入 Sheet(碎碎念/带图发布/编辑/追加,含图片选择器+分类+tag+命名) |
| Components/ | FABButton.swift | 全局悬浮按钮(右下角 + 号) |
| Components/ | WaterfallGrid.swift | 双列瀑布流布局组件 |
| Components/ | EmptyStateView.swift | 首页空白引导提示 |
| Components/ | TagChip.swift | 单个标签胶囊 |
| Components/ | TagFlowView.swift | 横向流式标签布局(支持 onRemove 删除) |
| Components/ | TagInputView.swift | 标签编辑输入组件(含历史补全) |
| Components/ | KeyboardToolbar.swift | 键盘工具栏 |
| Extensions/ | DateExtensions.swift | 日期格式化扩展 |
| Models/ | CategoryType.swift | 五大分类枚举(找书/找诗/找画/找歌/碎碎念) |
| Models/ | FileStatus.swift | 文件状态枚举(已整理/未整理/已删除) |
| Constants/ | AppConstants.swift | App Group ID、文件名正则、回收站天数等全局常量 |
iOS Share Extension,独立 target。
| 文件 | 职责 |
|---|---|
| ShareViewController.swift | 分享面板 UI(分类选择+命名框+标签输入),将图片+分类+name+tags 写入 App Group 共享空间 |
构建和分发配置文档。
| 文件 | 职责 |
|---|---|
| SETUP_GUIDE.md | Xcode 项目创建和配置的完整步骤指南 |
| DISTRIBUTION.md | TestFlight 分发和 App Store 上架指南 |
- 阅读
Config/SETUP_GUIDE.md,按步骤在 Xcode 中创建项目 - 将本文件夹中的源代码拖入 Xcode
- 配置 App Group 和 Share Extension
Cmd + R编译运行