Open tyn1998 opened 1 year ago
设计问题我们到这里讨论吧https://github.com/X-lab2017/gi-assets-xlab/issues/1#issuecomment-1572104275
目前总结下来需要实现的功能大概是这些,欢迎补充~
所以我们可能需要设计4个属性面板:
所以我们可能需要设计4个属性面板:
- 边
- 节点:开发者、仓库
- 多个仓库聚合数据
Hi @wj23027 我们有个大方向是一次只展示一个仓库对应的子图,所以应该不会涉及到多个仓库的聚合数据。单个仓库网络内容可以参考openrank_detail的demo:
这是一个包含仓库节点、开发者节点、issue节点和PR节点的网络。
暂时就确定用这个网络吧,用Cypher查询得到。
这是一个包含仓库节点、开发者节点、issue节点和PR节点的网络。
嗨 @wj23027 @andyhuang18,这个网络的cypher查询语句get了吗?有任何进展请在此issue评论 :)
参考十吾的设计,我认为可以呈现这些数据:
欢迎补充~
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评论 :)
第一版只关心单个仓库内的开发者、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 的协作网络
感谢 @frank-zsy 的cypher:
@pomelo-nwu peo 另外我好像感受到 https://github.com/antvis/G6VP/issues/89#issuecomment-1594480711 说的问题了。如下图所示,除了仓库结点,另外结点的label都没显示出来,我试着换个属性作为结点文本,但是发现列表里没有对应的属性:
@tyn1998 对,得找下还有其他什么方法,能获得全部的数据信息
可以尝试 CALL apoc.meta.schema()
来获取元信息,这个方法会遍历查询当前的所有节点,并汇总相关元信息,包含了不同节点可用的字段。
属性面板中的内容必须根据网络本身内容来确定,所以必须先确定网络内容(哪些节点,哪些边,节点和边有哪些属性)。请 @andyhuang18 和 @wj23027 一起合作,使用Neo4j browser连接实验室部署的Neo4j数据库搞清楚里面的网络数据。然后再设计属性面板。
搜索框功能可以单独设计,没有前置条件。
设计工具如果没有别的偏好,请使用MasterGo并加入我创建的团队,邀请链接为:https://mastergo.com/files/invite-member/95721000990804?inviter=74321087968121
参考资料: