{"id":20585426,"url":"https://github.com/b1nary-gr0up/openalysis","last_synced_at":"2025-04-14T21:09:50.893Z","repository":{"id":232763186,"uuid":"762541371","full_name":"B1NARY-GR0UP/openalysis","owner":"B1NARY-GR0UP","description":"OPENALYSIS is a tool for visualizing and analyzing data from the GitHub open source community.","archived":false,"fork":false,"pushed_at":"2024-07-13T16:20:19.000Z","size":5006,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T21:09:38.480Z","etag":null,"topics":["command-line-tool","community","data-visualization","github","go","grafana","open-source"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/B1NARY-GR0UP.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-24T02:17:44.000Z","updated_at":"2024-11-08T01:08:36.000Z","dependencies_parsed_at":"2024-04-11T10:28:01.516Z","dependency_job_id":"f476d4cb-ef4f-4a5f-aa24-99f7d3b82894","html_url":"https://github.com/B1NARY-GR0UP/openalysis","commit_stats":null,"previous_names":["b1nary-gr0up/openalysis"],"tags_count":2,"template":false,"template_full_name":"B1NARY-GR0UP/.github","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fopenalysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fopenalysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fopenalysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fopenalysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/B1NARY-GR0UP","download_url":"https://codeload.github.com/B1NARY-GR0UP/openalysis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248961237,"owners_count":21189993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line-tool","community","data-visualization","github","go","grafana","open-source"],"created_at":"2024-11-16T07:08:05.373Z","updated_at":"2025-04-14T21:09:50.872Z","avatar_url":"https://github.com/B1NARY-GR0UP.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![OPENALYSIS](./images/OPENALYSIS.png)\n\nOPENALYSIS 是一款对 GitHub 开源社区的数据进行可视化和分析的工具。\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/B1NARY-GR0UP/openalysis)](https://goreportcard.com/report/github.com/B1NARY-GR0UP/openalysis)\n\n[View English Document](./README.md)\n\n## 概览\n\nOPENALYSIS 只做了三件事：\n\n1. 设置定时任务通过 GitHub API ([REST API](https://docs.github.com/en/rest?apiVersion=2022-11-28) 和 [GraphQL API](https://docs.github.com/en/graphql)) 获取配置的组织或者仓库的数据；\n2. 将获取的数据整理并存储在 [MySQL](https://www.mysql.com/) 数据库中；\n3. 通过 [Grafana](https://grafana.com/grafana/) 查询数据库并将数据可视化为图表等形式；\n\nOPENALYSIS 提供了：\n\n- 一系列动态的 Grafana Dashboard 来对配置的组织，仓库，贡献者等不同维度的数据进行可视化和分析；\n- 一个命令行工具来快速启动和重启定时任务；\n- 一系列 API 来配置和使用这个工具；\n\nOPENALYSIS 可以让您对您所管理的或所在的开源社区的整体数据有一个概览，我们希望 OPENALYSIS 可以帮助您更好的对开源社区进行建设和发展。\n\n## 使用\n\nOPENALYSIS 的运行依赖于 MySQL 和 Grafana 服务。以下文档将帮助您配置必要的依赖项，并通过命令行工具或 API 运行 OPENALYSIS。\n\n- [如何部署？](./docs/how-to-deploy-zh.md)\n- [如何准备配置文件？](./docs/how-to-prepare-config-file-zh.md)\n- [如何使用命令行工具？](./docs/how-to-use-cmd-tool-zh.md)\n- [如何使用 API？](./docs/how-to-use-api-zh.md)\n\n## Grafana 仪表盘模板\n\nOPENALYSIS 提供了四个维度的 Grafana 仪表板：\n\n- [Group](./template/OPENALYSIS-GROUP-TMPL.json)\n- [Org](./template/OPENALYSIS-ORG-TMPL.json)\n- [Repo](./template/OPENALYSIS-REPO-TMPL.json)\n- [Contributor](./template/OPENALYSIS-CONTRIBUTOR-TMPL.json)\n\n每个仪表板都为相应维度的数据提供各种形式的可视化分析。\n\n### Group 模板\n\n![group-tmpl](./images/tmpl-group-example.png)\n\n在 Group 模板中，面板按以下顺序从左到右、从上到下排列：\n\n- **Star Count:** 组内所有组织和仓库的总标星数。\n- **Contributor Count:** 组内所有组织和仓库的总贡献者数，计算时会去重重复的贡献者。\n- **Issue Count:** 组内所有组织和仓库的总问题数。\n- **PR Count:** 组内所有组织和仓库的总拉取请求数。\n- **Fork Count:** 组内所有组织和仓库的总分叉数。\n- **Star Count:** 显示组内所有组织和仓库的标星数变化趋势图。\n- **Contributor Count:** 显示组内所有组织和仓库的贡献者数变化趋势图，计算时会去重重复的贡献者。\n- **Issue Count:** 显示组内所有组织和仓库的问题数变化趋势图。\n- **PR Count:** 显示组内所有组织和仓库的拉取请求数变化趋势图。\n- **Fork Count:** 显示组内所有组织和仓库的分叉数变化趋势图。\n- **Contributor Company:** 显示组内所有组织和仓库的贡献者公司分布的饼图。\n- **Contributor Location:** 显示组内所有组织和仓库的贡献者地点分布的饼图。\n- **Leaderboard:** 按贡献数量对组内所有组织和仓库的贡献者进行排名，`Ranged Contributions` 字段计算在 Grafana 仪表板中设定的时间范围内的贡献差异。\n- **Issue Assignees:** 显示组内所有组织和仓库中具有负责人且处于 OPEN 状态的问题。\n- **PR Assignees:** 显示组内所有组织和仓库中具有负责人且处于 OPEN 状态的拉取请求。\n\n### Organization 模板\n\n![org-tmpl](./images/tmpl-org-example.png)\n\n在 Organization 模板中，面板按以下顺序从左到右、从上到下排列：\n\n- **Profile:** 组织头像。\n- **Contributor Company (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的贡献者公司分布的饼图。\n- **Contributor Location (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的贡献者地点分布的饼图。\n- **Leaderboard:** 按贡献数量对组织下所有仓库的贡献者进行排名，`Ranged Contributions` 字段计算在 Grafana 仪表板中设定的时间范围内的贡献差异。\n- **Star Count:** 组织下所有仓库的总标星数。\n- **Contributor Count:** 组织下所有仓库的总贡献者数，计算时会去重重复的贡献者。\n- **Issue Count:** 组织下所有仓库的总问题数。\n- **PR Count:** 组织下所有仓库的总拉取请求数。\n- **Fork Count:** 组织下所有仓库的总分叉数。\n- **Star Count:** 显示组织下所有仓库标星数变化的趋势图。\n- **Contributor Count:** 显示组织下所有仓库贡献者数变化的趋势图，计算时会去重重复的贡献者。\n- **Issue Count:** 显示组织下所有仓库问题数变化的趋势图。\n- **PR Count:** 显示组织下所有仓库拉取请求数变化的趋势图。\n- **Fork Count:** 显示组织下所有仓库分叉数变化的趋势图。\n- **Issue Assignees (support repos):** 显示由 `repos` 变量指定的一个或多个仓库中具有负责人且处于OPEN状态的问题。\n- **PR Assignees (support repos):** 显示由 `repos` 变量指定的一个或多个仓库中具有负责人且处于OPEN状态的拉取请求。\n- **Star Count (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的标星数变化的趋势图。\n- **Contributor Count (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的贡献者数变化的趋势图，计算时会去重重复的贡献者。\n- **Fork Count (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的分叉数变化的趋势图。\n- **Issue Count (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的问题数变化的趋势图。\n- **PR Count (support repos):** 显示由 `repos` 变量指定的一个或多个仓库的拉取请求数变化的趋势图。\n\n### Repository 模板\n\n![repo-tmpl](./images/tmpl-repo-example.png)\n\n在 Repository 模板中，面板按以下顺序从左到右、从上到下排列：\n\n- **Contributor Company:** 显示仓库中所有贡献者公司分布的饼图。\n- **Contributor Location:** 显示仓库中所有贡献者地点分布的饼图。\n- **Leaderboard:** 根据贡献数量对仓库中所有贡献者进行排名，`Ranged Contributions` 字段计算在 Grafana 仪表板中设定的时间范围内的贡献差异。\n- **Star Count:** 仓库中的总标星数。\n- **Contributor Count:** 仓库中的总贡献者数，计算时会去重重复的贡献者。\n- **Issue Count:** 仓库中的总问题数。\n- **PR Count:** 仓库中的总拉取请求数。\n- **Fork Count:** 仓库中的总分叉数。\n- **Star Count:** 显示仓库中标星数变化的趋势图。\n- **Contributor Count:** 显示仓库中贡献者数变化的趋势图，计算时会去重重复的贡献者。\n- **Issue Count:** 显示仓库中问题数变化的趋势图。\n- **PR Count:** 显示仓库中拉取请求数变化的趋势图。\n- **Fork Count:** 显示仓库中分叉数变化的趋势图。\n- **Issue Assignees:** 显示已分配负责人且处于OPEN状态的仓库中的所有问题。\n- **PR Assignees:** 显示已分配负责人且处于OPEN状态的仓库中的所有拉取请求。\n\n### Contributor 模板\n\n![contributor-tmpl](./images/tmpl-contributor-example.png)\n\n在 Contributor 模板中，面板按以下顺序从左到右、从上到下排列：\n\n- **Profile:** 贡献者的头像和其他信息。\n- **PR History:** 贡献者的拉取请求历史。\n- **Contributions:** 贡献者对每个仓库的贡献统计。\n- **Assigned Issues:** 分配给贡献者的问题。\n- **Assigned PRs:** 分配给贡献者的拉取请求。\n- **Issue Count:** 贡献者创建的问题统计。\n- **PR Count:** 贡献者创建的拉取请求统计。\n\n## 博客\n\n- [如何构建 Grafana 动态面板并可视化分析开源社区数据](https://juejin.cn/post/7390663832782127145)\n- [如何对开源社区的数据进行可视化分析](https://juejin.cn/post/7359882185362948135)\n\n## 致谢\n\n真诚感谢 [CloudWeGo](https://github.com/cloudwego) 社区的帮助，没有他们的支持，这个项目将无法实现。\n\n## 许可证\n\nOPENALYSIS 使用 [Apache License 2.0](./LICENSE) 进行分发。OPENALYSIS 的第三方依赖项的许可证说明在[此处](./licenses)。\n\n## 生态\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/justlorain/justlorain/blob/main/images/BINARY-WEB-ECO.png\" alt=\"BINARY-WEB-ECO\"/\u003e\n\u003cbr/\u003e\u003cbr/\u003e\nOPENALYSIS 是 \u003ca href=\"https://github.com/B1NARY-GR0UP\"\u003e BINARY 网络生态 \u003c/a\u003e 的一个子项目\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb1nary-gr0up%2Fopenalysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fb1nary-gr0up%2Fopenalysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb1nary-gr0up%2Fopenalysis/lists"}