Files
cutThenThink/docs/implementation-plan.md
congsh c4a77f8aa4 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>
2026-02-11 18:21:31 +08:00

201 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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] 定义 RecordCategoryTODO, 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+ 个子任务