# Neo4j 连接成功后返回数据库 ID

## 需求说明

当前端 Connect 测试 Neo4j 连接成功后，后端需要返回数据库的 ID，以便前端保存图谱配置。

---

## 问题

当前 `/neo4j/check` 接口返回：
```json
{
  "success": true,
  "message": "connection successful",
  "version": "5.14.0",
  "databases": ["neo4j", "system"]
}
```

**没有返回 `databaseId`**，导致后续保存图谱时缺少 `databaseId`。

---

## 需求内容

修改 `/neo4j/check` 接口，在连接成功时：

1. **检查数据库是否已存在** - 根据 URI（bolt://host:port）、username、database 查询
2. **如果存在** - 返回已有的 `databaseId`
3. **如果不存在** - 自动创建一条数据库记录，并返回新的 `databaseId`

### 返回格式

```json
{
  "success": true,
  "message": "connection successful",
  "version": "5.14.0",
  "databases": ["neo4j", "system"],
  "databaseId": "xxx-xxx-xxx",
  "name": "Neo4j-neo4j",
  "description": "Neo4j neo4j@10.10.10.189:7687"
}
```

| 字段 | 类型 | 说明 |
|------|------|------|
| success | bool | 是否成功 |
| message | string | 消息 |
| version | string | Neo4j 版本 |
| databases | array | 数据库列表 |
| databaseId | string | 数据库记录 ID |
| name | string | 数据库名称 |
| description | string | 数据库描述 |

### 请求参数

当前 `/neo4j/check` 请求：
```json
{
  "db_type": "Neo4j",
  "host": "10.10.10.189",
  "port": 7687,
  "username": "neo4j",
  "password": "neo4j",
  "database": "neo4j"
}
```

后端需要增加 `name` 字段用于数据库名称（可选）：
```json
{
  "name": "My Neo4j Database"
}
```

---

## 涉及文件

- `server/internal/service/neo4j_service.go`
  - 函数：`Check()` - 第 81-128 行
  - 函数：`ensureNeo4jDatabase()` - 第 131-175 行（已有代码但可能有问题）

- `server/internal/model/neo4j_info.go`
  - 结构体：`Neo4jCheckResponse` - 需要确保 `databaseId` 字段正确返回

---

## 前端使用

前端代码已实现兼容处理：
```javascript
const dbId = result.databaseId || result.id || result.database_id || ''
```

所以后端返回 `databaseId`、`id` 或 `database_id` 都可以被正确识别。

