Files
prompt-optimizer/docs/developer/project-structure.md

243 lines
9.0 KiB
Markdown
Raw Permalink 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.
# 项目结构文档
> **注意:** 本文档专注于项目的文件和目录结构。关于技术栈详情和实现流程,请参考 [技术文档](./technical-documentation.md)。
## 1. 项目整体架构
### 1.1 根目录结构
```
prompt-optimizer/
├── packages/ # 项目包
│ ├── core/ # 核心功能包
│ │ ├── src/ # 核心源代码
│ │ ├── tests/ # 核心包测试
│ │ └── package.json # 核心包配置
│ ├── web/ # Web版本
│ │ ├── src/ # Web源代码
│ │ ├── tests/ # Web测试
│ │ └── package.json # Web包配置
│ └── extension/ # Chrome插件
├── docs/ # 项目文档
├── tools/ # 工具脚本
└── ...配置文件
```
### 1.2 配置文件
- `pnpm-workspace.yaml` - 工作区配置
- `.env.example` - 环境变量示例
- `package.json` - 项目配置
- `.vscode/` - VSCode配置目录
- `.gitignore` - Git忽略配置
### 1.3 工作区文件
- `README.md` - 项目说明文档
- `scratchpad.md` - 开发笔记和任务规划已迁移到docs/workspace/
- `experience.md` - 项目经验总结已迁移到docs/workspace/
### 1.4 文档目录 (docs/)
- `README.md` - 文档索引
- `development-guidelines.md` - 开发指南
- `project-status.md` - 项目状态
- `project-structure.md` - 项目结构
- `technical-documentation.md` - 技术文档
- `prd.md` - 产品需求文档
- `CHANGELOG.md` - 更新日志
## 2. 核心包结构 (packages/core)
### 2.1 源代码目录 (packages/core/src/)
```
src/
├── services/ # 核心服务
│ ├── llm/ # LLM服务
│ │ ├── service.ts # LLM服务实现
│ │ ├── types.ts # 类型定义
│ │ └── errors.ts # 错误定义
│ ├── model/ # 文本模型管理
│ │ ├── manager.ts # 模型管理器
│ │ ├── types.ts # 类型定义
│ │ └── defaults.ts# 默认配置
│ ├── image/ # 图像服务(新增)
│ │ ├── service.ts # 图像生成服务
│ │ ├── types.ts # 图像服务类型定义
│ │ ├── electron-proxy.ts # Electron代理
│ │ └── adapters/ # 图像提供商适配器
│ │ ├── abstract-adapter.ts # 抽象适配器基类
│ │ ├── registry.ts # 适配器注册表
│ │ ├── openai.ts # OpenAI DALL-E适配器
│ │ ├── gemini.ts # Google Gemini适配器
│ │ ├── siliconflow-adapter.ts # SiliconFlow适配器
│ │ └── seedream.ts # SeeDream适配器
│ ├── image-model/ # 图像模型管理(新增)
│ │ ├── manager.ts # 图像模型管理器
│ │ ├── types.ts # 类型定义
│ │ └── defaults.ts# 默认配置
│ ├── prompt/ # 提示词服务
│ │ ├── service.ts # 提示词服务实现
│ │ ├── types.ts # 类型定义
│ │ └── errors.ts # 错误定义
│ ├── template/ # 模板服务
│ │ ├── manager.ts # 模板管理器
│ │ ├── types.ts # 类型定义
│ │ └── default-templates/ # 默认模板
│ │ ├── image-optimize/ # 图像模板(新增)
│ │ │ ├── text2image/ # 文生图模板
│ │ │ ├── image2image/ # 图生图模板
│ │ │ └── iterate/ # 图像迭代模板
│ │ ├── basic/ # 基础模板
│ │ └── context/ # 上下文模板
│ └── history/ # 历史记录服务
│ ├── manager.ts # 历史管理器
│ └── types.ts # 类型定义
├── types/ # 公共类型定义
└── utils/ # 工具函数
```
### 2.2 API目录 (src/api/)
- `api/llm.js` - LLM API调用封装
### 2.3 配置目录 (packages/core/config/)
- `models.js` - LLM模型配置
- `prompts.js` - 提示词模板配置
### 2.4 测试目录 (packages/core/tests/)
```
tests/
├── unit/ # 单元测试
│ └── services/ # 服务测试
│ ├── llm/ # LLM服务测试
│ ├── model/ # 模型管理测试
│ └── prompt/ # 提示词服务测试
└── integration/ # 集成测试
└── services/ # 服务集成测试
```
### 2.5 核心包配置
- `package.json` - 核心包配置
- `tsconfig.json` - TypeScript配置
- `vitest.config.ts` - 测试配置
## 3. Web包结构 (packages/web)
### 3.1 源代码目录 (packages/web/src/)
```
src/
├── components/ # Vue组件
│ ├── PromptPanel.vue # 提示词面板
│ ├── ModelManager.vue # 统一模型管理器(支持文本/图像模型切换)
│ ├── ImageModelManager.vue# 图像模型专用管理组件
│ ├── ImageModelEditModal.vue # 图像模型编辑弹窗
│ ├── TemplateManager.vue # 模板管理器
│ ├── InputPanel.vue # 输入面板
│ ├── OutputPanel.vue # 输出面板
│ └── image-mode/ # 图像模式专用组件
│ └── ImageWorkspace.vue # 图像工作区
├── composables/ # Vue组合式函数
│ ├── useImageModelManager.ts # 图像模型管理composable
│ ├── useImageGeneration.ts # 图像生成composable
│ └── useImageWorkspace.ts # 图像工作区composable
├── services/ # 业务逻辑
│ ├── llm/ # LLM服务
│ ├── model/ # 模型配置
│ ├── prompt/ # 提示词服务
│ ├── promptManager.js # 提示词管理
│ └── themeManager.js # 主题管理
├── assets/ # 静态资源
│ ├── images/ # 图片资源
│ └── styles/ # 样式资源
├── prompts/ # 提示词模板
├── App.vue # 根组件
└── main.ts # 入口文件
```
### 3.2 组件目录详情 (packages/web/src/components/)
#### 核心组件
- `PromptPanel.vue` - 提示词输入和优化面板
- `InputPanel.vue` - 输入面板组件
- `OutputPanel.vue` - 输出面板组件
- `TemplateManager.vue` - 模板管理器
- `ThemeToggle.vue` - 主题切换组件
- `LoadingSpinner.vue` - 加载动画组件
#### 模型管理架构
- `ModelManager.vue` - **统一模型管理器**
- 支持文本模型和图像模型的标签页切换
- 文本模型:直接在该组件内管理
- 图像模型:委托给 `ImageModelManager.vue` 组件处理
- 替代了原有的单一模型管理方案(`ModelManager.vue.bak`
- `ImageModelManager.vue` - **图像模型专用管理组件**
- 专门负责图像模型的列表展示、连接测试、启用/禁用等操作
-`useImageModelManager` composable 配合使用
- 支持图像提供商OpenAI DALL-E、Gemini、SiliconFlow等的模型管理
- `ImageModelEditModal.vue` - **图像模型编辑弹窗**
- 用于添加/编辑图像模型配置
- 提供商选择、模型选择、连接配置等表单功能
#### 图像模式组件
- `image-mode/ImageWorkspace.vue` - **图像工作区**
- 图像模式的主要工作界面
- 整合文生图、图生图、图像迭代等功能
### 3.3 测试目录 (packages/web/tests/)
```
tests/
├── unit/ # 单元测试
│ ├── components/ # 组件测试
│ └── services/ # 服务测试
└── integration/ # 集成测试
└── services/ # 服务集成测试
```
### 3.4 Web包配置
- `package.json` - Web包配置
- `vite.config.ts` - Vite配置
- `tailwind.config.js` - TailwindCSS配置
- `.env.local` - 本地环境变量
- `postcss.config.js` - PostCSS配置
- `index.html` - 项目入口HTML文件
## 4. 扩展包结构 (packages/extension)
### 4.1 源代码目录 (packages/extension/src/)
```
src/
├── popup/ # 弹出窗口界面
├── background/ # 后台脚本
├── content/ # 内容脚本
└── manifest.json # 扩展配置文件
```
### 4.2 扩展包配置
- `package.json` - 扩展包配置
- `vite.config.ts` - 构建配置
## 5. 依赖关系
### 5.1 核心包依赖 (@prompt-optimizer/core)
```
@prompt-optimizer/core
├── @openai/openai ^4.83.0 # OpenAI SDK
├── @google/generative-ai ^0.21.0 # Google Generative AI SDK
└── uuid ^11.0.5 # UUID生成
```
### 5.2 Web包依赖 (@prompt-optimizer/web)
```
@prompt-optimizer/web
├── @prompt-optimizer/core # 依赖核心包
├── vue ^3.5.x # Vue框架
├── pinia ^2.1.x # 状态管理
└── tailwindcss ^3.4.1 # 样式框架
```
### 5.3 扩展包依赖 (@prompt-optimizer/extension)
```
@prompt-optimizer/extension
├── @prompt-optimizer/core # 依赖核心包
├── @prompt-optimizer/ui # 依赖UI组件包
└── vue ^3.5.x # Vue框架
```