docs(desktop): 📝 完善项目文档
This commit is contained in:
237
README.md
237
README.md
@@ -2,38 +2,122 @@
|
|||||||
|
|
||||||
一个基于Electron和Vue开发的桌面应用程序,利用人工智能技术帮助用户快速生成高质量的读书心得和反思。
|
一个基于Electron和Vue开发的桌面应用程序,利用人工智能技术帮助用户快速生成高质量的读书心得和反思。
|
||||||
|
|
||||||
## 功能特色
|
## 🚀 功能特色
|
||||||
|
|
||||||
- **AI驱动的读书心得生成**:基于用户输入的书籍信息,利用大语言模型自动生成深度读书心得
|
- **AI驱动的读书心得生成**:基于用户输入的书籍信息,利用大语言模型自动生成深度读书心得
|
||||||
- **多职业视角**:根据用户的职业背景(学生、教师、职场人士、科研工作者等)定制化生成内容
|
- **多职业视角**:根据用户的职业背景(学生、教师、职场人士、科研工作者等)定制化生成内容
|
||||||
- **智能摘要与关键词提取**:自动生成内容摘要和关键词,便于回顾和索引
|
- **智能摘要与关键词提取**:自动生成内容摘要和关键词,便于回顾和索引
|
||||||
- **任务管理**:支持批量处理多个读书反思任务
|
- **任务管理**:支持批量处理多个读书反思任务
|
||||||
- **现代化UI界面**:使用Vue和Arco Design构建的精致极简主义界面
|
- **现代化UI界面**:使用Vue和Arco Design构建的精致极简主义界面
|
||||||
|
- **离线数据存储**:使用SQLite数据库本地存储所有任务和用户配置
|
||||||
|
|
||||||
## 技术架构
|
## 🛠️ 技术架构
|
||||||
|
|
||||||
- **主框架**:Electron + Vue 3
|
- **主框架**:[Electron](https://www.electronjs.org/) + [Vue 3](https://vuejs.org/)
|
||||||
- **AI集成**:LangChain + LangGraph,支持结构化AI内容生成
|
- **AI集成**:[LangChain](https://js.langchain.com/) + [LangGraph](https://langchain-ai.github.io/langgraphjs/),支持结构化AI内容生成
|
||||||
- **数据库**:TypeORM + SQLite,本地数据存储
|
- **数据库**:[TypeORM](https://typeorm.io/) + [SQLite](https://www.sqlite.org/),本地数据存储
|
||||||
- **后端通信**:tRPC,类型安全的API调用
|
- **后端通信**:[tRPC](https://trpc.io/),类型安全的API调用
|
||||||
- **构建工具**:Vite + TypeScript
|
- **构建工具**:[Vite](https://vitejs.dev/) + [TypeScript](https://www.typescriptlang.org/)
|
||||||
- **UI组件库**:Arco Design Vue
|
- **UI组件库**:[Arco Design Vue](https://arco.design/vue/)
|
||||||
- **样式框架**:UnoCSS
|
- **样式框架**:[UnoCSS](https://unocss.dev/)
|
||||||
|
- **状态管理**:[Pinia](https://pinia.vuejs.org/)
|
||||||
|
|
||||||
## 核心功能模块
|
## 📋 核心功能模块
|
||||||
|
|
||||||
1. **AI服务模块**:集成大语言模型,实现读书心得的智能生成
|
### 1. AI服务模块
|
||||||
2. **状态管理**:使用LangGraph管理AI生成流程的状态
|
- 集成大语言模型,实现读书心得的智能生成
|
||||||
3. **数据库管理**:使用TypeORM管理任务数据和用户配置
|
- 支持自定义API端点和模型配置
|
||||||
4. **任务管理器**:支持批量处理和任务状态追踪
|
- 结构化输出确保格式一致性
|
||||||
5. **用户界面**:现代化Vue界面,支持任务创建、查看和管理
|
|
||||||
|
|
||||||
## 安装与运行
|
### 2. AI工作流程 (LangGraph)
|
||||||
|
- **内容生成节点**:根据书籍信息和用户职业背景生成读书心得正文
|
||||||
|
- **摘要生成节点**:对生成的内容进行摘要和关键词提取
|
||||||
|
- **状态管理**:使用LangGraph管理AI生成流程的状态
|
||||||
|
|
||||||
|
### 3. 数据库管理
|
||||||
|
- 使用TypeORM管理任务数据和用户配置
|
||||||
|
- 支持阅读用户画像、任务批次和任务项的存储
|
||||||
|
- SQLite数据库确保数据离线安全存储
|
||||||
|
|
||||||
|
### 4. 任务管理器
|
||||||
|
- 支持批量处理和任务状态追踪
|
||||||
|
- 实时任务进度显示
|
||||||
|
- 任务状态管理(待处理、生成中、已完成等)
|
||||||
|
|
||||||
|
### 5. 用户界面
|
||||||
|
- 现代化Vue界面,支持任务创建、查看和管理
|
||||||
|
- 个人用户画像管理
|
||||||
|
- AI模型配置界面
|
||||||
|
|
||||||
|
## 📁 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
├── main/ # Electron主进程
|
||||||
|
│ ├── db/ # 数据库配置
|
||||||
|
│ │ ├── data-source.ts # 数据库连接配置
|
||||||
|
│ │ └── entities/ # 数据实体定义
|
||||||
|
│ │ ├── ReadingPersona.ts # 用户画像实体
|
||||||
|
│ │ ├── ReadingReflectionTaskBatch.ts # 任务批次实体
|
||||||
|
│ │ └── ReadingReflectionTaskItem.ts # 任务项实体
|
||||||
|
│ ├── manager/ # 任务管理器
|
||||||
|
│ │ └── readingReflectionsTaskManager.ts # 任务管理逻辑
|
||||||
|
│ └── services/ # 核心服务
|
||||||
|
│ ├── persona.service.ts # 用户画像服务
|
||||||
|
│ ├── search.service.ts # 搜索服务
|
||||||
|
│ └── ai/ # AI服务目录
|
||||||
|
│ ├── llmService.ts # LLM服务配置
|
||||||
|
│ ├── graph/
|
||||||
|
│ │ └── readingReflectionGraph.ts # AI工作流程图
|
||||||
|
│ ├── nodes/
|
||||||
|
│ │ ├── readingReflectionContent.ts # 内容生成节点
|
||||||
|
│ │ └── readingReflectionSummary.ts # 摘要生成节点
|
||||||
|
│ ├── prompts/
|
||||||
|
│ │ └── readingReflactionPrompts.ts # AI提示词模板
|
||||||
|
│ └── state/
|
||||||
|
│ └── readingReflectionState.ts # AI状态定义
|
||||||
|
├── renderer/ # Vue渲染进程
|
||||||
|
│ ├── components/ # UI组件
|
||||||
|
│ ├── pages/ # 页面组件
|
||||||
|
│ │ ├── about/ # 关于页面
|
||||||
|
│ │ ├── faq/ # 常见问题
|
||||||
|
│ │ ├── home/ # 首页
|
||||||
|
│ │ ├── menus/ # 菜单页面
|
||||||
|
│ │ ├── reflection/ # 反思页面
|
||||||
|
│ │ ├── setting/ # 设置页面
|
||||||
|
│ │ └── task/ # 任务页面
|
||||||
|
│ ├── views/ # 视图组件
|
||||||
|
│ └── src/
|
||||||
|
│ ├── App.vue # 主应用组件
|
||||||
|
│ ├── main.ts # Vue入口文件
|
||||||
|
│ ├── style.css # 样式文件
|
||||||
|
│ ├── assets/ # 静态资源
|
||||||
|
│ ├── common/ # 公共工具
|
||||||
|
│ ├── hooks/ # Vue钩子函数
|
||||||
|
│ ├── lib/ # 库文件
|
||||||
|
│ ├── router/ # 路由配置
|
||||||
|
│ └── utils/ # 工具函数
|
||||||
|
├── preload/ # 预加载脚本
|
||||||
|
├── rpc/ # tRPC配置
|
||||||
|
│ ├── context.ts # tRPC上下文
|
||||||
|
│ ├── index.ts # tRPC入口
|
||||||
|
│ └── router/ # tRPC路由
|
||||||
|
│ ├── config.router.ts # 配置路由
|
||||||
|
│ ├── notice.router.ts # 通知路由
|
||||||
|
│ ├── persona.router.ts # 用户画像路由
|
||||||
|
│ ├── search.router.ts # 搜索路由
|
||||||
|
│ └── task.router.ts # 任务路由
|
||||||
|
└── shared/ # 共享类型定义
|
||||||
|
├── types/ # TypeScript类型定义
|
||||||
|
└── utils/ # 共享工具函数
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 安装与运行
|
||||||
|
|
||||||
### 环境要求
|
### 环境要求
|
||||||
|
|
||||||
- Node.js >= 18
|
- Node.js >= 18
|
||||||
- pnpm (推荐)
|
- pnpm (推荐) 或 npm
|
||||||
|
|
||||||
### 开发环境设置
|
### 开发环境设置
|
||||||
|
|
||||||
@@ -43,7 +127,7 @@
|
|||||||
cd read_book
|
cd read_book
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 安装依赖:
|
2. 安装依赖(推荐使用pnpm):
|
||||||
```bash
|
```bash
|
||||||
pnpm install
|
pnpm install
|
||||||
```
|
```
|
||||||
@@ -72,52 +156,99 @@
|
|||||||
pnpm build:linux
|
pnpm build:linux
|
||||||
```
|
```
|
||||||
|
|
||||||
## AI工作流程
|
### 应用配置
|
||||||
|
|
||||||
本应用使用LangGraph构建AI工作流程:
|
1. 启动应用后,进入设置页面配置AI模型参数
|
||||||
|
2. 输入您的API密钥和模型信息
|
||||||
|
3. 选择适合的模型用于心得生成和摘要提取
|
||||||
|
|
||||||
1. **内容生成节点**:根据书籍信息和用户职业背景生成读书心得正文
|
## 🧠 AI工作流程详解
|
||||||
2. **摘要生成节点**:对生成的内容进行摘要和关键词提取
|
|
||||||
3. **结构化输出**:使用Zod模式确保输出格式的一致性
|
|
||||||
|
|
||||||
## 项目结构
|
### 1. 内容生成节点
|
||||||
|
- 接收书籍信息(书名、作者、描述等)
|
||||||
|
- 根据用户职业背景定制生成内容
|
||||||
|
- 使用结构化输出确保标题和正文格式正确
|
||||||
|
|
||||||
```
|
### 2. 摘要生成节点
|
||||||
src/
|
- 接收上一节点生成的标题和正文
|
||||||
├── main/ # Electron主进程
|
- 提取100字以内的摘要
|
||||||
│ ├── db/ # 数据库配置
|
- 生成3-5个关键词便于检索
|
||||||
│ ├── manager/ # 任务管理器
|
|
||||||
│ └── services/ # 核心服务
|
### 3. 状态管理
|
||||||
│ └── ai/ # AI服务
|
- 使用LangGraph管理整个AI工作流程
|
||||||
├── renderer/ # Vue渲染进程
|
- 状态流转:START → 生成内容 → 生成摘要 → END
|
||||||
│ ├── components/ # UI组件
|
- 每个步骤都更新任务状态和进度
|
||||||
│ ├── pages/ # 页面组件
|
|
||||||
│ └── views/ # 视图组件
|
### 4. 提示词工程
|
||||||
├── preload/ # 预加载脚本
|
- **角色定义**:根据职业背景设定专家角色
|
||||||
├── rpc/ # tRPC配置
|
- **约束条件**:避免身份陈述,直接场景切入
|
||||||
└── shared/ # 共享类型定义
|
- **输出格式**:严格JSON格式确保数据一致性
|
||||||
|
|
||||||
|
## 🔧 配置说明
|
||||||
|
|
||||||
|
### AI模型配置
|
||||||
|
应用支持自定义AI服务提供商:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// src/main/services/ai/llmService.ts
|
||||||
|
const config = store.get(`chatModels.${type}`) as any
|
||||||
|
return new ChatOpenAI({
|
||||||
|
apiKey: config.apiKey,
|
||||||
|
configuration: {
|
||||||
|
baseURL: config.baseURL || 'https://api.openai.com/v1'
|
||||||
|
},
|
||||||
|
modelName: config.modelName,
|
||||||
|
temperature: config.temperature
|
||||||
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
## 配置
|
### 数据库配置
|
||||||
|
- 使用TypeORM + SQLite
|
||||||
|
- 数据存储在本地,确保隐私安全
|
||||||
|
- 支持阅读用户画像、任务批次和任务项的CRUD操作
|
||||||
|
|
||||||
应用使用TypeScript进行类型安全的开发,并通过以下方式配置:
|
### 用户界面配置
|
||||||
|
- 使用Vue 3 + TypeScript
|
||||||
|
- 组件化开发,易于维护
|
||||||
|
- 响应式设计,适配不同屏幕尺寸
|
||||||
|
|
||||||
- **构建配置**:`electron.vite.config.ts`
|
## 🤝 贡献
|
||||||
- **样式配置**:`uno.config.ts`
|
|
||||||
- **TypeScript配置**:`tsconfig.json`
|
|
||||||
- **数据库配置**:`src/main/db/data-source.ts`
|
|
||||||
|
|
||||||
## 贡献
|
欢迎提交Issue和Pull Request来改进项目:
|
||||||
|
|
||||||
欢迎提交Issue和Pull Request来改进项目。
|
1. Fork 项目
|
||||||
|
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
|
||||||
|
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
||||||
|
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
||||||
|
5. 开启 Pull Request
|
||||||
|
|
||||||
## 许可证
|
### 开发约定
|
||||||
|
- 使用TypeScript进行类型安全开发
|
||||||
|
- 遵循ESLint和Prettier代码规范
|
||||||
|
- 提交信息遵循Conventional Commits规范
|
||||||
|
- 使用Husky进行Git Hooks自动化检查
|
||||||
|
|
||||||
本项目采用 [在此添加您的许可证] 许可证。
|
## 📄 许可证
|
||||||
|
|
||||||
## 致谢
|
本项目采用 [MIT](LICENSE) 许可证。
|
||||||
|
|
||||||
- Electron - 跨平台桌面应用框架
|
## 🙏 致谢
|
||||||
- Vue.js - 前端框架
|
|
||||||
- LangChain & LangGraph - AI开发框架
|
- [Electron](https://www.electronjs.org/) - 跨平台桌面应用框架
|
||||||
- Arco Design - UI组件库
|
- [Vue.js](https://vuejs.org/) - 前端框架
|
||||||
|
- [LangChain & LangGraph](https://langchain-ai.github.io/langgraphjs/) - AI开发框架
|
||||||
|
- [TypeORM](https://typeorm.io/) - ORM框架
|
||||||
|
- [Arco Design](https://arco.design/vue/) - UI组件库
|
||||||
|
- [UnoCSS](https://unocss.dev/) - 即时原子化CSS引擎
|
||||||
|
- [tRPC](https://trpc.io/) - 类型安全的API调用
|
||||||
|
|
||||||
|
## 📞 支持
|
||||||
|
|
||||||
|
如需帮助或有建议,请:
|
||||||
|
- 提交GitHub Issues
|
||||||
|
- 查看FAQ页面获取常见问题解答
|
||||||
|
- 检查设置页面的配置选项
|
||||||
|
|
||||||
|
## 📈 版本历史
|
||||||
|
|
||||||
|
项目使用语义化版本控制,详细的版本更新信息请查看Git提交历史。
|
||||||
Reference in New Issue
Block a user