> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | __[中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)__ | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [한국어](https://github.com/bakhirev/assayo/blob/main/documents/KO.md) | [العربية](https://github.com/bakhirev/assayo/blob/main/documents/AR.md) | [हिन्दी](https://github.com/bakhirev/assayo/blob/main/documents/HI.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
# [Assayo](https://bakhirev.github.io/?ref=github&lang=zh)
创建HTML报告以分析提交的统计数据:
- 工作节奏和加班时间数量;
- 责任区域、功能数量和错误;
- 同事的工作风格;
- 员工流动率和团队构成;
- 开发人员的位置;
- 发布日程和假期日程;
- 功能和项目整体的成本;
- 需要重构的地方、已删除的文件等。
**链接:** [demo](https://bakhirev.github.io/demo/?ref=github&dump=./test.txt), [online version](https://bakhirev.github.io/demo/?ref=github), [docker](https://hub.docker.com/r/bakhirev/assayo), [reddit](https://www.reddit.com/r/ITManagers/comments/1e5k291/the_visualization_and_analysis_of_git_commit/), [habr](https://habr.com/ru/articles/852782/)
**视频:** [english](https://www.youtube.com/watch?v=uMbhrrd25t4), [español](https://www.youtube.com/watch?v=skmctb_2rZ0), [русский](https://www.youtube.com/watch?v=jwCp_-bhrCQ)
### 目录
- [提交统计报告](#link-1)
- [如何创建和查看报告?](#link-2)
- [使用公共服务器](#link-3)
- [使用NodeJS库](#link-4)
- [使用PHP库](#link-5)
- [使用Python库](#link-6)
- [使用Ruby库](#link-7)
- [使用Go库](#link-8)
- [使用源代码](#link-9)
- [使用GitHub动作](#link-10)
- [使用私有服务器](#link-11)
- [如何连接作者?](#link-12)
- [如何将Git数据导出到txt文件?](#link-13)
- [在线查看](#link-14)
- [离线查看](#link-15)
- [如果您在Windows上使用PowerShell](#link-16)
- [如何查看微服务组的报告?](#link-17)
- [项目中的最佳实践](#link-18)
- [如何签名提交?](#link-19)
- [如何为提交消息添加检查?](#link-20)
- [使用文件commit-msg](#link-21)
- [使用包pre-commit](#link-22)
- [关于此应用程序](#link-23)
- [如何定制界面?](#link-24)
- [如何从源代码重新构建HTML报告?](#link-25)
- [如何添加或编辑翻译?](#link-26)
- [架构](#link-27)
- [微服务的总体架构](#link-29)
- [反馈,评论](#link-30)
## 提交统计报告
### 📈 如何创建和查看报告?
#### 使用公共服务器
- 访问[网站](https://bakhirev.github.io/)
- 按照说明
#### 使用NodeJS库
- 执行`npx assayo`
- 打开`./assayo/index.html`
#### 使用PHP库
- 执行`composer require bakhirev/assayo`
- 执行`vendor/bin/assayo`
- 打开`./assayo/index.html`
#### 使用Python库
- 执行`pipx install assayo`
- 执行`assayo`
- 打开`./assayo/index.html`
#### 使用Ruby库
- 执行`gem install assayo`
- 执行`assayo`
- 打开`./assayo/index.html`
#### 使用Go库
- 执行`go get github.com/bakhirev/assayo`
- 执行`go install github.com/bakhirev/assayo`
- 执行`assayo`
- 打开`./assayo/index.html`
#### 使用源代码
- 下载此存储库
- 将文件`log.txt`放在`/build`中
- 打开`/build/index.html`
- 或将文件夹`/build`放在您的存储库中(`log.txt`所在的位置)。您可以更改名称。例如,从`/build`更改为`/report`。
在这种情况下,重要的是文件`log.txt`通过命令生成以进行离线查看。
#### 使用GitHub动作
在文件夹`.github/workflows/`中添加[脚本](https://github.com/bakhirev/assayo/blob/main/documents/ActionExample.yml)或使用市场上的此[动作](https://github.com/marketplace/actions/assayo)。一个准备好的和更新的报告将保存在artifact中。
#### 使用私有服务器
- 下载[docker](https://hub.docker.com/r/bakhirev/assayo)镜像;
- 在本地网络中运行;
- 使用Web界面查看报告,在URL参数中设置数据URL`dump`:
```
http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - 容器assayo的URL,监听端口80;
you_url - Git日志的容器URL;
```
默认情况下,镜像将在`http://127.0.0.1:80/`中运行。如果不起作用,请检查端口80是否可用。
### 🎭 如何连接作者?
在项目的根目录中,您需要创建一个文件`.mailmap`。
文件内容示例:
```
Alex B
Alex B
Alex B
Alex B
```
了解有关此文件格式的更多信息[这里](https://git-scm.com/docs/gitmailmap)。
### 📤 如何将Git数据导出到txt文件?
#### 在线查看
在项目的根目录中执行:
#### 离线查看
Git将创建一个文件`log.txt`。此文件包含显示报告的数据。在线和离线格式之间的区别是字符串的包装。离线格式将作为文件`js`加载,如果您只打开`/build/index.html`
#### 如果您在Windows上使用PowerShell
默认情况下,输出编码可能不符合UTF-8,并且生成的日志文件将无法读取。在保存日志之前,您可以使用命令更改编码。
```
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
```
或者打开保存的文件并手动将编码更改为UTF-8。
### 🗃️ 如何查看微服务组的报告?
- 为每个微服务文件`log.txt`(`log-1.txt`, `log-2.txt`, `log-3.txt`等)生成。您可以手动执行,或者使用[Assayo Crawler](https://github.com/bakhirev/assayo-crawler)模块进行自动日志收集;
- 查看“如何查看在线报告?”。在最后一步,将所有文件一次性拖放到浏览器窗口中。
- 查看“如何查看离线报告?”。在第二步,将所有微服务文件(`log-1.txt`, `log-2.txt`, `log-3.txt`等)拖放到报告文件夹(`/build`)中。
## 项目中的最佳实践
### 📝 如何签名提交?
遵循[Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/)。示例:
```
JIRA-1234 feat(profile): Added avatar for user
```
- 任务跟踪器中的任务编号`(JIRA-1234)`
- 工作类型`(feat, fix, style, refactor, test, doc等)`
- 功能`(profile - 网站上的新页面或新功能,使用一个(两个)短词或缩写)`
- 解决了什么问题`(Added avatar for user)`
### 👮 如何为提交消息添加检查?
#### 使用文件commit-msg
1. 在文件夹.git/hooks/中创建文件`commit-msg`
2. 在文件中添加此文本:
```
#!/usr/bin/env bash
if ! grep -iqE "(JIRA-[0-9]{1,5})(s)(feat|fix|docs|style|refactor|test|chore)((([a-z0-9_-]{1,})){0,})(:s)([a-z]{1,})" "$1"; then
echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
exit 1
fi
```
#### 使用包[pre-commit](https://www.npmjs.com/package/pre-commit)
1. 在文件`package.json`中添加属性`commit-msg`:
```
...
"commit-msg": {
"regex": "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})",
"error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
},
...
```
2. 运行命令`npm install pre-commit`
## 关于此应用程序
### 🎨 如何定制界面?
您可以创建自己的界面主题。选项:
- **标题**。您可以在URL参数`title`中设置默认文档标题。示例:`?title=You Company`
- **可视化主题**。为此,您需要准备一个包含新样式的CSS文件,并在参数`theme`中指定其URL。示例:`?theme=//company.com/some.css`。您可以使用类名作为选择器。大多数在新版本中不会改变。
- **语言**。您可以在URL参数`lang`中设置语言。示例:`?lang=es`
**示例**:[demo](https://bakhirev.github.io/demo/themes/)
### 🛠️ 如何从源代码重新构建HTML报告?
- 下载此存储库`git clone https://github.com/bakhirev/assayo.git`
- 执行`npm install`
- 执行`npm run build:local`
- 新的HTML构建将在`/build`文件夹中
### 🈯 如何添加或编辑翻译?
您可以在`ts/translations/`文件夹中添加新翻译或更正现有翻译。
[指南](https://github.com/firstcontributions/first-contributions)
### 📐 架构
#### 微服务的总体架构
1. [Reports showcase UI](https://github.com/bakhirev/assayo-showcase)显示可用报告列表。每个报告包括标题、描述和存储库列表。
2. [Crawler service](https://github.com/bakhirev/assayo-crawler)为报告收集存储库日志。
3. [Log visualization UI](https://github.com/bakhirev/assayo)(**您在这里**)显示报告。需要日志文件才能工作。
### 📧 反馈,评论
- 📱 [https://t.me/bakhirev](https://t.me/bakhirev) (优先通信方法)
- 📧 [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
- 🌐 [https://bakhirev.github.io/](https://bakhirev.github.io/?ref=github&lang=zh)