1. 页面概览

数据源管理页(路由 /datasources)属于 AIP「Action 栏目」,管理平台接入的外部数据源:列表展示(ID/名称/类型/描述/连接信息),支持新建、编辑、测试连接、导入元数据与删除;连接参数存于 connection_config,密码不回显。

一句话总结:AIP 数据源 CRUD + 测试连接 + 元数据导入页,对接后端 /datasources 系列接口。

2. 访问入口

3. 界面布局

┌──────────────────────────────────────────────┐
│ ① 页头:数据源管理 + [新建数据源/收起表单]    │
│ ② 操作结果提示条(alert,可关闭)             │
│ ③ 新建/编辑表单卡 + [创建/更新数据源][取消]   │
│   名称*/类型*/主机/端口/数据库名/用户名/密码/描述 │
│ ④ 数据源列表卡(加载中 / 空态 / 表格)       │
│ ⑤ 结果弹窗(测试连接/导入元数据 JSON)       │
└──────────────────────────────────────────────┘

各板块职责:

4. 交互元素

控件位置含义与作用
「新建数据源」/「收起表单」页头切换表单显隐(showCreateForm)
数据源名称 *表单必填;占位 如 sales_data_warehouse
数据库类型 *表单必填下拉:PostgreSQL(POSTGRESQL)/MySQL(MYSQL)/SQLite(SQLITE)/SQL Server(SQLSERVER)
主机地址 / 端口 / 数据库名 / 用户名表单连接参数;占位 localhost / 5432 / chatbi_forge_dev / postgres;端口为 number 类型
密码表单type=password,占位「输入密码」;编辑时不回填,留空表示不修改
描述表单textarea(2 行),占位「数据源的简单描述...」
「创建数据源」/「更新数据源」表单提交;提交中显示「提交中...」并禁用;成功后 alert 成功并刷新列表
「取消」表单resetForm(清空表单、关闭表单)
「测试连接」列表行用当前数据源配置调用 /datasources/:id/test,结果以 JSON 弹窗展示;失败走 alert
「导入元数据」列表行调用 /datasources/:id/import-metadata,结果以 JSON 弹窗展示
「编辑」列表行回填表单进入编辑态(标题「编辑数据源」)
「删除」列表行confirm 确认「确定要删除数据源"xx"吗?此操作不可撤销。」后调用 DELETE

5. 后端关联

5.1 API 端点

方法路径用途
GET/aip-api/v1/datasources数据源列表(响应 {data_sources: [...]}
POST/aip-api/v1/datasources创建数据源(201 返回数据源)
GET/aip-api/v1/datasources/:id单个数据源
PUT/aip-api/v1/datasources/:id更新数据源(name/type 必填且 type 为合法枚举)
DELETE/aip-api/v1/datasources/:id删除数据源(响应 {deleted}
POST/aip-api/v1/datasources/:id/test测试连接(body 为 name/type/connection_config)
POST/aip-api/v1/datasources/:id/import-metadata导入元数据

5.2 请求体结构

创建/更新 payload 形如 {name, type, connection_config:{host, port, user, password, database, description, active}}active 恒为 true)。

5.3 关键机制

6. 权限与安全

7. 常见问题与排错

  1. 「测试连接」失败:数据库不可达或账号密码错误。核对 host/port/user/password 与防火墙;SQLite 类型确认文件路径/权限。
  2. 「导入元数据」无响应或只有 task_id:快路径窗口内未完成会返回 202 {task_id}。用 GET /aip-api/v1/tasks/:id 轮询进度;失败查数据源连接与后端日志。
  3. 创建/更新报 400nametype 必填,且 type 必须是 POSTGRESQL/MYSQL/SQLITE/SQLSERVER 之一。
  4. 页面 401 跳登录:token 过期。重新登录 AIP 后返回本页。

8. 已知缺陷与边界

说明
编辑密码不回填编辑后不保存密码则保持原值(留空不修改)
非管理员可写数据源接口仅 JWT 保护,普通账号也可增删改
无 AI 描述开关页面未暴露 ai_generate_descriptions,默认不生成 AI 描述

注:列表无分页(后端固定取前 100 条,页面无分页控件)已于 2026-09-06 修复(本地分页)。

注:导入任务化不轮询终态(202 时需手动查任务)已于 2026-09-06 修复(轮询 /tasks/:id 至终态并提示)。