630 lines
13 KiB
Markdown
630 lines
13 KiB
Markdown
# AI思维导图系统API接口文档
|
||
|
||
## 📋 概述
|
||
|
||
本文档描述了AI思维导图系统的RESTful API接口,包括思维导图管理、节点操作和AI服务等核心功能。
|
||
|
||
## 🔧 基础信息
|
||
|
||
- **Base URL**: `http://127.0.0.1:8000/api`
|
||
- **Content-Type**: `application/json`
|
||
- **数据格式**: 遵循MindElixir规范
|
||
|
||
## 📊 数据格式规范
|
||
|
||
### MindElixir节点格式
|
||
```json
|
||
{
|
||
"id": "string", // 唯一标识符,必填
|
||
"topic": "string", // 节点标题,必填
|
||
"data": {
|
||
"des": "string" // 节点描述,可选
|
||
},
|
||
"children": [ /* Node[] */ ], // 子节点数组,必填
|
||
"mindmapId": "string" // 思维导图ID,可选
|
||
}
|
||
```
|
||
|
||
### 完整思维导图数据格式
|
||
```json
|
||
{
|
||
"nodeData": {
|
||
"id": "string", // 根节点ID
|
||
"topic": "string", // 根节点标题
|
||
"data": {
|
||
"des": "string" // 根节点描述
|
||
},
|
||
"children": [ /* Node[] */ ] // 子节点数组
|
||
}
|
||
}
|
||
```
|
||
|
||
### 数据库节点格式
|
||
```json
|
||
{
|
||
"id": "string", // 节点ID
|
||
"isRoot": boolean, // 是否为根节点
|
||
"parentId": "string", // 父节点ID
|
||
"childrenCount": number, // 子节点数量
|
||
"depth": number, // 节点深度
|
||
"title": "string", // 节点标题
|
||
"des": "string", // 节点描述
|
||
"createDate": "datetime", // 创建时间
|
||
"updateDate": "datetime", // 更新时间
|
||
"delete": boolean // 是否删除
|
||
}
|
||
```
|
||
|
||
## 🗺️ 思维导图管理接口
|
||
|
||
### 获取思维导图
|
||
|
||
**接口:** `GET /api/mindMaps/{id}`
|
||
|
||
**描述:** 根据ID获取思维导图的完整数据,返回MindElixir格式的树形结构
|
||
|
||
**路径参数:**
|
||
- `id` (integer): 思维导图ID
|
||
|
||
**请求示例:**
|
||
```bash
|
||
GET /api/mindMaps/1
|
||
```
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"nodeData": {
|
||
"id": "root",
|
||
"topic": "数字教育平台设计要点",
|
||
"data": {
|
||
"des": "思维导图的根节点"
|
||
},
|
||
"children": [
|
||
{
|
||
"id": "node-1",
|
||
"topic": "用户体验设计",
|
||
"data": {
|
||
"des": "用户体验设计的重要性"
|
||
},
|
||
"children": [
|
||
{
|
||
"id": "node-1-1",
|
||
"topic": "界面交互设计",
|
||
"data": {
|
||
"des": "核心功能入口应控制在3次点击内可达"
|
||
},
|
||
"children": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"detail": "mindMap not found"
|
||
}
|
||
```
|
||
|
||
### 创建思维导图
|
||
|
||
**接口:** `POST /api/mindMaps`
|
||
|
||
**描述:** 创建新的思维导图,支持传入初始数据或创建空思维导图
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"title": "新的思维导图", // 可选,思维导图名称
|
||
"data": { // 可选,初始思维导图数据
|
||
"topic": "根节点标题",
|
||
"data": {
|
||
"des": "根节点描述"
|
||
},
|
||
"children": []
|
||
}
|
||
}
|
||
```
|
||
|
||
**请求示例:**
|
||
```bash
|
||
POST /api/mindMaps
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"title": "AI技术发展",
|
||
"data": {
|
||
"topic": "AI技术发展",
|
||
"data": {
|
||
"des": "人工智能技术发展历程"
|
||
},
|
||
"children": []
|
||
}
|
||
}
|
||
```
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"title": "AI技术发展",
|
||
"nodeData": {
|
||
"id": "root",
|
||
"topic": "AI技术发展",
|
||
"data": {
|
||
"des": "人工智能技术发展历程"
|
||
},
|
||
"children": []
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🔗 节点操作接口
|
||
|
||
### 批量添加节点
|
||
|
||
**接口:** `POST /api/mindMaps/addNodes`
|
||
|
||
**描述:** 向指定思维导图中批量添加节点,支持添加子节点和兄弟节点
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"mindMapId": 1, // 思维导图ID
|
||
"nodes": [ // 节点数组
|
||
{
|
||
"title": "子节点1", // 节点标题
|
||
"des": "节点描述", // 节点描述
|
||
"parentId": "parent-id", // 父节点ID
|
||
"isRoot": false // 是否为根节点
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**请求示例:**
|
||
```bash
|
||
POST /api/mindMaps/addNodes
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"mindMapId": 1,
|
||
"nodes": [
|
||
{
|
||
"title": "机器学习",
|
||
"des": "机器学习算法和应用",
|
||
"parentId": "root"
|
||
},
|
||
{
|
||
"title": "深度学习",
|
||
"des": "深度学习技术发展",
|
||
"parentId": "root"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "成功创建 2 个节点",
|
||
"data": {
|
||
"mindMapId": "1",
|
||
"nodes": [
|
||
{
|
||
"id": "node-1",
|
||
"isRoot": false,
|
||
"parentId": "root",
|
||
"childrenCount": 0,
|
||
"depth": 1,
|
||
"title": "机器学习",
|
||
"des": "机器学习算法和应用",
|
||
"createDate": "2023-07-01T10:30:00Z",
|
||
"updateDate": "2023-07-01T10:30:00Z",
|
||
"delete": false
|
||
},
|
||
{
|
||
"id": "node-2",
|
||
"isRoot": false,
|
||
"parentId": "root",
|
||
"childrenCount": 0,
|
||
"depth": 1,
|
||
"title": "深度学习",
|
||
"des": "深度学习技术发展",
|
||
"createDate": "2023-07-01T10:30:00Z",
|
||
"updateDate": "2023-07-01T10:30:00Z",
|
||
"delete": false
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"detail": "mindMapId is required"
|
||
}
|
||
```
|
||
|
||
### 更新节点
|
||
|
||
**接口:** `PATCH /api/mindMaps/updateNode`
|
||
|
||
**描述:** 更新指定节点的标题、描述或父节点关系
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"id": "node_123", // 节点ID,必填
|
||
"newTitle": "更新后的节点标题", // 可选,新标题
|
||
"newDes": "更新后的节点描述内容", // 可选,新描述
|
||
"newParentId": "parent_node_id_123" // 可选,新父节点ID
|
||
}
|
||
```
|
||
|
||
**请求示例:**
|
||
```bash
|
||
PATCH /api/mindMaps/updateNode
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"id": "node-1",
|
||
"newTitle": "机器学习算法",
|
||
"newDes": "包括监督学习、无监督学习和强化学习",
|
||
"newParentId": "root"
|
||
}
|
||
```
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "节点更新成功",
|
||
"data": {
|
||
"id": "node-1",
|
||
"isRoot": false,
|
||
"parentId": "root",
|
||
"childrenCount": 0,
|
||
"depth": 1,
|
||
"title": "机器学习算法",
|
||
"des": "包括监督学习、无监督学习和强化学习",
|
||
"createDate": "2023-01-01T00:00:00Z",
|
||
"updateDate": "2023-10-05T15:30:00Z",
|
||
"delete": false
|
||
},
|
||
"updatedFields": ["title", "des", "parentId"]
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"detail": "id is required"
|
||
}
|
||
```
|
||
|
||
### 批量删除节点
|
||
|
||
**接口:** `DELETE /api/mindMaps/deleteNodes`
|
||
|
||
**描述:** 批量删除节点及其所有子节点(软删除),自动更新父节点的子节点计数
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"nodeIds": ["node_123", "node_456", "node_789"] // 要删除的节点ID数组
|
||
}
|
||
```
|
||
|
||
**请求示例:**
|
||
```bash
|
||
DELETE /api/mindMaps/deleteNodes
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"nodeIds": ["node-1", "node-2"]
|
||
}
|
||
```
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "节点删除成功",
|
||
"data": {
|
||
"deletedCount": 5,
|
||
"deletedNodeIds": ["node-1", "node-2", "node-1-1", "node-1-2", "node-2-1"]
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"detail": "nodeIds is required"
|
||
}
|
||
```
|
||
|
||
## 🤖 AI服务接口
|
||
|
||
### AI生成Markdown
|
||
|
||
**接口:** `POST /api/ai/generate-markdown`
|
||
|
||
**描述:** 调用AI服务分析文档内容,生成结构化的Markdown格式思维导图
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"system_prompt": "AI系统提示词", // 可选,自定义系统提示
|
||
"user_prompt": "用户输入内容", // 必填,要分析的内容
|
||
"model": "glm-4.5", // 可选,AI模型名称
|
||
"base_url": "https://open.bigmodel.cn/api/paas/v4/", // 可选,API地址
|
||
"api_key": "your_api_key" // 可选,API密钥
|
||
}
|
||
```
|
||
|
||
**请求示例:**
|
||
```bash
|
||
POST /api/ai/generate-markdown
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"system_prompt": "你是一位专业的文档分析专家,请将以下内容转换为结构化的Markdown格式",
|
||
"user_prompt": "人工智能技术发展历程包括早期发展、现代发展等阶段...",
|
||
"model": "glm-4.5"
|
||
}
|
||
```
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"markdown": "# 人工智能技术发展历程\n\n## 早期发展\n- 1950年代概念提出\n- 图灵测试的提出\n\n## 现代发展\n- 深度学习技术突破\n- 应用领域扩展",
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"error": "用户提示词不能为空",
|
||
"success": false
|
||
}
|
||
```
|
||
|
||
## 📊 数据格式转换说明
|
||
|
||
### 前端MindElixir格式 vs 后端数据库格式
|
||
|
||
**前端MindElixir期望格式:**
|
||
```json
|
||
{
|
||
"nodeData": {
|
||
"id": "root",
|
||
"topic": "根节点标题",
|
||
"data": {
|
||
"des": "节点描述"
|
||
},
|
||
"children": [
|
||
{
|
||
"id": "child-1",
|
||
"topic": "子节点标题",
|
||
"data": {
|
||
"des": "子节点描述"
|
||
},
|
||
"children": []
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**后端数据库存储格式:**
|
||
```json
|
||
{
|
||
"id": "mindmap-123",
|
||
"title": "思维导图标题",
|
||
"nodes": [
|
||
{
|
||
"id": "node-1",
|
||
"title": "根节点标题",
|
||
"des": "节点描述",
|
||
"isRoot": true,
|
||
"parentId": null,
|
||
"depth": 0,
|
||
"childrenCount": 1,
|
||
"createDate": "2023-07-01T00:00:00Z",
|
||
"updateDate": "2023-07-01T00:00:00Z",
|
||
"delete": false
|
||
}
|
||
],
|
||
"createDate": "2023-07-01T00:00:00Z",
|
||
"updateDate": "2023-07-01T00:00:00Z",
|
||
"delete": false
|
||
}
|
||
```
|
||
|
||
### 关键字段映射
|
||
|
||
| 前端MindElixir | 后端数据库 | 说明 |
|
||
|---------------|-----------|------|
|
||
| `topic` | `title` | 节点标题 |
|
||
| `data.des` | `des` | 节点描述 |
|
||
| `children` | 通过`parentId`关系构建 | 子节点关系 |
|
||
| `id` | `id` | 节点唯一标识 |
|
||
|
||
### 数据转换规则
|
||
|
||
1. **获取思维导图时**:后端将扁平节点列表转换为MindElixir期望的树形结构
|
||
2. **保存节点时**:前端发送扁平格式,后端存储为关系型数据
|
||
3. **过滤规则**:自动过滤掉标题为"根节点标题"且没有子节点的空根节点
|
||
|
||
所有操作后端都会自动更新 `depth`、`childrenCount`。
|
||
|
||
## 📝 示例思维导图结构
|
||
|
||
```
|
||
数字教育平台设计要点
|
||
├── 用户体验设计
|
||
│ ├── 界面交互设计
|
||
│ │ └── 核心功能入口应控制在3次点击内可达
|
||
│ └── 内容架构规划
|
||
│ └── 合理的内容组织帮助用户构建知识体系
|
||
├── 互动功能开发
|
||
│ └── 学习互动设计
|
||
│ └── 平台应提供即时反馈机制
|
||
└── 数据安全保障
|
||
└── 隐私保护措施
|
||
├── 个人信息和学习数据采用AES-256加密存储
|
||
└── 实施基于角色的权限管理
|
||
```
|
||
|
||
## 🔧 错误码说明
|
||
|
||
| 错误码 | 说明 | 解决方案 |
|
||
|--------|------|----------|
|
||
| 400 | 请求参数错误 | 检查请求体格式和必填字段 |
|
||
| 404 | 资源不存在 | 确认ID是否正确 |
|
||
| 500 | 服务器内部错误 | 检查服务器日志 |
|
||
|
||
## 📚 使用示例
|
||
|
||
### 完整工作流程示例
|
||
|
||
1. **创建思维导图**
|
||
```bash
|
||
POST /api/mindMaps
|
||
{
|
||
"title": "AI技术发展"
|
||
}
|
||
```
|
||
|
||
2. **添加节点**
|
||
```bash
|
||
POST /api/mindMaps/addNodes
|
||
{
|
||
"mindMapId": 1,
|
||
"nodes": [
|
||
{
|
||
"title": "机器学习",
|
||
"des": "机器学习算法和应用",
|
||
"parentId": "root"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
3. **更新节点**
|
||
```bash
|
||
PATCH /api/mindMaps/updateNode
|
||
{
|
||
"id": "node-1",
|
||
"newTitle": "机器学习算法",
|
||
"newDes": "包括监督学习、无监督学习等"
|
||
}
|
||
```
|
||
|
||
|
||
4. **获取完整数据**
|
||
```bash
|
||
GET /api/mindMaps/1
|
||
```
|
||
|
||
## 🚀 快速开始
|
||
|
||
1. 启动后端服务:`python manage.py runserver`
|
||
2. 启动前端服务:`cd frontend && npm run dev`
|
||
3. 访问前端界面:`http://localhost:5173`
|
||
4. 使用API接口:`http://localhost:8000/api`
|
||
|
||
## 📞 技术支持
|
||
|
||
如有问题,请查看:
|
||
- 项目README文档
|
||
- 代码注释和示例
|
||
- 错误日志和调试信息
|
||
|
||
## 初始化Git仓库并上传
|
||
|
||
### 1. 初始化Git仓库
|
||
|
||
```bash
|
||
cd /Users/natalie/Documents/test/siweidaotu
|
||
git init
|
||
```
|
||
|
||
### 2. 创建.gitignore文件
|
||
|
||
```bash
|
||
<code_block_to_apply_changes_from>
|
||
```
|
||
|
||
### 3. 配置Git用户信息(如果还没有配置)
|
||
|
||
```bash
|
||
git config --global user.name "你的用户名"
|
||
git config --global user.email "你的邮箱"
|
||
```
|
||
|
||
### 4. 添加远程仓库
|
||
|
||
```bash
|
||
git remote add origin http://test-www.writebug.com:3000/lixinran/MindMap.git
|
||
```
|
||
|
||
### 5. 添加所有文件到Git
|
||
|
||
```bash
|
||
git add .
|
||
```
|
||
|
||
### 6. 提交更改
|
||
|
||
```bash
|
||
git commit -m "Initial commit: AI思维导图生成器项目
|
||
|
||
- 基于Django + Vue.js的智能思维导图生成和管理系统
|
||
- 支持AI驱动的文档分析和可视化思维导图创建
|
||
- 包含完整的前后端代码和文档"
|
||
```
|
||
|
||
### 7. 设置主分支并推送
|
||
|
||
```bash
|
||
git branch -M main
|
||
git push -u origin main
|
||
```
|
||
|
||
## 如果推送时遇到认证问题
|
||
|
||
当执行 `git push -u origin main` 时,可能会提示输入用户名和密码:
|
||
|
||
- **用户名**:输入你的Git账户用户名
|
||
- **密码**:输入你的Git账户密码或访问令牌
|
||
|
||
## 验证步骤
|
||
|
||
推送完成后,你可以:
|
||
|
||
1. **检查Git状态**:
|
||
```bash
|
||
git status
|
||
```
|
||
|
||
2. **查看远程仓库**:
|
||
```bash
|
||
git remote -v
|
||
```
|
||
|
||
3. **访问仓库网站**:
|
||
打开 [http://test-www.writebug.com:3000/lixinran/MindMap](http://test-www.writebug.com:3000/lixinran/MindMap) 查看是否能看到项目文件
|
||
|
||
请按照这些步骤操作,如果遇到任何错误信息,请告诉我具体的错误内容。
|
||
|