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:
200
docs/implementation-plan.md
Normal file
200
docs/implementation-plan.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# CutThenThink 实施计划
|
||||
|
||||
## 项目初始化 ✅
|
||||
|
||||
### 1. 创建项目结构 ✅
|
||||
```
|
||||
CutThenThink/
|
||||
├── src/
|
||||
│ ├── __init__.py
|
||||
│ ├── main.py # 应用入口
|
||||
│ ├── gui/ # GUI模块
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── main_window.py # 主窗口
|
||||
│ │ ├── widgets/ # 自定义组件
|
||||
│ │ └── styles/ # 样式表
|
||||
│ ├── core/ # 核心业务逻辑
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── ocr.py # OCR处理
|
||||
│ │ ├── ai.py # AI分类
|
||||
│ │ └── storage.py # 数据存储
|
||||
│ ├── models/ # 数据模型
|
||||
│ │ ├── __init__.py
|
||||
│ │ └── database.py # SQLAlchemy模型
|
||||
│ ├── config/ # 配置管理
|
||||
│ │ ├── __init__.py
|
||||
│ │ └── settings.py
|
||||
│ └── utils/ # 工具函数
|
||||
│ ├── __init__.py
|
||||
│ └── helpers.py
|
||||
├── data/ # 数据目录
|
||||
│ ├── images/ # 图片存储
|
||||
│ └── cut_think.db # SQLite数据库
|
||||
├── design/ # 设计文件
|
||||
├── docs/ # 文档
|
||||
├── requirements.txt # Python依赖
|
||||
├── .gitignore
|
||||
└── README.md
|
||||
```
|
||||
|
||||
### 2. 创建 requirements.txt ✅
|
||||
```
|
||||
PyQt6==6.6.1
|
||||
PyQt6-WebEngine==6.6.0
|
||||
SQLAlchemy==2.0.25
|
||||
paddleocr==2.7.0.3
|
||||
paddlepaddle==2.6.0
|
||||
openai>=1.0.0
|
||||
anthropic>=0.18.0
|
||||
requests>=2.31.0
|
||||
pyyaml>=6.0.1
|
||||
pillow>=10.0.0
|
||||
pyperclip>=1.8.2
|
||||
```
|
||||
|
||||
### 3. 创建 .gitignore ✅
|
||||
```
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
.Python
|
||||
env/
|
||||
venv/
|
||||
.venv/
|
||||
data/
|
||||
*.db
|
||||
*.log
|
||||
dist/
|
||||
build/
|
||||
*.spec
|
||||
```
|
||||
|
||||
## P0: 基础框架 + 核心功能
|
||||
|
||||
### 步骤 1: 数据库模型 ✅
|
||||
- [x] 创建 `models/database.py`
|
||||
- [x] 定义 Record 模型(id, image_path, ocr_text, category, ai_result, tags, notes, created_at, updated_at)
|
||||
- [x] 创建数据库初始化函数
|
||||
- [x] 定义 RecordCategory(TODO, NOTE, IDEA, REF, FUNNY, TEXT 6种分类)
|
||||
|
||||
### 步骤 2: 配置管理 ✅
|
||||
- [x] 创建 `config/settings.py`
|
||||
- [x] 定义配置结构(AI配置、OCR配置、云存储配置、UI配置、高级配置)
|
||||
- [x] 实现配置加载/保存(YAML格式)
|
||||
- [x] 实现配置验证功能
|
||||
- [x] 实现配置管理器(单例模式)
|
||||
- [x] 支持嵌套配置访问(点分隔路径)
|
||||
|
||||
### 步骤 3: OCR 模块 ✅
|
||||
- [x] 创建 `core/ocr.py`
|
||||
- [x] 实现 PaddleOCR 本地识别
|
||||
- [x] 定义 OCR 接口基类(便于扩展云端OCR)
|
||||
|
||||
### 步骤 4: AI 模块 ✅
|
||||
- [x] 创建 `core/ai.py`
|
||||
- [x] 实现 OpenAI API 调用
|
||||
- [x] 实现分类提示词模板
|
||||
- [x] 定义分类结果数据结构
|
||||
- [x] 支持多个 AI 提供商(OpenAI, Claude, 通义千问, Ollama)
|
||||
- [x] 实现错误处理和重试机制
|
||||
- [x] 支持 6 种分类类型(TODO, NOTE, IDEA, REF, FUNNY, TEXT)
|
||||
|
||||
### 步骤 5: 存储模块
|
||||
- [ ] 创建 `core/storage.py`
|
||||
- [ ] 实现 CRUD 操作(创建记录、查询记录、更新记录、删除记录)
|
||||
- [ ] 实现按分类查询
|
||||
|
||||
### 步骤 6: 主窗口框架
|
||||
- [ ] 创建 `gui/main_window.py`
|
||||
- [ ] 实现侧边栏导航
|
||||
- [ ] 实现主内容区域布局
|
||||
- [ ] 实现样式表(米白配色方案)
|
||||
|
||||
### 步骤 7: 图片处理功能
|
||||
- [ ] 实现截图功能(全局快捷键)
|
||||
- [ ] 实现剪贴板监听
|
||||
- [ ] 实现图片文件选择
|
||||
- [ ] 实现图片预览
|
||||
|
||||
### 步骤 8: 处理流程整合
|
||||
- [ ] OCR → AI → 存储 流程串联
|
||||
- [ ] 实现 Markdown 结果展示
|
||||
- [ ] 实现复制到剪贴板功能
|
||||
|
||||
### 步骤 9: 分类浏览
|
||||
- [ ] 实现全部记录列表
|
||||
- [ ] 实现按分类筛选
|
||||
- [ ] 实现卡片样式展示
|
||||
|
||||
## P1: 批量上传 + 完整分类
|
||||
|
||||
### 步骤 10: 批量上传界面
|
||||
- [ ] 创建批量上传窗口
|
||||
- [ ] 实现拖放上传
|
||||
- [ ] 实现多图片预览列表
|
||||
- [ ] 实现批量选择/删除
|
||||
|
||||
### 步骤 11: 队列处理
|
||||
- [ ] 实现任务队列
|
||||
- [ ] 实现进度显示
|
||||
- [ ] 实现并发控制
|
||||
|
||||
### 步骤 12: 完整分类支持
|
||||
- [ ] 支持 6 种分类类型
|
||||
- [ ] 实现分类颜色标签
|
||||
- [ ] 实现分类统计
|
||||
|
||||
### 步骤 13: 云端 OCR
|
||||
- [ ] 实现百度 OCR 接口
|
||||
- [ ] 实现腾讯 OCR 接口
|
||||
- [ ] 实现自动降级机制
|
||||
|
||||
### 步骤 14: 更多 AI 提供商
|
||||
- [ ] 支持 Claude API
|
||||
- [ ] 支持通义千问
|
||||
- [ ] 支持本地 Ollama
|
||||
|
||||
## P2: 云存储同步 + 高级配置
|
||||
|
||||
### 步骤 15: 设置界面
|
||||
- [ ] 创建设置窗口
|
||||
- [ ] AI 配置面板
|
||||
- [ ] OCR 配置面板
|
||||
- [ ] 快捷键配置
|
||||
- [ ] 提示词模板编辑
|
||||
|
||||
### 步骤 16: 云存储集成
|
||||
- [ ] WebDAV 支持
|
||||
- [ ] 阿里云 OSS 支持
|
||||
- [ ] AWS S3 支持
|
||||
- [ ] 同步状态显示
|
||||
|
||||
### 步骤 17: 详情弹窗
|
||||
- [ ] 原图查看
|
||||
- [ ] Markdown 渲染
|
||||
- [ ] 编辑功能
|
||||
- [ ] 删除确认
|
||||
|
||||
## P3: 多用户隔离 + 导入导出
|
||||
|
||||
### 步骤 18: 数据导出
|
||||
- [ ] 导出全部为 Markdown
|
||||
- [ ] 按分类导出
|
||||
- [ ] 数据库备份/恢复
|
||||
|
||||
### 步骤 19: 打包配置
|
||||
- [ ] PyInstaller 配置
|
||||
- [ ] 图标设置
|
||||
- [ ] 单文件打包
|
||||
|
||||
## 验证标准
|
||||
|
||||
每个步骤完成后需验证:
|
||||
- [ ] 代码运行无错误
|
||||
- [ ] 功能按预期工作
|
||||
- [ ] 代码符合项目规范
|
||||
|
||||
---
|
||||
|
||||
**总计**: 19 个主要步骤,约 50+ 个子任务
|
||||
Reference in New Issue
Block a user