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 切换)
                  → 映射配置(节点|边切换)→ 清洗规则(启用+策略+预设
                    +规则表:序号|类型|字段|参数|上移/下移/编辑/删除 + JSON 兜底)
                  [创建数据源/保存修改][取消编辑]
数据源列表 | 导入批次(过滤/状态/进度条/暂停/继续/详情) | 融合实体
[清洗规则编辑弹窗(类型/字段/类型专属参数)]
[运行结果弹窗(Batch #id 运行摘要)]

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
勾选「启用清洗」+ 错误策略 + 预设按钮清洗规则预设按钮(去除首尾空格/空值统一/日期标准化/手机号规整/全角转半角/正则替换/枚举映射)打开规则弹窗,填类型/字段/类型专属参数后加入列表
规则表「上移 / 下移 / 编辑 / 删除」清洗规则列表上移下移调整数组下标(=执行顺序,fusion/cleaning.go:86);编辑弹窗复用同一表单(regex_replace 填 pattern/replacement、enum_map 填 dict JSON);删除即从数组移除,改动实时同步进 rules JSON
按钮「创建数据源」/「保存修改」/「取消编辑」表单底部校验 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)数据源增删改查
PUT/ingestion/sources/:id更新数据源(含清洗规则整体覆盖){display_name, description, connection_config, mapping_config, cleaning_config, status, enabled}name/source_type 不可改
POST/ingestion/sources/:id/run启动异步导入,立即返回 running 批次
GET/ingestion/batches批次列表(?source_id= 过滤)
GET/ingestion/batches/:id/progressSSE 进度流(text/event-stream)
POST/ingestion/batches/:id/pause/resume暂停/断点恢复
GET/ingestion/entities融合实体列表(?limit=100

6. 权限与安全

7. 常见问题与排错

  1. 运行后批次一直 running 且进度条不动:批次 running,但进度长期为 0;原因是 SSE 流未建立(token 缺失/网络中断),或导入阻塞;处理:看 Network 中 /gotham-api/v1/ingestion/batches/:id/progress 是否 200 且有 data 帧;401 重新登录。
  2. 保存提示「connection_config / mapping_config JSON 不合法」:点创建/保存直接报错;原因是 JSON 模式下格式非法,或 manual 源 records 非合法 JSON 数组;处理:切回「表单编辑」重填,或用工具校验 JSON 后重存。
  3. 编辑时名称/来源类型置灰无法修改:编辑时 name 与 source_type 输入框禁用;原因是后端不可修改这两项(编辑仅提交显示名/描述/连接/映射/清洗);处理:属预期行为;改名需删除重建。
  4. 暂停后「继续」按钮不出现:暂停后按钮仍为「暂停」或不可操作;原因是暂停为异步请求,批次状态未落库 paused;处理:点「刷新」重拉批次列表;确认后端返回 {paused:true}
  5. 删掉全部清洗规则并保存后,规则仍然生效:勾选「启用清洗」→ 删除全部规则 → 保存,下一次运行时旧规则仍在起作用;原因是多半取消了「启用清洗」勾选再保存——此时前端不发送 cleaning_config,后端按「nil=保留原值」保留旧规则(fusion/service.go:365-367);处理:保持「启用清洗」勾选(rules 可为空数组)再保存一次,空 rules 会整段覆盖清空。页内规则区下方已常驻此提示。
  6. 调整规则顺序后运行结果变了:上移/下移某条规则后,导入数据与之前不同;原因是 rules 是有序数组,后端按下标顺序对同一行依次执行(fusion/cleaning.go:86),同一字段叠加多条规则时顺序会改变结果;处理:属预期行为,按业务需要的执行次序排列即可。

8. 已知缺陷与边界

说明
名称与类型不可改编辑态 name/source_type 禁用,仅重建
删除保留数据删数据源不删历史批次与融合实体
SSE 弱网易断连接中断需手动刷新恢复进度
清洗规则可视化编辑已支持列表化增删改 + 上移/下移排序(数组顺序=执行顺序,2026-09-13 补齐);JSON 兜底仍在,可视化编辑与 JSON 单向同步(手改 JSON 后需点「从 JSON 解析到列表」)
清洗规则无法在不启用时清除后端 cleaning_config=null 表示保留原值,故清除规则须保持「启用清洗」勾选后保存空 rules;取消勾选保存只改不回退

注:编辑回填密码明文已于 2026-09-06 修复(编辑态密码留空、沿用原密码,不覆盖)。