1. 页面概览
多源接入页(/gotham/ingestion)把外部数据灌入 Gotham 融合图:支持 file_csv/file_json/database/manual 四类数据源,配置「连接 + 映射(节点型/边型)+ 清洗」三段式,运行后异步导入生成融合实体,进度经 SSE 实时推送,批次可暂停/恢复。一句话总结:本页是情报多源数据的采集、清洗、融合入库入口(TAD-02)。
2. 访问入口
2.1 路由与菜单
path /gotham/ingestion、name GothamIngestion、title Gotham 多源接入,挂在父路由 /gotham(GothamLayout)下,侧边栏菜单项「多源接入」。源码 action/web/src/views/GothamIngestionPage.vue。
2.2 认证与权限
子路由 meta requiresAuth: true;请求经 gothamClient.js 附带 aip_token,401 用 gotham_refresh_token 自动换新。
2.3 端口与 API 前缀
Gotham 后端 18083,前缀 /gotham-api(baseURL /gotham-api/v1,Vite 代理重写为 /api/v1)。
3. 界面布局
Gotham 多源接入 [刷新]
[操作结果提示 alert(可关闭)]
创建/编辑数据源卡:基础字段 → 连接配置(表单|JSON 切换)
→ 映射配置(节点|边切换)→ 清洗规则(启用+策略+预设)
[创建数据源/保存修改][取消编辑]
数据源列表 | 导入批次(过滤/状态/进度条/暂停/继续/详情) | 融合实体
[运行结果弹窗(Batch #id 运行摘要)]
- 数据源表单:基础字段 + 连接/映射/清洗三段;连接与映射有「表单编辑 / 直接编辑 JSON」双模式。
- 数据源列表:行内「编辑/运行/删除」。
- 导入批次:运行中展示进度条(SSE 推进),可暂停/继续。
- 融合实体:展示已入图实体与解析归属。
4. 交互元素
| 控件 | 位置 | 含义与作用 |
|---|---|---|
| 输入「名称 name *」「显示名」「来源类型」 | 基础字段 | name 全局唯一、编辑不可改;来源类型 file_csv/file_json/database/manual,编辑不可改 |
| 切换「表单编辑 / 直接编辑 JSON」 | 连接/映射区 | 表单按 source_type 展开字段;JSON 兜底,切换时自动序列化 |
| 单选「节点型/边型」 | 映射配置 | node:node_type/id_field/label_field/property_fields;edge:edge_type/source_field/target_field/target_type |
| 勾选「启用清洗」+ 错误策略 + 预设按钮 | 清洗规则 | 预设逐个追加:去除首尾空格/空值统一/日期标准化/手机号规整/全角转半角/正则替换/枚举映射(经 prompt 填字段) |
| 按钮「创建数据源」/「保存修改」/「取消编辑」 | 表单底部 | 校验 name 必填、JSON 合法后 POST/PUT |
| 按钮「运行」 | 数据源列表 | 确认后 POST /ingestion/sources/:id/run,返回 running 批次并开 SSE 订阅 |
| 按钮「暂停」/「继续」 | 导入批次 | 对 running 批次暂停、对 paused 批次恢复 |
| 按钮「详情」 | 导入批次 | 弹窗展示 total_records/imported_records/failed_records/error_log |
| 下拉「按数据源过滤」 | 导入批次 | ?source_id= 过滤批次,默认「全部数据源」 |
5. 后端关联
端点表(源码 action/products/gotham/server/server.go,处理器 handlers_ingestion.go):
| 方法 | 路径 | 用途 |
|---|---|---|
| GET/POST | /ingestion/sources、/ingestion/sources/:id(GET/PUT/DELETE) | 数据源增删改查 |
| POST | /ingestion/sources/:id/run | 启动异步导入,立即返回 running 批次 |
| GET | /ingestion/batches | 批次列表(?source_id= 过滤) |
| GET | /ingestion/batches/:id/progress | SSE 进度流(text/event-stream) |
| POST | /ingestion/batches/:id/pause、/resume | 暂停/断点恢复 |
| GET | /ingestion/entities | 融合实体列表(?limit=100) |
- 异步导入:
run返回批次后后端 goroutine 执行,前端经 SSE 订阅{status, processed, total, batch_id}推进进度;终态(completed/failed)自动刷新批次。 - SSE 实现:EventSource 不能带 Authorization 头,故前端用
fetch+ReadableStream(/gotham-api/v1/ingestion/batches/:id/progress,Bearer 头)按\n\n切帧解析data:行;卸载时abort全部流。 - 三段配置:
connection_config按 source_type 组装(file_csv=path/delimiter,file_json=path,database=连接器参数+SQL,manual=records);mapping_config节点/边二选一;cleaning_config含error_strategy(skip/strict/tolerant)与规则。 - 批次状态:running/success/partial/failed/paused;删数据源保留历史批次与实体。
6. 权限与安全
- 页面全部接口受 JWT 保护,无公开端点。
- database 源口令为密码框;后端连接器有 allow-list(默认 MYSQL/SQLSERVER/POSTGRESQL,SQLITE 需显式授权)。
- 导入结果落融合实体表并经
resolved_entity_id关联图实体,供解析作业消费。
7. 常见问题与排错
- 运行后批次一直 running 且进度条不动:批次 running,但进度长期为 0;原因是 SSE 流未建立(token 缺失/网络中断),或导入阻塞;处理:看 Network 中
/gotham-api/v1/ingestion/batches/:id/progress是否 200 且有 data 帧;401 重新登录。 - 保存提示「connection_config / mapping_config JSON 不合法」:点创建/保存直接报错;原因是 JSON 模式下格式非法,或 manual 源 records 非合法 JSON 数组;处理:切回「表单编辑」重填,或用工具校验 JSON 后重存。
- 编辑时名称/来源类型置灰无法修改:编辑时 name 与 source_type 输入框禁用;原因是后端不可修改这两项(编辑仅提交显示名/描述/连接/映射/清洗);处理:属预期行为;改名需删除重建。
- 暂停后「继续」按钮不出现:暂停后按钮仍为「暂停」或不可操作;原因是暂停为异步请求,批次状态未落库 paused;处理:点「刷新」重拉批次列表;确认后端返回
{paused:true}。
8. 已知缺陷与边界
| 项 | 说明 |
|---|---|
| 名称与类型不可改 | 编辑态 name/source_type 禁用,仅重建 |
| 删除保留数据 | 删数据源不删历史批次与融合实体 |
| SSE 弱网易断 | 连接中断需手动刷新恢复进度 |
| 清洗规则追加式 | 预设经 prompt 逐个追加,不支持可视化排序/编辑 |
注:编辑回填密码明文已于 2026-09-06 修复(编辑态密码留空、沿用原密码,不覆盖)。