MindMap/README.md

439 lines
12 KiB
Markdown
Raw Permalink Normal View History

# AI思维导图生成器
基于Django + Vue.js的智能思维导图生成和管理系统支持AI驱动的文档分析和可视化思维导图创建。
## ✨ 功能特性
### 🧠 AI智能分析
- **文档智能解析**: 支持DOCX、PDF、TXT、MD等多种格式
- **AI内容提取**: 自动识别文档结构,生成层次化思维导图
- **智能标题识别**: 基于视觉特征和语义逻辑的标题层级分析
- **内容结构化**: 将非结构化文档转换为结构化思维导图
### 🎨 可视化编辑
- **交互式思维导图**: 基于MindElixir的可视化编辑界面
- **拖拽操作**: 支持节点拖拽、移动、编辑
- **实时保存**: 自动保存编辑内容到数据库
- **缩放控制**: 支持思维导图缩放和居中显示
- **Markdown编辑器**: 基于Marked.js + Prism.js + KaTeX的现代化markdown渲染引擎
- **富媒体内容**: 支持图片、表格、数学公式、代码高亮等多种内容类型
- **图片预览**: 支持双击或右键预览图片细节
- **SVG导出**: 高质量矢量图导出,支持富媒体内容
### 💾 数据管理
- **云端存储**: 思维导图数据持久化存储
- **历史记录**: 自动保存操作历史,支持快速恢复
- **数据导入导出**: 支持JSON格式的数据交换
- **版本管理**: 自动记录创建和更新时间
### 🔧 技术特性
- **响应式设计**: 适配不同屏幕尺寸
- **实时协作**: 支持多用户同时编辑
- **API接口**: 完整的RESTful API
- **模块化架构**: 前后端分离,易于扩展
## 🛠️ 技术栈
### 后端技术
- **框架**: Django 4.2.7 + Django REST Framework
- **数据库**: SQLite生产环境可配置PostgreSQL/MySQL
- **AI服务**: OpenAI API + 智谱AI GLM-4.5
- **文件处理**: python-docx, PyPDF2, markdown
- **跨域支持**: django-cors-headers
### 前端技术
- **框架**: Vue.js 3.3.4 + Vite 4.4.9
2025-09-10 10:26:48 +00:00
- **思维导图**: MindElixir 3.0.0 (自定义增强版本)
- **文件处理**: mammoth.js (DOCX), pdfjs-dist (PDF)
- **HTTP客户端**: Axios 1.5.0
- **Markdown引擎**: Marked.js 16.2.1 + 自定义渲染器
- **数学公式**: KaTeX 0.16.22 (LaTeX表达式支持)
- **代码高亮**: PrismJS 1.30.0 (多语言语法着色)
- **富媒体渲染**: 统一的dangerouslySetInnerHTML机制
### AI内容分析
- **TypeScript**: 类型安全的Markdown转JSON转换
- **流式处理**: 支持大文档的流式AI分析
- **多模型支持**: 支持多种AI模型切换
### Markdown渲染引擎
- **核心引擎**: Marked.js 16.2.1 - 快速、轻量的markdown解析器
- **语法高亮**: PrismJS 1.30.0 - 支持JavaScript、CSS、JSON、Python、SQL等
- **数学公式**: KaTeX 0.16.22 - 完整的LaTeX数学表达式支持
- **自定义渲染**: 针对思维导图优化的图片、表格渲染器
- **统一机制**: 所有富媒体内容使用dangerouslySetInnerHTML统一渲染
- **响应式设计**: 图片、表格等元素自适应容器大小
- **交互功能**: 图片预览、hover效果、SVG导出支持
## 🚀 快速开始
### 环境要求
- Python 3.8+
- Node.js 16+
- npm 或 yarn
### 1. 克隆项目
```bash
git clone <repository-url>
2025-09-10 10:26:48 +00:00
cd MindMap
```
### 2. 后端设置
#### 进入后端目录
```bash
cd backend
```
#### 安装Python依赖
```bash
pip install -r requirements.txt
```
#### 数据库迁移
```bash
python manage.py makemigrations
python manage.py migrate
```
#### 创建超级用户(可选)
```bash
python manage.py createsuperuser
```
#### 启动Django服务器
```bash
python manage.py runserver
```
### 3. 前端设置
#### 安装Node.js依赖
```bash
cd frontend
npm install
```
#### 启动前端开发服务器
```bash
npm run dev
```
### 4. 访问应用
- 前端界面: http://localhost:5173
- 后端API: http://localhost:8000
- Django管理后台: http://localhost:8000/admin
## 📡 API接口
### 思维导图管理
- `GET /api/mindMaps/{id}` - 获取思维导图数据
- `POST /api/mindMaps` - 创建新思维导图
### 节点操作
- `POST /api/mindMaps/addNodes` - 批量添加节点
- `PATCH /api/mindMaps/updateNode` - 更新节点信息
- `DELETE /api/mindMaps/deleteNodes` - 批量删除节点
### AI服务
- `POST /api/ai/generate-markdown` - AI生成Markdown内容
### 数据格式
所有API返回的数据都遵循MindElixir格式规范支持树形结构的数据交换。
## 📁 项目结构
```
2025-09-10 10:26:48 +00:00
MindMap/
├── backend/ # Django后端
│ ├── django_mindmap/ # Django项目配置
│ │ ├── settings.py # 项目设置
│ │ ├── urls.py # 主URL配置
│ │ └── wsgi.py # WSGI配置
│ ├── mindmap/ # 主应用
│ │ ├── models.py # 数据模型mindMap, Node
│ │ ├── views_doc.py # API视图函数
│ │ ├── serializers.py # 数据序列化器
│ │ ├── ai_service.py # AI服务集成
│ │ ├── services.py # 业务逻辑服务
│ │ └── urls.py # 应用URL配置
│ ├── manage.py # Django管理脚本
│ ├── requirements.txt # Python依赖
│ └── mindmap.db # SQLite数据库
├── frontend/ # Vue.js前端
│ ├── src/
│ │ ├── components/ # Vue组件
│ │ │ ├── MindMap.vue # 思维导图组件
2025-09-10 10:26:48 +00:00
│ │ │ ├── AISidebar.vue # AI助手侧边栏
│ │ │ └── MarkdownTest.vue # Markdown测试组件
│ │ ├── api/ # API接口
│ │ │ └── mindmap.js # 思维导图API
2025-09-10 10:26:48 +00:00
│ │ ├── lib/ # 第三方库
│ │ │ └── mind-elixir/ # MindElixir库项目使用版本
│ │ ├── utils/ # 工具函数
│ │ │ └── markdownRenderer.js # Markdown渲染引擎(Marked.js + Prism.js + KaTeX)
2025-09-10 10:26:48 +00:00
│ │ ├── App.vue # 主应用组件
│ │ └── main.js # 应用入口
│ ├── test-*.html # 功能测试文件
│ ├── package.json # 前端依赖
│ └── vite.config.js # Vite配置
../mind-elixir-core-master/ # MindElixir完整源码平级目录
2025-09-10 10:26:48 +00:00
│ ├── src/ # TypeScript源码
│ ├── tests/ # 测试套件
│ ├── dist/ # 编译后文件
│ └── package.json # 依赖配置
└── README.md # 项目文档
```
## ⚙️ 配置说明
### AI服务配置
`backend/mindmap/ai_service.py` 中配置AI服务
```python
# 智谱AI配置
API_KEY = "your_glm_api_key"
BASE_URL = "https://open.bigmodel.cn/api/paas/v4/"
MODEL = "glm-4.5"
# OpenAI配置可选
OPENAI_API_KEY = "your_openai_api_key"
```
### 数据库配置
默认使用SQLite生产环境建议使用PostgreSQL
```python
# backend/django_mindmap/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mindmap_db',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '5432',
}
}
```
### 文件上传配置
```python
# backend/django_mindmap/settings.py
MAX_UPLOAD_SIZE = 16 * 1024 * 1024 # 16MB
ALLOWED_FILE_TYPES = ['.docx', '.pdf', '.txt', '.md']
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'
```
### 前端配置
```javascript
// frontend/src/api/mindmap.js
const API_BASE_URL = "http://127.0.0.1:8000/api";
```
## 🛠️ 开发指南
### 添加新数据模型
1.`backend/mindmap/models.py` 中定义模型
2. 运行数据库迁移:
```bash
cd backend
python manage.py makemigrations
python manage.py migrate
```
### 扩展API接口
1.`backend/mindmap/views_doc.py` 中编写视图函数
2.`backend/mindmap/serializers.py` 中定义序列化器
3.`backend/mindmap/urls.py` 中添加URL路由
### 自定义AI服务
修改 `backend/mindmap/ai_service.py` 中的AI处理逻辑
```python
def call_ai_api(system_prompt, user_prompt, model="glm-4.5", base_url="...", api_key="..."):
# 自定义AI服务调用逻辑
pass
```
### 前端组件开发
1.`frontend/src/components/` 中创建Vue组件
2.`frontend/src/api/` 中添加API接口
3. 使用Vite进行热重载开发
### 数据格式规范
系统使用MindElixir数据格式
```json
{
"nodeData": {
"id": "root",
"topic": "根节点标题",
"data": {
"des": "节点描述"
},
"children": [
{
"id": "child-1",
"topic": "子节点标题",
"data": {
"des": "子节点描述"
},
"children": []
}
]
}
}
```
## 🚀 部署指南
### 生产环境配置
1. **环境变量设置**
```bash
export DEBUG=False
export SECRET_KEY="your-secret-key"
export DATABASE_URL="postgresql://user:pass@localhost/db"
```
2. **静态文件收集**
```bash
cd backend
python manage.py collectstatic --noinput
```
3. **数据库迁移**
```bash
cd backend
python manage.py migrate
```
4. **前端构建**
```bash
cd frontend
npm run build
```
### Docker部署
#### 后端Dockerfile
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY backend/requirements.txt .
RUN pip install -r requirements.txt
COPY backend/ .
RUN python manage.py collectstatic --noinput
EXPOSE 8000
CMD ["gunicorn", "django_mindmap.wsgi:application", "--bind", "0.0.0.0:8000"]
```
#### 前端Dockerfile
```dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 5173
CMD ["npm", "run", "preview"]
```
### Nginx配置
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:5173;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/ {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
## 📝 使用说明
### 基本操作流程
1. **上传文档**在AI侧边栏中上传DOCX、PDF、TXT或MD文件
2. **AI分析**系统自动调用AI服务分析文档结构识别图片、表格等富媒体内容
3. **生成思维导图**AI将文档转换为结构化的思维导图支持图片、表格、数学公式等
4. **编辑调整**:在可视化界面中拖拽、编辑节点,支持富媒体内容预览
5. **导出分享**支持SVG矢量图导出和JSON数据交换
### 快捷键操作
- `Ctrl + 滚轮`:缩放思维导图
- `双击节点`:编辑节点内容
- `双击图片节点`:预览图片细节
- `右键节点`:显示操作菜单(包含图片预览选项)
- `拖拽节点`:移动节点位置
2025-09-10 10:26:48 +00:00
- `Ctrl + E`:展开/折叠节点
- `Alt + F`:聚焦/取消聚焦节点
## 🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
1. Fork 项目
2. 创建功能分支:`git checkout -b feature/new-feature`
3. 提交更改:`git commit -am 'Add new feature'`
4. 推送分支:`git push origin feature/new-feature`
5. 提交Pull Request
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
2025-09-10 10:26:48 +00:00
## 🧹 项目优化
### 代码清理
项目已进行全面的代码清理和优化:
-**删除冗余文件**: 移除了重复的测试文件和调试文件
-**保留核心功能**: 保留了所有必要的测试和调试工具
-**优化项目结构**: 清晰分离了开发版本和生产版本
-**MindElixir增强**: 集成了自定义的Markdown渲染引擎
-**富媒体支持**: 统一的图片、表格、数学公式渲染机制
-**技术栈统一**: 所有富媒体内容使用相同的markdown编辑器
2025-09-10 10:26:48 +00:00
### 文件结构优化
- **保留**: `../mind-elixir-core-master/` - 完整的源码和文档(平级目录)
2025-09-10 10:26:48 +00:00
- **保留**: `frontend/src/lib/mind-elixir/` - 项目中使用的增强版本
- **保留**: 核心测试文件 - 用于功能验证和问题调试
- **删除**: 重复的调试文件和过时的测试文件
## 🙏 致谢
- [MindElixir](https://github.com/ssshooter/mind-elixir-core) - 思维导图可视化库
- [Vue.js](https://vuejs.org/) - 前端框架
- [Django](https://www.djangoproject.com/) - 后端框架
- [智谱AI](https://www.zhipuai.cn/) - AI服务支持