feat: 实现CutThenThink P0阶段核心功能
项目初始化 - 创建完整项目结构(src/, data/, docs/, examples/, tests/) - 配置requirements.txt依赖 - 创建.gitignore P0基础框架 - 数据库模型:Record模型,6种分类类型 - 配置管理:YAML配置,支持AI/OCR/云存储/UI配置 - OCR模块:PaddleOCR本地识别,支持云端扩展 - AI模块:支持OpenAI/Claude/通义/Ollama,6种分类 - 存储模块:完整CRUD,搜索,统计,导入导出 - 主窗口框架:侧边栏导航,米白配色方案 - 图片处理:截图/剪贴板/文件选择/图片预览 - 处理流程整合:OCR→AI→存储串联,Markdown展示,剪贴板复制 - 分类浏览:卡片网格展示,分类筛选,搜索,详情查看 技术栈 - PyQt6 + SQLAlchemy + PaddleOCR + OpenAI/Claude SDK - 共47个Python文件,4000+行代码 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
171
docs/design.md
Normal file
171
docs/design.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# CutThenThink 设计文档
|
||||
|
||||
## 项目概述
|
||||
|
||||
一个多用户的截图管理工具,核心流程:**截图 → OCR解析 → AI理解分类 → 生成备注和执行计划**
|
||||
|
||||
## 技术架构
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────────────────┐
|
||||
│ PyQt6 桌面应用(纯客户端) │
|
||||
├────────────────────────────────────────────────────────────────┤
|
||||
│ • 截图/上传 • 分类浏览 • Markdown预览+复制 • 设置面板 │
|
||||
│ • 内置轻量OCR(本地) │
|
||||
│ • SQLite 本地存储 │
|
||||
└────────────────────────────────────────────────────────────────┘
|
||||
↓ API 调用
|
||||
┌────────────────────────────────────────────────────────────────┐
|
||||
│ 外部服务(云端/自建,可配置) │
|
||||
├────────────────────────────────────────────────────────────────┤
|
||||
│ • OCR服务:百度/腾讯/自定义API │
|
||||
│ • AI服务:OpenAI/Claude/通义/本地模型 │
|
||||
│ • 云存储:OSS/S3/WebDAV(可选) │
|
||||
└────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 核心功能模块
|
||||
|
||||
### 1. 截图与输入模块
|
||||
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| 全局快捷键截图 | 用户自定义快捷键,触发系统区域截图 |
|
||||
| 剪贴板监听 | 自动检测剪贴板中的图片,提示用户是否处理 |
|
||||
| 图片上传 | 支持拖拽或浏览选择本地图片文件(PNG、JPG、JPEG、WEBP) |
|
||||
| 批量上传 | 一次选择多张图片,排队处理 |
|
||||
|
||||
### 2. OCR 处理模块
|
||||
|
||||
| 方案 | 说明 |
|
||||
|------|------|
|
||||
| 内置轻量OCR | PaddleOCR轻量版,本地运行,无需联网 |
|
||||
| 云端OCR API | 支持配置百度OCR、腾讯OCR、或自建OCR服务 |
|
||||
| 自动降级 | 优先使用云端OCR,失败时自动降级到本地OCR |
|
||||
|
||||
### 3. AI 分析与分类模块
|
||||
|
||||
**分类类型**:
|
||||
- 待办事项
|
||||
- 信息/笔记
|
||||
- 灵感/想法
|
||||
- 参考资料
|
||||
- 搞笑文案
|
||||
- 纯文本
|
||||
|
||||
**支持的AI提供商**:
|
||||
- 国际:OpenAI (GPT-4)、Anthropic (Claude)
|
||||
- 国内:通义千问、文心一言、智谱、DeepSeek
|
||||
- 本地:Ollama、LM Studio(兼容OpenAI API)
|
||||
|
||||
**输出格式**:Markdown,支持复制粘贴到其他工具
|
||||
|
||||
### 4. 数据存储模块
|
||||
|
||||
- **本地存储**:SQLite 单文件数据库
|
||||
- **可选云同步**:WebDAV / 阿里云OSS / AWS S3
|
||||
- **数据导出**:导出全部/按分类导出为Markdown
|
||||
|
||||
## UI 设计
|
||||
|
||||
### 配色方案
|
||||
```
|
||||
背景色: #faf8f5 (米白)
|
||||
卡片色: #ffffff (纯白)
|
||||
强调色: #ff6b6b (珊瑚红)
|
||||
边框色: #e9ecef (浅灰)
|
||||
```
|
||||
|
||||
### 分类颜色
|
||||
| 分类 | 颜色 |
|
||||
|------|------|
|
||||
| 待办事项 | #ff6b6b (红) |
|
||||
| 笔记 | #4dabf7 (蓝) |
|
||||
| 灵感 | #ffd43b (黄) |
|
||||
| 参考资料 | #51cf66 (绿) |
|
||||
| 搞笑文案 | #ff922b (橙) |
|
||||
| 纯文本 | #adb5bd (灰) |
|
||||
|
||||
### 主界面布局
|
||||
```
|
||||
┌──────────┬─────────────────────────────────────────┐
|
||||
│ 侧边栏 │ 主内容区 │
|
||||
│ │ ┌─────────────────────────────────┐ │
|
||||
│ Logo │ │ 卡片网格展示 │ │
|
||||
│ ─────── │ │ (图片预览+分类标签+内容摘要) │ │
|
||||
│ 全部 │ └─────────────────────────────────┘ │
|
||||
│ 待办 │ │
|
||||
│ 笔记 │ [📷 截图] [➕ 新建] │
|
||||
│ 灵感 │ │
|
||||
│ 参考资料 │ │
|
||||
│ 搞笑文案 │ │
|
||||
│ ─────── │ │
|
||||
│ 批量上传 │ │
|
||||
│ 设置 │ │
|
||||
└──────────┴─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 批量上传页面
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 批量上传 [清空] [开始处理] │
|
||||
├────────────────┬────────────────────────────────────┤
|
||||
│ │ 📷 拖放区 │
|
||||
│ 图片列表 │ 点击选择或拖放图片到这里 │
|
||||
│ │ 支持 PNG, JPG, WEBP │
|
||||
│ □ [缩略图] │ │
|
||||
│ 文件名 │ │
|
||||
│ 2.3 MB │ │
|
||||
│ [移除] │ │
|
||||
└────────────────┴────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 详情弹窗
|
||||
```
|
||||
┌────────────────────────────────────────┐
|
||||
│ 详情 [✕] │
|
||||
├────────────────────────────────────────┤
|
||||
│ ┌──────────────────────────────┐ │
|
||||
│ │ 原图预览 │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
│ ┌──────────────────────────────┐ │
|
||||
│ │ Markdown 结果 │ │
|
||||
│ │ ## 待办事项 │ │
|
||||
│ │ - [ ] 完成界面设计 │ │
|
||||
│ │ - [ ] 编写 API 文档 │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
│ │
|
||||
│ [关闭] [📋 复制 Markdown] │
|
||||
└────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 数据模型
|
||||
|
||||
### records 表
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | INTEGER | 主键 |
|
||||
| image_path | TEXT | 图片存储路径 |
|
||||
| ocr_text | TEXT | OCR识别结果 |
|
||||
| category | TEXT | 分类类型 |
|
||||
| ai_result | TEXT | AI生成的Markdown |
|
||||
| tags | TEXT | 标签(JSON数组) |
|
||||
| notes | TEXT | 用户备注 |
|
||||
| created_at | TIMESTAMP | 创建时间 |
|
||||
| updated_at | TIMESTAMP | 更新时间 |
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **GUI框架**: PyQt6
|
||||
- **OCR**: PaddleOCR(本地)+ API接口(云端)
|
||||
- **数据库**: SQLite (sqlalchemy)
|
||||
- **AI调用**: OpenAI SDK / requests
|
||||
- **配置管理**: YAML/JSON
|
||||
- **打包**: PyInstaller
|
||||
|
||||
## 开发优先级
|
||||
|
||||
1. **P0**: 基础框架 + 本地OCR + 简单AI分类
|
||||
2. **P1**: 批量上传 + 完整分类 + 云端OCR支持
|
||||
3. **P2**: 云存储同步 + 高级配置
|
||||
4. **P3**: 多用户隔离 + 导入导出
|
||||
Reference in New Issue
Block a user