MindMap/README.md

424 lines
11 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.

# AI思维导图生成器
基于Django + Vue.js的智能思维导图生成和管理系统支持AI驱动的文档分析和可视化思维导图创建。
## ✨ 功能特性
### 🧠 AI智能分析
- **文档智能解析**: 支持DOCX、PDF、TXT、MD等多种格式
- **AI内容提取**: 自动识别文档结构,生成层次化思维导图
- **智能标题识别**: 基于视觉特征和语义逻辑的标题层级分析
- **内容结构化**: 将非结构化文档转换为结构化思维导图
### 🎨 可视化编辑
- **交互式思维导图**: 基于MindElixir的可视化编辑界面
- **拖拽操作**: 支持节点拖拽、移动、编辑
- **实时保存**: 自动保存编辑内容到数据库
- **缩放控制**: 支持思维导图缩放和居中显示
- **Markdown支持**: 节点内容支持Markdown语法渲染
- **表格渲染**: 支持Markdown表格在思维导图中的显示
### 💾 数据管理
- **云端存储**: 思维导图数据持久化存储
- **历史记录**: 自动保存操作历史,支持快速恢复
- **数据导入导出**: 支持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
- **思维导图**: MindElixir 3.0.0 (自定义增强版本)
- **文件处理**: mammoth.js (DOCX), pdfjs-dist (PDF)
- **HTTP客户端**: Axios 1.5.0
- **Markdown处理**: marked 16.2.1 + 自定义渲染器
- **数学公式**: KaTeX 0.16.22
- **代码高亮**: PrismJS 1.30.0
### AI内容分析
- **TypeScript**: 类型安全的Markdown转JSON转换
- **流式处理**: 支持大文档的流式AI分析
- **多模型支持**: 支持多种AI模型切换
## 🚀 快速开始
### 环境要求
- Python 3.8+
- Node.js 16+
- npm 或 yarn
### 1. 克隆项目
```bash
git clone <repository-url>
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格式规范支持树形结构的数据交换。
## 📁 项目结构
```
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 # 思维导图组件
│ │ │ ├── AISidebar.vue # AI助手侧边栏
│ │ │ └── MarkdownTest.vue # Markdown测试组件
│ │ ├── api/ # API接口
│ │ │ └── mindmap.js # 思维导图API
│ │ ├── lib/ # 第三方库
│ │ │ └── mind-elixir/ # MindElixir库项目使用版本
│ │ ├── utils/ # 工具函数
│ │ │ └── markdownRenderer.js # Markdown渲染器
│ │ ├── App.vue # 主应用组件
│ │ └── main.js # 应用入口
│ ├── test-*.html # 功能测试文件
│ ├── package.json # 前端依赖
│ └── vite.config.js # Vite配置
../mind-elixir-core-master/ # MindElixir完整源码平级目录
│ ├── 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. **保存分享**:思维导图自动保存到数据库
### 快捷键操作
- `Ctrl + 滚轮`:缩放思维导图
- `双击节点`:编辑节点内容
- `右键节点`:显示操作菜单
- `拖拽节点`:移动节点位置
- `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) 文件
## 🧹 项目优化
### 代码清理
项目已进行全面的代码清理和优化:
-**删除冗余文件**: 移除了重复的测试文件和调试文件
-**保留核心功能**: 保留了所有必要的测试和调试工具
-**优化项目结构**: 清晰分离了开发版本和生产版本
-**MindElixir增强**: 集成了自定义的Markdown和表格渲染功能
### 文件结构优化
- **保留**: `../mind-elixir-core-master/` - 完整的源码和文档(平级目录)
- **保留**: `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服务支持