feat: 新增 teams 目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
18
teams/api/README.md
Normal file
18
teams/api/README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# API 接口文档
|
||||
|
||||
## 目录
|
||||
|
||||
### Database 相关
|
||||
|
||||
- [检查数据库连接并获取表结构](database-check.md)
|
||||
- [创建数据库配置](database-create.md)
|
||||
- [获取数据库列表](database-list.md)
|
||||
- [获取子表列表](subtable-list.md)
|
||||
|
||||
### Neo4j 相关
|
||||
|
||||
- [Neo4j 连接测试](neo4j-check.md)
|
||||
|
||||
---
|
||||
|
||||
> 接口如有更新,请同步更新此文档
|
||||
200
teams/api/database-check.md
Normal file
200
teams/api/database-check.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# 检查数据库连接并获取表结构
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /database/check
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| db_type | string | 是 | 数据库类型:`mysql`、`postgres`、`neo4j` |
|
||||
| host | string | 是 | 数据库主机 |
|
||||
| port | int | 是 | 数据库端口 |
|
||||
| username | string | 是 | 用户名 |
|
||||
| password | string | 否 | 密码 |
|
||||
| database | string | 是 | 数据库名 |
|
||||
| charset | string | 否 | 字符集,默认 `utf8mb4` |
|
||||
| ssl_mode | string | 否 | SSL 模式 |
|
||||
| database_id | string | 否 | 已存在的数据库ID,用于恢复字段映射 |
|
||||
| uri | string | 否 | Neo4j 连接地址(如 bolt://localhost:7687),Neo4j 类型必填 |
|
||||
|
||||
## 请求示例(MySQL/PostgreSQL)
|
||||
|
||||
```json
|
||||
{
|
||||
"db_type": "mysql",
|
||||
"host": "localhost",
|
||||
"port": 3306,
|
||||
"username": "root",
|
||||
"password": "root",
|
||||
"database": "students",
|
||||
"charset": "utf8mb4",
|
||||
"database_id": "xxx-xxx-xxx"
|
||||
}
|
||||
```
|
||||
|
||||
## 请求示例(Neo4j)
|
||||
|
||||
```json
|
||||
{
|
||||
"db_type": "neo4j",
|
||||
"uri": "bolt://localhost:7687",
|
||||
"username": "neo4j",
|
||||
"password": "password",
|
||||
"database": "neo4j"
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| success | bool | 是否连接成功 |
|
||||
| message | string | 消息 |
|
||||
| database | string | 数据库名 |
|
||||
| tables | array | 表结构列表(MySQL/PostgreSQL) |
|
||||
| graphs | object | 图谱数据(Neo4j) |
|
||||
|
||||
### tables[] 详情(关系型数据库)
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| table_name | string | 表名 |
|
||||
| table_comment | string | 表注释 |
|
||||
| ddl | string | 建表 DDL(带 COMMENT 的映射后 DDL) |
|
||||
| columns | array | 列信息列表 |
|
||||
|
||||
### columns[] 详情
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| column_name | string | 列名 |
|
||||
| data_type | string | 数据类型 |
|
||||
| column_type | string | 完整列类型 |
|
||||
| is_nullable | string | 是否可空(YES/NO) |
|
||||
| default_value | string | 默认值 |
|
||||
| column_key | string | 主键标识(PRI/MUL/UNI) |
|
||||
| extra | string | 额外信息(如 auto_increment) |
|
||||
| column_comment | string | 列注释 |
|
||||
| mapped_name | string | 字段中文映射名(已保存的映射) |
|
||||
|
||||
### graphs 详情(Neo4j)
|
||||
|
||||
| 参数 |类型| 说明 |
|
||||
|------|------|------|
|
||||
| labels | array | 标签列表 |
|
||||
| relationshipTypes | array | 关系类型列表 |
|
||||
| nodes | array | 节点属性定义 |
|
||||
| relationships | array | 关系属性定义 |
|
||||
|
||||
### graphs.labels[]
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| name | string | 标签名称 |
|
||||
| count | int | 节点数量 |
|
||||
|
||||
### graphs.relationshipTypes[]
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| name | string | 关系类型名称 |
|
||||
| count | int | 关系数量 |
|
||||
|
||||
### graphs.nodes[]
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| label | string | 节点标签名 |
|
||||
| properties | array | 属性列表 |
|
||||
|
||||
### graphs.relationships[]
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| type | string | 关系类型名 |
|
||||
| startLabel | string | 起始节点标签 |
|
||||
| endLabel | string | 目标节点标签 |
|
||||
| properties | array | 属性列表 |
|
||||
|
||||
## 返回示例(MySQL/PostgreSQL)
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "connection successful",
|
||||
"database": "students",
|
||||
"tables": [
|
||||
{
|
||||
"table_name": "users",
|
||||
"table_comment": "用户表",
|
||||
"ddl": "CREATE TABLE `users` (\n `id` int(10) unsigned NOT NULL COMMENT '用户ID'\n ...\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
|
||||
"columns": [
|
||||
{
|
||||
"column_name": "id",
|
||||
"data_type": "int",
|
||||
"column_type": "int(10) unsigned",
|
||||
"is_nullable": "NO",
|
||||
"default_value": "",
|
||||
"column_key": "PRI",
|
||||
"extra": "auto_increment",
|
||||
"column_comment": "",
|
||||
"mapped_name": "用户ID"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 返回示例(Neo4j)
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "connection successful",
|
||||
"database": "neo4j",
|
||||
"graphs": {
|
||||
"labels": [
|
||||
{"name": "User", "count": 100},
|
||||
{"name": "Order", "count": 50}
|
||||
],
|
||||
"relationshipTypes": [
|
||||
{"name": "KNOWS", "count": 30},
|
||||
{"name": "OWNS", "count": 20}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"label": "User",
|
||||
"properties": [
|
||||
{"name": "id", "type": "string"},
|
||||
{"name": "name", "type": "string"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"relationships": [
|
||||
{
|
||||
"type": "KNOWS",
|
||||
"startLabel": "User",
|
||||
"endLabel": "User",
|
||||
"properties": [
|
||||
{"name": "since", "type": "date"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 使用场景
|
||||
|
||||
1. **关系型数据库**:
|
||||
- 首次连接:不传 `database_id`,获取实时表结构
|
||||
- 恢复映射:传入 `database_id`,返回已保存的 `mapped_name` 和 `ddl`
|
||||
|
||||
2. **Neo4j 图数据库**:
|
||||
- 连接 Neo4j 并获取图谱概览数据(标签、关系类型、属性定义)
|
||||
- 用于前端图可视化展示
|
||||
104
teams/api/database-create.md
Normal file
104
teams/api/database-create.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# 创建数据库配置
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /database/add
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| name | string | 是 | 数据库名称 |
|
||||
| description | string | 否 | 描述 |
|
||||
| db_type | string | 是 | 数据库类型 |
|
||||
| host | string | 是 | 主机 |
|
||||
| port | int | 是 | 端口 |
|
||||
| username | string | 是 | 用户名 |
|
||||
| password | string | 否 | 密码 |
|
||||
| database | string | 是 | 数据库名 |
|
||||
| charset | string | 否 | 字符集 |
|
||||
| ssl_mode | string | 否 | SSL 模式 |
|
||||
| sub_tables | array | 否 | 子表配置列表 |
|
||||
|
||||
### sub_tables[] 详情
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| parent_table | string | 是 | 原始表名 |
|
||||
| sub_table_name | string | 是 | 子表别名 |
|
||||
| sub_table_comment | string | 否 | 子表注释 |
|
||||
| mapping_type | string | 否 | 映射类型 |
|
||||
| relation_field | string | 否 | 关联字段 |
|
||||
| relation_type | string | 否 | 关联类型 |
|
||||
| fields | array | 否 | 字段映射列表 |
|
||||
|
||||
### fields[] 详情
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| column_name | string | 是 | 列名 |
|
||||
| mapped_name | string | 是 | 中文映射名 |
|
||||
|
||||
## 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "学生数据库",
|
||||
"description": "用于存储学生信息",
|
||||
"db_type": "mysql",
|
||||
"host": "localhost",
|
||||
"port": 3306,
|
||||
"username": "root",
|
||||
"password": "root",
|
||||
"database": "students",
|
||||
"charset": "utf8mb4",
|
||||
"sub_tables": [
|
||||
{
|
||||
"parent_table": "users",
|
||||
"sub_table_name": "用户表",
|
||||
"sub_table_comment": "用户信息",
|
||||
"fields": [
|
||||
{"column_name": "id", "mapped_name": "用户ID"},
|
||||
{"column_name": "name", "mapped_name": "用户名"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 数据库记录ID |
|
||||
| name | string | 数据库名称 |
|
||||
| db_type | string | 数据库类型 |
|
||||
| host | string | 主机 |
|
||||
| port | int | 端口 |
|
||||
| ... | ... | 其他字段 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "xxx-xxx-xxx",
|
||||
"name": "学生数据库",
|
||||
"description": "用于存储学生信息",
|
||||
"db_type": "mysql",
|
||||
"host": "localhost",
|
||||
"port": 3306,
|
||||
"username": "root",
|
||||
"password": "root",
|
||||
"database": "students",
|
||||
"table_count": 1,
|
||||
"charset": "utf8mb4",
|
||||
"created_at": "2026-03-06T15:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
## 说明
|
||||
|
||||
- 创建时会自动连接数据库获取表结构 DDL
|
||||
- 如果传入了 `fields`(字段映射),会自动生成带 COMMENT 的新 DDL 并存储
|
||||
51
teams/api/database-list.md
Normal file
51
teams/api/database-list.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# 获取数据库列表
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
GET /database/list
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
无
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| list | array | 数据库列表 |
|
||||
|
||||
### list[] 详情
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 数据库ID |
|
||||
| name | string | 数据库名称 |
|
||||
| description | string | 描述 |
|
||||
| db_type | string | 数据库类型 |
|
||||
| host | string | 主机 |
|
||||
| port | int | 端口 |
|
||||
| database | string | 数据库名 |
|
||||
| table_count | int | 子表数量 |
|
||||
| created_at | string | 创建时间 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"list": [
|
||||
{
|
||||
"id": "xxx-xxx",
|
||||
"name": "学生数据库",
|
||||
"description": "用于存储学生信息",
|
||||
"db_type": "mysql",
|
||||
"host": "localhost",
|
||||
"port": 3306,
|
||||
"database": "students",
|
||||
"table_count": 5,
|
||||
"created_at": "2026-03-06T15:00:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
268
teams/api/knowledge-api.md
Normal file
268
teams/api/knowledge-api.md
Normal file
@@ -0,0 +1,268 @@
|
||||
# 知识库 API
|
||||
|
||||
## 基础信息
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 基础URL | `http://localhost:8082` |
|
||||
|
||||
## 接口列表
|
||||
|
||||
### 1. 创建知识库
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
POST /api/knowledge/create
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| name | String | 是 | 知识库名称 |
|
||||
| description | String | 否 | 知识库描述 |
|
||||
| llm_model_id | String | 是 | LLM 模型 ID |
|
||||
| embedding_model_id | String | 是 | Embedding 模型 ID |
|
||||
| parsing_config | Object | 是 | 解析配置 |
|
||||
| - engine | String | 是 | 解析引擎:markitdown / docling |
|
||||
| - docling_url | String | 条件 | Docling URL(engine=docling 时必填) |
|
||||
| - enable_pdf | Boolean | 否 | 是否启用 PDF 解析 |
|
||||
| - pandoc | Boolean | 否 | 是否启用 Pandoc |
|
||||
| storage_config | Object | 否 | 存储配置,不传则使用全局配置 |
|
||||
| - type | String | 否 | 存储模式:local / minio |
|
||||
| - endpoint | String | 否 | MinIO endpoint |
|
||||
| - bucket | String | 否 | MinIO bucket |
|
||||
| - access_key | String | 否 | MinIO access key |
|
||||
| - secret_key | String | 否 | MinIO secret key |
|
||||
| - use_ssl | Boolean | 否 | MinIO 是否使用 SSL |
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"id": "kb_xxx",
|
||||
"message": "Knowledge base created successfully"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. 获取知识库列表
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
GET /api/knowledge/list
|
||||
```
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "kb_001",
|
||||
"name": "产品文档知识库",
|
||||
"description": "用于存储产品手册",
|
||||
"llm_model_id": "model_001",
|
||||
"embedding_model_id": "model_002",
|
||||
"status": "active",
|
||||
"document_count": 15,
|
||||
"chunk_count": 156,
|
||||
"created_at": "2024-01-15T10:30:00Z",
|
||||
"updated_at": "2024-01-15T10:30:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. 获取知识库详情
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
GET /api/knowledge/:id
|
||||
```
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "kb_001",
|
||||
"name": "产品文档知识库",
|
||||
"description": "用于存储产品手册",
|
||||
"llm_model_id": "model_001",
|
||||
"embedding_model_id": "model_002",
|
||||
"parsing_config": {
|
||||
"engine": "markitdown",
|
||||
"enable_pdf": true,
|
||||
"pandoc": true
|
||||
},
|
||||
"status": "active",
|
||||
"document_count": 15,
|
||||
"chunk_count": 156,
|
||||
"created_at": "2024-01-15T10:30:00Z",
|
||||
"updated_at": "2024-01-15T10:30:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. 删除知识库
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
DELETE /api/knowledge/:id
|
||||
```
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Knowledge base deleted"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. 获取知识库下的文档列表
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
GET /api/knowledge/:id/documents
|
||||
```
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| status | String | 否 | 过滤状态:all / parsed / parsing / failed |
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "doc_001",
|
||||
"knowledge_base_id": "kb_001",
|
||||
"name": "产品手册_v2.0.pdf",
|
||||
"file_key": "abc123.pdf",
|
||||
"file_url": "http://localhost:8082/files/abc123.pdf",
|
||||
"file_size": 2516582,
|
||||
"status": "parsed",
|
||||
"chunk_count": 156,
|
||||
"uploaded_at": "2024-01-15T10:30:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. 上传文档到知识库
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
POST /api/knowledge/:id/documents
|
||||
Content-Type: multipart/form-data
|
||||
```
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| file | File | 是 | 要上传的文件 |
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"id": "doc_001",
|
||||
"url": "http://localhost:8082/files/abc123.pdf",
|
||||
"document": {
|
||||
"id": "doc_001",
|
||||
"knowledge_base_id": "kb_001",
|
||||
"name": "产品手册_v2.0.pdf",
|
||||
"file_size": 2516582,
|
||||
"status": "parsing",
|
||||
"chunk_count": 0,
|
||||
"uploaded_at": "2024-01-15T10:30:00Z"
|
||||
},
|
||||
"message": "Document uploaded"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 7. 删除知识库文档
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
DELETE /api/knowledge/:id/documents/:doc_id
|
||||
```
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Document deleted"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 8. 重新解析文档
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
POST /api/knowledge/:id/documents/:doc_id/reparse
|
||||
```
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Document reparse started"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 9. 获取文档预览内容
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
GET /api/knowledge/:id/documents/:doc_id/preview
|
||||
```
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| page | Number | 否 | 页码(默认 1) |
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"total_pages": 3,
|
||||
"current_page": 1,
|
||||
"content": "第一章 产品介绍..."
|
||||
}
|
||||
}
|
||||
```
|
||||
208
teams/api/model-api.md
Normal file
208
teams/api/model-api.md
Normal file
@@ -0,0 +1,208 @@
|
||||
# Model Settings 接口文档
|
||||
|
||||
## 接口列表
|
||||
|
||||
### 1. 获取模型列表
|
||||
|
||||
**接口地址:** `GET /model/list`
|
||||
|
||||
**返回参数:**
|
||||
```json
|
||||
{
|
||||
"list": [
|
||||
{
|
||||
"id": "xxx-xxx-xxx",
|
||||
"name": "OpenAI",
|
||||
"model_type": "chat",
|
||||
"provider": "OpenAI",
|
||||
"model": "gpt-4o",
|
||||
"api_key": "sk-xxx",
|
||||
"base_url": "https://api.openai.com",
|
||||
"api_endpoint": "/v1/chat/completions",
|
||||
"status": "active",
|
||||
"created_at": "2024-01-01T00:00:00Z",
|
||||
"updated_at": "2024-01-01T00:00:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. 获取模型详情
|
||||
|
||||
**接口地址:** `GET /model/:id`
|
||||
|
||||
**返回参数:**
|
||||
```json
|
||||
{
|
||||
"id": "xxx-xxx-xxx",
|
||||
"name": "OpenAI",
|
||||
"model_type": "chat",
|
||||
"provider": "OpenAI",
|
||||
"model": "gpt-4o",
|
||||
"api_key": "sk-xxx",
|
||||
"base_url": "https://api.openai.com",
|
||||
"api_endpoint": "/v1/chat/completions",
|
||||
"status": "active",
|
||||
"created_at": "2024-01-01T00:00:00Z",
|
||||
"updated_at": "2024-01-01T00:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. 创建模型
|
||||
|
||||
**接口地址:** `POST /model/add`
|
||||
|
||||
**请求参数:**
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| name | string | 是 | 模型名称 |
|
||||
| model_type | string | 是 | 模型类型:chat/embedding/rerank/vlm |
|
||||
| provider | string | 是 | 提供商:OpenAI/Ollama |
|
||||
| model | string | 是 | 模型标识,如 gpt-4o |
|
||||
| api_key | string | 是 | API 密钥 |
|
||||
| base_url | string | 是 | 基础 URL |
|
||||
| api_endpoint | string | 否 | API 端点路径 |
|
||||
|
||||
**请求示例:**
|
||||
```json
|
||||
{
|
||||
"name": "OpenAI",
|
||||
"model_type": "chat",
|
||||
"provider": "OpenAI",
|
||||
"model": "gpt-4o",
|
||||
"api_key": "sk-xxx",
|
||||
"base_url": "https://api.openai.com",
|
||||
"api_endpoint": "/v1/chat/completions"
|
||||
}
|
||||
```
|
||||
|
||||
**返回参数:**
|
||||
```json
|
||||
{
|
||||
"id": "xxx-xxx-xxx",
|
||||
"name": "OpenAI",
|
||||
"model_type": "chat",
|
||||
"provider": "OpenAI",
|
||||
"model": "gpt-4o",
|
||||
"api_key": "sk-xxx",
|
||||
"base_url": "https://api.openai.com",
|
||||
"api_endpoint": "/v1/chat/completions",
|
||||
"status": "active",
|
||||
"created_at": "2024-01-01T00:00:00Z",
|
||||
"updated_at": "2024-01-01T00:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. 更新模型
|
||||
|
||||
**接口地址:** `PUT /model/:id`
|
||||
|
||||
**请求参数:**
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| name | string | 否 | 模型名称 |
|
||||
| model_type | string | 否 | 模型类型:chat/embedding/rerank/vlm |
|
||||
| provider | string | 否 | 提供商:OpenAI/Ollama |
|
||||
| model | string | 否 | 模型标识 |
|
||||
| api_key | string | 否 | API 密钥 |
|
||||
| base_url | string | 否 | 基础 URL |
|
||||
| api_endpoint | string | 否 | API 端点路径 |
|
||||
| status | string | 否 | 状态:active/inactive |
|
||||
|
||||
**请求示例:**
|
||||
```json
|
||||
{
|
||||
"name": "OpenAI Updated",
|
||||
"model_type": "chat",
|
||||
"provider": "OpenAI",
|
||||
"model": "gpt-4o",
|
||||
"api_key": "sk-xxx",
|
||||
"base_url": "https://api.openai.com",
|
||||
"api_endpoint": "/v1/chat/completions",
|
||||
"status": "active"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. 删除模型
|
||||
|
||||
**接口地址:** `DELETE /model/:id`
|
||||
|
||||
**返回参数:**
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. 测试连接
|
||||
|
||||
**接口地址:** `POST /model/test`
|
||||
|
||||
**请求参数:**
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| provider | string | 是 | 提供商:OpenAI/Ollama |
|
||||
| model | string | 是 | 模型标识 |
|
||||
| api_key | string | 是 | API 密钥 |
|
||||
| base_url | string | 是 | 基础 URL |
|
||||
| api_endpoint | string | 否 | API 端点路径 |
|
||||
|
||||
**请求示例:**
|
||||
```json
|
||||
{
|
||||
"provider": "OpenAI",
|
||||
"model": "gpt-4o",
|
||||
"api_key": "sk-xxx",
|
||||
"base_url": "https://api.openai.com",
|
||||
"api_endpoint": "/v1/chat/completions"
|
||||
}
|
||||
```
|
||||
|
||||
**返回参数:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Connection successful"
|
||||
}
|
||||
```
|
||||
|
||||
或失败时:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "HTTP 401: Unauthorized"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 数据结构
|
||||
|
||||
### ModelInfo 模型信息
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 UUID |
|
||||
| name | string | 模型名称 |
|
||||
| model_type | string | 模型类型:chat/embedding/rerank/vlm |
|
||||
| provider | string | 提供商:OpenAI/Ollama |
|
||||
| model | string | 模型标识 |
|
||||
| api_key | string | API 密钥 |
|
||||
| base_url | string | 基础 URL |
|
||||
| api_endpoint | string | API 端点路径 |
|
||||
| status | string | 状态:active/inactive |
|
||||
| created_at | datetime | 创建时间 |
|
||||
| updated_at | datetime | 更新时间 |
|
||||
265
teams/api/neo4j-check.md
Normal file
265
teams/api/neo4j-check.md
Normal file
@@ -0,0 +1,265 @@
|
||||
# Neo4j 连接测试
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /neo4j/check
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| host | string | 是 | Neo4j 主机 |
|
||||
| port | int | 是 | Neo4j 端口(默认 7687) |
|
||||
| username | string | 是 | 用户名(默认 neo4j) |
|
||||
| password | string | 是 | 密码 |
|
||||
| database | string | 否 | 数据库名(默认 neo4j) |
|
||||
| name | string | 否 | 数据库名称,用于保存记录 |
|
||||
| uri | string | 否 | Neo4j 连接地址(bolt://host:port) |
|
||||
| description | string | 否 | 数据库描述 |
|
||||
|
||||
## 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"host": "localhost",
|
||||
"port": 7687,
|
||||
"username": "neo4j",
|
||||
"password": "password",
|
||||
"database": "neo4j",
|
||||
"name": "My Neo4j Database"
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| success | bool | 是否连接成功 |
|
||||
| message | string | 消息 |
|
||||
| version | string | Neo4j 版本 |
|
||||
| databases | array | 数据库列表 |
|
||||
| databaseId | string | 数据库记录 ID(新增) |
|
||||
| name | string | 数据库名称(新增) |
|
||||
| description | string | 数据库描述(新增) |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "connection successful",
|
||||
"version": "5.14.0",
|
||||
"databases": ["neo4j", "system"],
|
||||
"databaseId": "abc-123-def",
|
||||
"name": "Neo4j-neo4j",
|
||||
"description": "Neo4j neo4j@localhost:7687"
|
||||
}
|
||||
```
|
||||
|
||||
> **说明**:连接成功时,后端会自动检查数据库记录是否存在,不存在则创建并返回 `databaseId`、`name` 和 `description`。前端可使用这些信息进行后续保存图谱操作。
|
||||
|
||||
---
|
||||
|
||||
# Neo4j 获取图谱概览数据(核心接口)
|
||||
|
||||
获取所有标签(Labels)和关系类型(Relationship Types)的统计信息,用于前端图谱可视化。
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /neo4j/graphs
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| uri | string | 是 | Neo4j 连接地址,如 bolt://localhost:7687 |
|
||||
| username | string | 是 | 用户名 |
|
||||
| password | string | 是 | 密码 |
|
||||
| database | string | 否 | 数据库名(默认 neo4j) |
|
||||
|
||||
## 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"uri": "bolt://localhost:7687",
|
||||
"username": "neo4j",
|
||||
"password": "password",
|
||||
"database": "neo4j"
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| success | bool | 是否成功 |
|
||||
| graphs | object | 图谱数据 |
|
||||
|
||||
### graphs 对象
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|
|
||||
| labels------|------| | array | 标签列表 |
|
||||
| relationshipTypes | array | 关系类型列表 |
|
||||
|
||||
### labels 数组项
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| name | string | 标签名称 |
|
||||
| count | int | 该标签的节点数量 |
|
||||
|
||||
### relationshipTypes 数组项
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| name | string | 关系类型名称 |
|
||||
| count | int | 该关系的数量 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"graphs": {
|
||||
"labels": [
|
||||
{"name": "User", "count": 1523},
|
||||
{"name": "Order", "count": 856},
|
||||
{"name": "Product", "count": 2341},
|
||||
{"name": "Category", "count": 45},
|
||||
{"name": "Review", "count": 5678}
|
||||
],
|
||||
"relationshipTypes": [
|
||||
{"name": "KNOWS", "count": 2341},
|
||||
{"name": "BOUGHT", "count": 5678},
|
||||
{"name": "BELONGS_TO", "count": 2341},
|
||||
{"name": "HAS_REVIEW", "count": 5678},
|
||||
{"name": "LOCATED_IN", "count": 1523}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 前端使用说明
|
||||
|
||||
前端使用 ECharts 力导向图谱展示:
|
||||
- `labels` 生成图谱节点,count 决定节点大小
|
||||
- `relationshipTypes` 生成图谱边
|
||||
- 建议返回至少 5-10 个关系类型以便生成丰富图谱
|
||||
|
||||
---
|
||||
|
||||
# Neo4j 获取节点详情
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /neo4j/nodes
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| uri | string | 是 | Neo4j 连接地址,如 bolt://localhost:7687 |
|
||||
| username | string | 是 | 用户名 |
|
||||
| password | string | 是 | 密码 |
|
||||
| database | string | 否 | 数据库名 |
|
||||
| label | string | 是 | 节点标签名 |
|
||||
| limit | int | 否 | 返回数量限制,默认 10 |
|
||||
|
||||
## 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"uri": "bolt://localhost:7687",
|
||||
"username": "neo4j",
|
||||
"password": "password",
|
||||
"label": "User",
|
||||
"limit": 10
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| success | bool | 是否成功 |
|
||||
| message | string | 消息 |
|
||||
| nodes | array | 节点数据列表 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "success",
|
||||
"nodes": [
|
||||
{"id": "1", "name": "张三", "email": "zhangsan@example.com"},
|
||||
{"id": "2", "name": "李四", "email": "lisi@example.com"}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Neo4j 获取关系详情
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /neo4j/relationships
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| uri | string | 是 | Neo4j 连接地址 |
|
||||
| username | string | 是 | 用户名 |
|
||||
| password | string | 是 | 密码 |
|
||||
| database | string | 否 | 数据库名 |
|
||||
| relationship_type | string | 是 | 关系类型名 |
|
||||
| limit | int | 否 | 返回数量限制,默认 10 |
|
||||
|
||||
## 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"uri": "bolt://localhost:7687",
|
||||
"username": "neo4j",
|
||||
"password": "password",
|
||||
"relationship_type": "KNOWS",
|
||||
"limit": 10
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| success | bool | 是否成功 |
|
||||
| message | string | 消息 |
|
||||
| relationships | array | 关系数据列表 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "success",
|
||||
"relationships": [
|
||||
{
|
||||
"startId": "1",
|
||||
"endId": "2",
|
||||
"startLabels": ["User"],
|
||||
"endLabels": ["User"],
|
||||
"since": "2020-01-01"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
75
teams/api/neo4j-graph-save.md
Normal file
75
teams/api/neo4j-graph-save.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Neo4j 图谱保存接口需求
|
||||
|
||||
## 需求说明
|
||||
|
||||
前端需要保存 Neo4j 图谱的连接信息,以便后续快速加载和查看。
|
||||
|
||||
---
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
POST /database/graph/save
|
||||
```
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| databaseId | string | 是 | 数据库 ID |
|
||||
| databaseName | string | 是 | 数据库名称 |
|
||||
| uri | string | 是 | Neo4j 连接地址,如 bolt://localhost:7687 |
|
||||
| username | string | 是 | 用户名 |
|
||||
| labels | array | 是 | 标签列表 |
|
||||
| relationshipTypes | array | 是 | 关系类型列表 |
|
||||
| selectedLabel | string | 否 | 当前选中的标签 |
|
||||
|
||||
## 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"databaseId": "123",
|
||||
"databaseName": "neo4j",
|
||||
"uri": "bolt://10.10.10.189:7687",
|
||||
"username": "neo4j",
|
||||
"labels": ["User", "Order", "Product"],
|
||||
"relationshipTypes": ["KNOWS", "BOUGHT", "BELONGS_TO"],
|
||||
"selectedLabel": "User"
|
||||
}
|
||||
```
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| success | bool | 是否成功 |
|
||||
| message | string | 消息 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "保存成功"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 前端调用示例
|
||||
|
||||
```javascript
|
||||
fetch('/database/graph/save', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
databaseId: '123',
|
||||
databaseName: 'neo4j',
|
||||
uri: 'bolt://10.10.10.189:7687',
|
||||
username: 'neo4j',
|
||||
labels: ['User', 'Order', 'Product'],
|
||||
relationshipTypes: ['KNOWS', 'BOUGHT', 'BELONGS_TO'],
|
||||
selectedLabel: 'User',
|
||||
}),
|
||||
})
|
||||
```
|
||||
75
teams/api/subtable-list.md
Normal file
75
teams/api/subtable-list.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# 获取子表列表
|
||||
|
||||
## 接口地址
|
||||
|
||||
```
|
||||
GET /sub-table/database/:database_id
|
||||
```
|
||||
|
||||
## 路径参数
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| database_id | string | 是 | 数据库ID |
|
||||
|
||||
## 返回参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| list | array | 子表列表 |
|
||||
|
||||
### list[] 详情
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 子表ID |
|
||||
| database_id | string | 关联的数据库ID |
|
||||
| parent_table | string | 原始表名 |
|
||||
| sub_table_name | string | 子表别名 |
|
||||
| sub_table_comment | string | 子表注释 |
|
||||
| mapping_type | string | 映射类型 |
|
||||
| relation_field | string | 关联字段 |
|
||||
| relation_type | string | 关联类型 |
|
||||
| fields | array | 字段映射列表 |
|
||||
| ddl | string | 建表 DDL(带 COMMENT) |
|
||||
| created_at | string | 创建时间 |
|
||||
|
||||
### fields[] 详情
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| column_name | string | 列名 |
|
||||
| mapped_name | string | 中文映射名 |
|
||||
|
||||
## 返回示例
|
||||
|
||||
```json
|
||||
{
|
||||
"list": [
|
||||
{
|
||||
"id": "xxx-xxx",
|
||||
"database_id": "database-xxx",
|
||||
"parent_table": "users",
|
||||
"sub_table_name": "用户表",
|
||||
"sub_table_comment": "用户信息",
|
||||
"mapping_type": "horizontal",
|
||||
"relation_field": "id",
|
||||
"relation_type": "one_to_many",
|
||||
"fields": [
|
||||
{"column_name": "id", "mapped_name": "用户ID"},
|
||||
{"column_name": "name", "mapped_name": "用户名"}
|
||||
],
|
||||
"ddl": "CREATE TABLE `users` (\n `id` int(10) unsigned NOT NULL COMMENT '用户ID'\n ...\n)",
|
||||
"created_at": "2026-03-06T15:00:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 使用场景
|
||||
|
||||
用于恢复映射状态:
|
||||
1. 用户点击已存在的数据库的 "Map Tables" 按钮
|
||||
2. 调用此接口获取已保存的子表信息
|
||||
3. 根据 `parent_table` 勾选已选择的表
|
||||
4. 根据 `fields` 恢复字段映射
|
||||
96
teams/api/upload-api.md
Normal file
96
teams/api/upload-api.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# 文件上传 API
|
||||
|
||||
## 基础信息
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 基础URL | `http://localhost:8082` |
|
||||
| 上传模式 | local / minio(配置决定) |
|
||||
|
||||
## 配置说明
|
||||
|
||||
```yaml
|
||||
# config.yaml
|
||||
upload_mode: "local" # 上传模式:local 或 minio
|
||||
upload_local_path: "resource/files" # 本地存储路径
|
||||
server_base_url: "http://localhost:8082" # 服务器基础URL
|
||||
|
||||
# MinIO 配置(upload_mode 为 minio 时需要)
|
||||
minio_endpoint: "localhost:9000"
|
||||
minio_access_key: "your-access-key"
|
||||
minio_secret_key: "your-secret-key"
|
||||
minio_bucket: "x-agents"
|
||||
minio_use_ssl: false
|
||||
```
|
||||
|
||||
## 接口列表
|
||||
|
||||
### 1. 上传文件
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
POST /api/file_upload
|
||||
Content-Type: multipart/form-data
|
||||
```
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| file | File | 是 | 要上传的文件 |
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"url": "http://localhost:8082/files/abc123.pdf",
|
||||
"fileKey": "abc123",
|
||||
"message": "Upload successful"
|
||||
}
|
||||
```
|
||||
|
||||
**错误响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "File too large (max 100MB)"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. 删除文件
|
||||
|
||||
**请求**
|
||||
|
||||
```
|
||||
DELETE /api/file_upload/:filename
|
||||
```
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| filename | String | 是 | 文件名(不含路径) |
|
||||
|
||||
**响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "File deleted"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. 访问文件(仅本地模式)
|
||||
|
||||
文件上传后,本地模式下可通过以下 URL 直接访问:
|
||||
|
||||
```
|
||||
GET /files/{filename}
|
||||
```
|
||||
|
||||
例如:`http://localhost:8082/files/abc123.pdf`
|
||||
|
||||
> 注意:MinIO 模式返回的是预签名 URL,有效期 24 小时。
|
||||
Reference in New Issue
Block a user