X-lab2017 / gi-assets-xlab

A G6VP asset for X-lab
http://osgraph.x-lab.info/
6 stars 5 forks source link

[Design] 确定网络内容 & 搜索框和属性面板的设计 #2

Open tyn1998 opened 1 year ago

tyn1998 commented 1 year ago

属性面板中的内容必须根据网络本身内容来确定,所以必须先确定网络内容(哪些节点,哪些边,节点和边有哪些属性)。请 @andyhuang18 和 @wj23027 一起合作,使用Neo4j browser连接实验室部署的Neo4j数据库搞清楚里面的网络数据。然后再设计属性面板。

https://neo4j.x-lab.info/ 带有全域 Issue、PR 节点的协作网络图的 Neo4j 数据库已经全部导入了,节点数 7.6 亿,边数 18.3 亿。大家可以玩一下,用户名 neo4j,密码 ****(请联系我) 。由于 Neo4j 的社区版不具有用户管理体系,所以这个账号是有读写权限的,大家尽量只执行查询操作,不要进行数据修改的操作。

image

搜索框功能可以单独设计,没有前置条件。

设计工具如果没有别的偏好,请使用MasterGo并加入我创建的团队,邀请链接为:https://mastergo.com/files/invite-member/95721000990804?inviter=74321087968121

参考资料:

wj23027 commented 1 year ago

设计问题我们到这里讨论吧https://github.com/X-lab2017/gi-assets-xlab/issues/1#issuecomment-1572104275

目前总结下来需要实现的功能大概是这些,欢迎补充~

  1. 展示所有仓库、开发者的关系(能不能实现利用节点大小、颜色深浅之类的样式表示节点和边的权重)
  2. 搜索或者筛选仓库、开发者,将网络图聚焦到相应节点上
  3. 选中节点、边展示相应统计数据
  4. 选中多个仓库,展示多个仓库的聚合数据。

所以我们可能需要设计4个属性面板:

tyn1998 commented 1 year ago

所以我们可能需要设计4个属性面板:

  • 节点:开发者、仓库
  • 多个仓库聚合数据

Hi @wj23027 我们有个大方向是一次只展示一个仓库对应的子图,所以应该不会涉及到多个仓库的聚合数据。单个仓库网络内容可以参考openrank_detail的demo:

image

这是一个包含仓库节点、开发者节点、issue节点和PR节点的网络。

andyhuang18 commented 1 year ago

暂时就确定用这个网络吧,用Cypher查询得到。

tyn1998 commented 1 year ago

这是一个包含仓库节点、开发者节点、issue节点和PR节点的网络。

嗨 @wj23027 @andyhuang18,这个网络的cypher查询语句get了吗?有任何进展请在此issue评论 :)

wj23027 commented 1 year ago

参考十吾的设计,我认为可以呈现这些数据:

欢迎补充~

tyn1998 commented 1 year ago

Hi @wj23027,正如我在前面评论里指出的“不会涉及到多个仓库的聚合数据”,“全局信息(未选中元素)”中的内容应该都不需要。

第一版只关心单个仓库内的开发者、issue、PR,如果可以不计成本对大多数项目的项目内OpenRank进行计算导出openrank_detail.json的话,其实光这一个功能就很有竞争力。基于openrank_detail.json的网络展示是我心目中理想的应用形态,但目前只有几十个仓库的openrank_detail.json被计算。此处cue一下 @will-ww @frank-zsy 看看有没有可能让更过项目的openrank_detail.json可以被计算导出?

现在没有达到理想状态的条件,那么只能设计常规的结点信息增强,也就是用可视化的图表呈现实验室已有的一些指标数据。在设计功能的时候,一定要先看看有没有对应的数据,没有的话就不要设计进去了 😆

issue和PR没有专门的指标,所以不用设计点击节点后展示信息。目前只要增强仓库和开发者这两类结点的信息就行。

我还是先建议用cypher把这个网络查出来,可能设计起来会更有方向~

嗨 @wj23027 @andyhuang18,这个网络的cypher查询语句get了吗?有任何进展请在此issue评论 :)

frank-zsy commented 1 year ago

第一版只关心单个仓库内的开发者、issue、PR,如果可以不计成本对大多数项目的项目内OpenRank进行计算导出openrank_detail.json的话,其实光这一个功能就很有竞争力。基于openrank_detail.json的网络展示是我心目中理想的应用形态,但目前只有几十个仓库的openrank_detail.json被计算。此处cue一下 @will-ww @frank-zsy 看看有没有可能让更过项目的openrank_detail.json可以被计算导出?

事实上我们确实可以对更多的仓库来做 OpenRank 并生成 detail 的数据用于进行可视化,但由于我们目前使用了一些非日志数据,如大量的 reaction 数据来进行价值微调,这会导致我们无法仅通过全域日志数据来生成网络,需要大量请求 Issue 和评论中的 reaction 数据,这个对 API token 的需求量是非常高的,顶级仓库一个仓库可能有数十万甚至百万次请求,之后的增量也是不小的。

如果要做大量仓库的项目内 OpenRank,可以考虑不做分配的仓库暂时不考虑 reaction 数据,这样是可行的。

就可视化层面而言,目前查到的网络如果聚合了行为边,和导出的 OpenRank detail 的网络也是完全一致的,可能只是节点大小无法精确确定。

我还是先建议用cypher把这个网络查出来,可能设计起来会更有方向~

查询一个单仓某月的协作网络的 Cypher 如下:

MATCH p=(:github_repo{name:"X-lab2017/open-digger"})-[:has_issue_change_request]->()<-[a]-(:github_actor) WHERE TYPE(a) IN ["open","comment","review","review_comment","close"] AND a.year=2023 AND a.month=4 RETURN p

上面这个 Cypher 会返回 OpenDigger 2023.4 的协作网络

tyn1998 commented 1 year ago

感谢 @frank-zsy 的cypher:

image

@pomelo-nwu peo 另外我好像感受到 https://github.com/antvis/G6VP/issues/89#issuecomment-1594480711 说的问题了。如下图所示,除了仓库结点,另外结点的label都没显示出来,我试着换个属性作为结点文本,但是发现列表里没有对应的属性:

image
pomelo-nwu commented 1 year ago

@tyn1998 对,得找下还有其他什么方法,能获得全部的数据信息

frank-zsy commented 1 year ago

可以尝试 CALL apoc.meta.schema() 来获取元信息,这个方法会遍历查询当前的所有节点,并汇总相关元信息,包含了不同节点可用的字段。