1. 页面概览

图分区压缩页(GraphPartitionPage.vue)是 LightGotham V5 Stage 4 图谱域(B4-2)的社区发现工具:对当前图执行 simplifiedLouvain 多层折叠分区,把图拆成若干社区(每个节点归属一个社区 ID),并产出「压缩图」——把社区聚合成超节点、社区间边聚合为权重边,用于宏观观察。页面提供三层折叠参数,点击「运行分区」后展示多层折叠统计表、社区统计表(含成员预览)、社区规模柱状图与社区间关系桑基图(基于压缩图),并列出历史分区记录。

一句话总结:图分区压缩页把"全图社区发现 + 压缩图可视化 + 历史回溯"合为一体,是图谱域的结构洞察工具。

2. 访问入口

3. 界面布局

+---------------------------------------------------------------+
| Gotham 图分区与压缩   [刷新]                                   |
+---------------------------------------------------------------+
| [alert 操作结果提示条(可关闭)]                               |
+---------------------------------------------------------------+
| [分区参数] Levels | MinCommunitySize | Parallel               |
|  [运行分区]  共 N 个社区,模块度 X                            |
+---------------------------------------------------------------+
| [多层折叠统计(K 层)]  层 | 社区数 | 模块度                   |
+---------------------------------------------------------------+
| [社区统计(N)]  社区 | 大小 | Top 标签 | 成员预览             |
+---------------------------------------------------------------+
| [社区关系可视化]  [社区规模分布柱状图] [社区间关系桑基图]      |
+---------------------------------------------------------------+
| [历史分区记录(M)]  ID | 参数 | 模块度 | 创建时间             |
+---------------------------------------------------------------+

4. 交互元素

控件位置含义与作用
Levels分区参数卡片多层折叠迭代次数(默认 2),每轮后按社区折叠再跑一轮
MinCommunitySize分区参数卡片小社区合并阈值(默认 3),成员数小于该值的社区并入共享边权最大的邻居
Parallel分区参数卡片并行 goroutine 数(默认 4),邻居遍历按节点分片并行,小图自动降级串行
「运行分区」分区参数卡片POST /analysis/graph/partition,运行中禁用并显示「分区中…」,成功后展示汇总「共 N 个社区,模块度 X」
「刷新」页头重载历史分区记录

5. 后端关联

方法路径用途
POST/analysis/graph/partition执行分区,body {levels, min_community_size, parallel},同参数命中缓存直接返回
GET/analysis/graph/partitions历史分区记录(ga_partitions,created_at 倒序,最多 100 条)

关键机制

分区算法:simplifiedLouvain 多层折叠——每轮发现社区后按社区折叠压缩图再跑下一轮(共 Levels 轮),min_community_size 把过小社区并入共享边权最大的邻居社区,parallel 控制邻居遍历并行度。

响应结构 PartitionResultcommunities(nodeID → 社区ID 映射)、modularity(最终划分在原图上的模块度,保留 4 位小数)、levels[](每层 {level, communities, modularity})、compressed(压缩图摘要 SubgraphSummary{nodes: CommunityNode[{community_id,size,top_labels}], edges: CommunityEdge[{from,to,weight}]})。

缓存:请求按参数 hash 查 ga_partitions 缓存,同参数命中直返;未命中执行后写缓存(保存失败仅 warn 不影响返回)。

前端成员预览:从 communities 反查属于某社区的节点 ID(取前 12 个),社区 ID 前缀 c 在反查时剥离。

6. 权限与安全

7. 常见问题与排错

7.1 点「运行分区」提示 403

7.2 分区完成但表格显示「空图」

7.3 桑基图区域显示「暂无社区间关系」

7.4 历史分区记录为空

8. 已知缺陷与边界

缺陷/边界说明
仅 admin 可执行/analysis/graph/partition 挂 admin 中间件,非 admin 403
参数缓存同参数重复运行直接返回缓存结果,不会反映图中新增数据(需变更参数或清缓存)
历史最多 100 条后端 Limit(100) 硬编码,前端无分页
图表无数据时降级空图时多层统计/社区统计显示「空图」,桑基图显示提示文案
可视化基于压缩图柱状图/桑基图仅使用 compressed 摘要,不展开社区内部结构