1. 页面概览

情报工作台是 LightGotham 的总览入口,路由 /gotham,对应源码 action/web/src/views/GothamPage.vue(约 1034 行)。核心是一块 SVG 自绘知识图谱画布:节点为圆形、按类型分色(person 蓝 / org 橙 / ship 绿 / custom 紫),边为带箭头直线;点击节点高亮其直接邻居(/graph/nodes/:id/neighbors),拖拽画布可平移。

除可视化外还有两类操作:图分析——通过「图分析」卡片执行 1-3 度展开、最短路径、中心度、社群着色、PageRank、紧密中心度、标签传播、强连通分量、图统计、子图过滤,结果以表格/标签/着色叠加到画布;图编辑——「新增节点 / 边」表单直接写入图谱。一句话总结:情报工作台是图谱总览、图算法分析、节点边编辑三位一体入口。

2. 访问入口

3. 界面布局

+-------------------------------------------------------------+
| 页头:Gotham 情报工作台  节点<n> 边<n>  [刷新图谱]             |
+-------------------------------------------------------------+
| 操作结果提示 alert(有消息时显示,可关闭)                       |
+-------------------------------------------------------------+
| 图分析(card)                                                |
|   展开(深度▾/limit/中心rid) 最短路径(from/to)                 |
|   中心度/社群:[中心度][社群着色][清除高亮]                     |
|   高级:[PageRank][紧密中心度][标签传播][强连通分量][图统计]     |
|   子图过滤:types rootIds depth [子图过滤]                     |
|   └ 结果面板:中心度/社群/PageRank/紧密中心度/标签传播/SCC/      |
|     子图/图统计                                                 |
+-------------------------------------------------------------+
| 图谱可视化(card):SVG 画布(节点/边/箭头/标签),空态提示      |
+-------------------------------------------------------------+
| 新增节点 / 边(card):左新增节点表单,右新增边表单              |
+-------------------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
刷新图谱按钮页头并行加载 /graph/stats/graph/nodes 与默认 3 度展开(中心 graph:person:zhy,limit 100)
展开(BFS 1-3 度)图分析深度 + limit + 中心节点 rid,GET /analysis/graph/expand 并入新节点/边
最短路径图分析from/to rid 必填,GET /analysis/graph/path;不可达提示「路径不可达」,命中路径红色高亮
中心度 / 社群着色图分析「中心度」拉度中心度 Top 表;「社群着色」按社区换色;「清除高亮」复位
高级图分析图分析PageRank、紧密中心度(Top 20)、标签传播、强连通分量、图统计(节点/边/平均度 + 类型分布)
子图过滤图分析types/rootIds/depth 调 GET /analysis/graph/subgraph,结果可「应用为当前视图」
节点点击图谱可视化高亮直接邻居(depth=1),邻居缺失自动并入
新增节点表单新增节点 / 边ID(如 graph:person:xx)、类型(person/org/ship/custom)、标签必填;属性 JSON 可选
新增边表单新增节点 / 边源/目标 ID、边类型(如 member_of)、方向(directed/bidirectional)、属性 JSON

5. 后端关联

API 客户端gothamClient.jsaxios.create({ baseURL: '/gotham-api/v1', timeout: 30000 });请求注入 Bearer token,响应 401 用 refresh token 调 POST /auth/refresh 换发重放,失败清 token 跳 /login

端点表

方法路径用途
GET/graph/stats图统计(节点/边数),页头芯片
GET/graph/nodes全量节点列表
POST/graph/nodes新增节点 {id, type, label, properties}
POST/graph/edges新增边 {type, source, target, direction, properties}
GET/graph/nodes/:id/neighbors节点直接邻居(depth=1)
GET/analysis/graph/expandBFS 展开 node/depth/limit
GET/analysis/graph/path最短路径 from/to
GET/analysis/graph/centrality度中心度 kind=degree
GET/analysis/graph/community社群检测 {method, modularity, communities}
GET/analysis/graph/pagerankPageRank top_k=20
GET/analysis/graph/closeness紧密中心度 top_k=20
GET/analysis/graph/label-propagation标签传播社区
GET/analysis/graph/scc强连通分量 {components}
GET/analysis/graph/subgraph子图过滤 types/root_ids/depth
GET/analysis/graph/stats图统计详情(含节点/边类型分布)

关键机制

6. 权限与安全

7. 常见问题与排错

问题 1:图算法按钮报 "admin role required"

现象:点「展开」「PageRank」等报 403 AUTHZ_ERROR

原因/analysis/graph/*adminMiddleware(),当前账号非 admin。

处理:用 admin 角色账号登录重试,或确认后端 IsUserAdmin 判定通过。

问题 2:新增节点/边提示「属性 JSON 格式错误」

现象:属性框提交被前端拦截。

原因props 不是合法 JSON。

处理:按标准 JSON 填写(如 {"region":"华北"});留空默认 {}

问题 3:页面提示「加载失败」且画布为空,或访问 /gotham 报 404/白屏

现象:节点/边为 0、画布空态,或路由打不开。

原因/graph/stats/graph/nodes 请求失败或 Gotham 后端未启动(代理未分流、token 失效、路由未注册)。

处理:确认 18083 进程存活、Vite 代理把 /gotham-api 分流到 18083、router/index.js 已注册 /gotham 父布局与空子路由;401 则重新登录。

8. 已知缺陷与边界

说明
大图渲染瓶颈节点全量渲染 SVG,百节点以上拖拽/布局变慢,无虚拟化
力导向布局纯前端220 轮启发式,坐标不持久化
无节点/边编辑与删除页面只提供新增,删除需走接口或其他页面
子图结果截断子图结果表仅展示前 50 节点
默认展开写死中心加载默认按 graph:person:zhy 展开,无该节点时补边为空
无 WebSocket 订阅实时协作推送(/gotham-api/v1/ws)在「协同动态」等页使用