wukong-gitlog-cli 1.0.39 → 1.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/.eslintrc +1 -0
  2. package/.prettierrc +2 -1
  3. package/CHANGELOG.md +97 -0
  4. package/README.md +97 -172
  5. package/README.zh-CN.md +88 -137
  6. package/bin/wukong-gitlog-cli +0 -0
  7. package/doc//347/233/256/345/275/225/347/273/223/346/236/204.md +2871 -0
  8. package/package.json +32 -29
  9. package/rc/.wukonggitlogrc +53 -0
  10. package/scripts/compareHourlyCounts.mjs +42 -0
  11. package/scripts/compareLatest.mjs +106 -0
  12. package/src/app/analyzeAction.mjs +120 -0
  13. package/src/app/exportAction.mjs +215 -0
  14. package/src/app/exportActionProgress.mjs +37 -0
  15. package/src/app/helpers.mjs +292 -0
  16. package/src/app/initAction.mjs +110 -0
  17. package/src/app/initActionWithTemp.mjs +192 -0
  18. package/src/app/journalAction.mjs +117 -0
  19. package/src/app/overtimeAction.mjs +100 -0
  20. package/src/app/runProfileEnd.mjs +0 -0
  21. package/src/app/serveAction.mjs +73 -0
  22. package/src/app/versionAction.mjs +7 -0
  23. package/src/cli/defineOptions.mjs +209 -0
  24. package/src/cli/index.mjs +0 -0
  25. package/src/cli/parseOptions.mjs +126 -8
  26. package/src/constants/index.mjs +16 -2
  27. package/src/domain/author/analyze.mjs +6 -0
  28. package/src/domain/author/map.mjs +0 -0
  29. package/src/domain/export/exportAuthor.mjs +28 -0
  30. package/src/domain/export/exportAuthorChanges.mjs +27 -0
  31. package/src/domain/export/exportAuthorChangesJson.mjs +31 -0
  32. package/src/domain/export/exportByMonth.mjs +157 -0
  33. package/src/domain/export/exportByWeek.mjs +121 -0
  34. package/src/domain/export/exportCommits.mjs +26 -0
  35. package/src/domain/export/exportCommitsExcel.mjs +45 -0
  36. package/src/domain/export/exportCommitsJson.mjs +31 -0
  37. package/src/domain/export/index.mjs +91 -0
  38. package/src/domain/git/ensureGitAvailable.mjs +66 -0
  39. package/src/domain/git/ensureGitRepo.mjs +41 -0
  40. package/src/domain/git/getGitFeatures.mjs +59 -0
  41. package/src/domain/git/getGitLogs.mjs +326 -0
  42. package/src/domain/git/getGitUser.mjs +44 -0
  43. package/src/domain/git/getRepoRoot.mjs +32 -0
  44. package/src/domain/git/gitCapability.mjs +119 -0
  45. package/src/domain/git/index.mjs +96 -0
  46. package/src/domain/git/resolveGerrit.mjs +102 -0
  47. package/src/domain/overtime/analyze.mjs +48 -0
  48. package/src/domain/overtime/index.mjs +3 -0
  49. package/src/domain/overtime/perPeriod.mjs +15 -0
  50. package/src/domain/overtime/render.mjs +15 -0
  51. package/src/i18n/index.mjs +38 -0
  52. package/src/i18n/resources.mjs +252 -0
  53. package/src/index.mjs +132 -649
  54. package/src/infra/cache.mjs +0 -0
  55. package/src/infra/configStore.mjs +128 -0
  56. package/src/infra/fs.mjs +0 -0
  57. package/src/infra/path.mjs +0 -0
  58. package/src/output/csv/overtime.mjs +12 -0
  59. package/src/output/csv.mjs +0 -0
  60. package/src/output/data/readData.mjs +54 -0
  61. package/src/output/data/writeData.mjs +145 -0
  62. package/src/output/excel/commits.mjs +9 -0
  63. package/src/output/excel/outputExcelDayReport.mjs +92 -0
  64. package/src/output/excel/perPeriod.mjs +24 -0
  65. package/src/{excel.mjs → output/excel.mjs} +3 -2
  66. package/src/output/index.mjs +79 -0
  67. package/src/output/json/overtime.mjs +9 -0
  68. package/src/output/tab/overtime.mjs +12 -0
  69. package/src/output/tab.mjs +0 -0
  70. package/src/output/text/commits.mjs +9 -0
  71. package/src/output/text/index.mjs +3 -0
  72. package/src/output/text/outputTxtDayReport.mjs +74 -0
  73. package/src/output/text/overtime.mjs +18 -0
  74. package/src/output/utils/getEsmJs.mjs +10 -0
  75. package/src/output/utils/index.mjs +14 -0
  76. package/src/output/utils/outputPath.mjs +19 -0
  77. package/src/output/utils/writeFile.mjs +10 -0
  78. package/src/serve/index.mjs +0 -0
  79. package/src/{server.mjs → serve/startServer.mjs} +21 -3
  80. package/src/serve/writeData.mjs +0 -0
  81. package/src/utils/authorNormalizer.mjs +28 -2
  82. package/src/utils/buildAuthorChangeStats.mjs +44 -0
  83. package/src/utils/deepMerge.mjs +13 -0
  84. package/src/utils/getPackage.mjs +11 -0
  85. package/src/utils/getProfileDirFile.mjs +12 -0
  86. package/src/utils/{file.mjs → groupRecords.mjs} +8 -9
  87. package/src/utils/index.mjs +5 -2
  88. package/src/utils/logger.mjs +28 -17
  89. package/src/utils/profiler.mjs +0 -101
  90. package/src/utils/resolve.mjs +11 -0
  91. package/src/utils/showVersionInfo.mjs +6 -2
  92. package/src/utils/time.mjs +0 -0
  93. package/src/utils/wait.mjs +2 -0
  94. package/web/app.js +3197 -257
  95. package/web/index.html +171 -22
  96. package/web/revoke/alpha1/app.js +4324 -0
  97. package/web/revoke/alpha1/index.html +266 -0
  98. package/web/revoke/app.before.js +3139 -0
  99. package/web/revoke/index-before.html +181 -0
  100. package/web/static/style.css +116 -9
  101. package/src/git.mjs +0 -256
  102. package/src/handlers/handleServe.mjs +0 -203
  103. package/src/lib/configStore.mjs +0 -11
  104. package/src/lib/memoize.mjs +0 -14
  105. package/src/utils/analyzeOvertimeCached.mjs +0 -7
  106. package/src/utils/checkUpdate.mjs +0 -130
  107. package/src/utils/exitWithTime.mjs +0 -17
  108. package/src/utils/handleSuccess.mjs +0 -9
  109. package/src/utils/logDev.mjs +0 -19
  110. package/src/utils/output.mjs +0 -26
  111. package/src/utils/profiler/diff.mjs +0 -26
  112. package/src/utils/profiler/format.mjs +0 -11
  113. package/src/utils/profiler/index.mjs +0 -144
  114. package/src/utils/profiler/trace.mjs +0 -26
  115. package/src/utils/time/scopeTimer.mjs +0 -37
  116. package/src/utils/time/timer.mjs +0 -33
  117. package/src/utils/time/withTimer.mjs +0 -11
  118. package/src/utils/timer.mjs +0 -35
  119. /package/src/{overtime → domain/overtime}/createOvertimeStats.mjs +0 -0
  120. /package/src/{overtime → domain/overtime}/overtime.mjs +0 -0
  121. /package/src/{json.mjs → output/json.mjs} +0 -0
  122. /package/src/{renderAuthorMapText.mjs → output/renderAuthorMapText.mjs} +0 -0
  123. /package/src/{stats-text.mjs → output/stats-text.mjs} +0 -0
  124. /package/src/{stats.mjs → output/stats.mjs} +0 -0
  125. /package/src/{text.mjs → output/text.mjs} +0 -0
package/web/index.html CHANGED
@@ -10,8 +10,9 @@
10
10
  <body>
11
11
  <header>
12
12
  <h1>Wukong Gitlog Overtime Dashboard</h1>
13
+ <div id="samplingInfo" class="sampling-info"></div>
13
14
  </header>
14
- <main>
15
+ <main id="main">
15
16
  <section id="chartsHalf">
16
17
  <div class="chart-card">
17
18
  <h2>下班时间 vs 工作时间提交占比</h2>
@@ -25,34 +26,63 @@
25
26
  <section id="charts">
26
27
  <div class="chart-card">
27
28
  <h2>每小时加班分布 (小时 -> 提交数)</h2>
28
- <div id="hourlyOvertimeChart" data-title="每小时加班分布" class="echart"></div>
29
+ <div
30
+ id="hourlyOvertimeChart"
31
+ data-title="每小时加班分布"
32
+ class="echart"
33
+ ></div>
29
34
  </div>
30
35
 
31
36
  <div class="chart-card">
32
37
  <h2>按日提交趋势(次数)</h2>
33
- <div id="dailyTrendChart" data-title="按日提交趋势(次数)" class="echart"></div>
34
- </div>
35
-
36
- <div class="chart-card">
37
- <h2>每周趋势(加班占比)</h2>
38
- <div id="weeklyTrendChart" data-title="每周趋势(加班占比)" class="echart"></div>
38
+ <div
39
+ id="dailyTrendChart"
40
+ data-title="按日提交趋势(次数)"
41
+ class="echart"
42
+ ></div>
39
43
  </div>
40
44
  <div class="chart-card">
41
- <h2>每月趋势(加班占比)</h2>
42
- <div id="monthlyTrendChart" data-title="每月趋势(加班占比)" class="echart"></div>
45
+ <h2>按日提交趋势(次数)</h2>
46
+ <div
47
+ id="dailyTrendChartDog"
48
+ data-title="按日提交趋势"
49
+ class="echart"
50
+ ></div>
43
51
  </div>
44
52
  <div class="chart-card">
45
53
  <h2>每日最晚提交时间(小时)</h2>
46
- <div id="latestHourDailyChart" data-title="每日最晚提交时间(小时)" class="echart"></div>
54
+ <div
55
+ id="latestHourDailyChart"
56
+ data-title="每日最晚提交时间(小时)"
57
+ class="echart"
58
+ ></div>
47
59
  </div>
48
60
  <div class="chart-card">
49
61
  <h2>每日超过下班的小时数</h2>
50
- <div id="dailySeverityChart" data-title="每日超过下班的小时数" class="echart"></div>
62
+ <div
63
+ id="dailySeverityChart"
64
+ data-title="每日超过下班的小时数"
65
+ class="echart"
66
+ ></div>
51
67
  </div>
68
+
52
69
  <div class="chart-card">
53
- <h2>按日提交趋势(次数)</h2>
54
- <div id="dailyTrendChartDog" data-title="按日提交趋势" class="echart"></div>
70
+ <h2>每周趋势(加班占比)</h2>
71
+ <div
72
+ id="weeklyTrendChart"
73
+ data-title="每周趋势(加班占比)"
74
+ class="echart"
75
+ ></div>
55
76
  </div>
77
+ <div class="chart-card">
78
+ <h2>每月趋势(加班占比)</h2>
79
+ <div
80
+ id="monthlyTrendChart"
81
+ data-title="每月趋势(加班占比)"
82
+ class="echart"
83
+ ></div>
84
+ </div>
85
+
56
86
  <div class="chart-card">
57
87
  <div id="mostTiredDay"></div>
58
88
  <div id="mostTiredWeek"></div>
@@ -63,6 +93,8 @@
63
93
  </div>
64
94
  </section>
65
95
 
96
+
97
+
66
98
  <div class="chart-card">
67
99
  <h2>开发者 Changed 工作量趋势(行数)</h2>
68
100
 
@@ -74,6 +106,16 @@
74
106
  <div id="chartAuthorChanges" class="echart"></div>
75
107
  </div>
76
108
 
109
+ <div class="chart-card">
110
+ <h2>开发者 加班最晚趋势(小时)</h2>
111
+ <div class="tabs" id="tabsLatestOvertime">
112
+ <button data-type="daily" class="active">按日</button>
113
+ <button data-type="weekly">按周</button>
114
+ <button data-type="monthly">按月</button>
115
+ </div>
116
+ <div id="chartAuthorLatestOvertime" class="echart"></div>
117
+ </div>
118
+
77
119
  <div class="chart-card">
78
120
  <h2>开发者 加班趋势(次数)</h2>
79
121
  <div class="tabs" id="tabsOvertime">
@@ -84,23 +126,129 @@
84
126
  <div id="chartAuthorOvertime" class="echart"></div>
85
127
  <div id="weeklyRiskSummary" class="risk-summary-box"></div>
86
128
  <div id="monthlyRiskSummary" class="risk-summary-box"></div>
129
+ <div id="weeklyDurationRankSummary" class="risk-summary-box"></div>
87
130
  <div id="weeklyDurationRiskSummary" class="risk-summary-box"></div>
131
+ <div id="monthlyDurationRankSummary" class="risk-summary-box"></div>
88
132
  <div id="monthlyDurationRiskSummary" class="risk-summary-box"></div>
89
133
  <div id="rolling30DurationRiskSummary" class="risk-summary-box"></div>
90
134
  </div>
91
135
 
92
136
  <div class="chart-card">
93
- <h2>开发者 加班最晚趋势(小时)</h2>
94
- <div class="tabs" id="tabsLatestOvertime">
137
+ <h2>开发者 午休最晚提交(小时)</h2>
138
+ <div class="tabs" id="tabsLunch">
95
139
  <button data-type="daily" class="active">按日</button>
96
140
  <button data-type="weekly">按周</button>
97
141
  <button data-type="monthly">按月</button>
98
142
  </div>
99
- <div id="chartAuthorLatestOvertime" class="echart"></div>
100
- <div id="latestRiskSummary" class="risk-summary-box"></div>
101
- <div id="latestMonthlyRiskSummary" class="risk-summary-box"></div>
143
+ <div id="chartAuthorLunch" class="echart"></div>
144
+ <div id="lunchWeeklyRankSummary" class="risk-summary-box"></div>
145
+ <div id="lunchWeeklyRiskSummary" class="risk-summary-box"></div>
146
+ <div id="lunchMonthlyRankSummary" class="risk-summary-box"></div>
147
+ <div id="lunchMonthlyRiskSummary" class="risk-summary-box"></div>
148
+ </div>
149
+
150
+ <!-- 午休 分析 -->
151
+ <div class="chart-card">
152
+ <h2>开发者 累计午休工作时长</h2>
153
+ <div class="tabs" id="tabsTotalLunchTime">
154
+ <button data-type="daily" class="active">按日</button>
155
+ <button data-type="weekly">按周</button>
156
+ <button data-type="monthly">按月</button>
157
+ <button data-type="yearly">按年</button>
158
+ </div>
159
+ <div id="chartAuthorTotalLunchTime" class="echart"></div>
102
160
  </div>
103
161
 
162
+ <section class="chartsHalf">
163
+ <div class="chart-card">
164
+ <h2>开发者 午休工作总时长</h2>
165
+ <div id="authorTotalLunchTimeRank" class="rank-list"></div>
166
+ </div>
167
+ <div class="chart-card">
168
+ <h2>开发者 午休工作总时长</h2>
169
+ <div id="authorTotalLunchTimeRankSummary" style="height: 600px"></div>
170
+ </div>
171
+ </section>
172
+ <!-- 午休 分析 End -->
173
+
174
+ <div class="chart-card">
175
+ <h2>开发者 累计加班时长</h2>
176
+ <div class="tabs" id="tabsTotalOvertime">
177
+ <button data-type="daily" class="active">按日</button>
178
+ <button data-type="weekly">按周</button>
179
+ <button data-type="monthly">按月</button>
180
+ <button data-type="yearly">按年</button>
181
+ </div>
182
+ <div id="chartAuthorTotalOvertime" class="echart"></div>
183
+ </div>
184
+
185
+ <section class="chartsHalf">
186
+ <div class="chart-card">
187
+ <h2>开发者 加班总时长</h2>
188
+ <div id="authorTotalOvertimeRank" class="rank-list"></div>
189
+ </div>
190
+ <div class="chart-card">
191
+ <h2>开发者 加班总时长</h2>
192
+ <div id="authorTotalOvertimeRankSummary" style="height: 600px"></div>
193
+ </div>
194
+ </section>
195
+
196
+ <!-- 开发者 累计提交次数 -->
197
+ <div class="chart-card">
198
+ <h2>开发者 累计提交次数</h2>
199
+ <div class="tabs" id="tabsTotalCommits">
200
+ <button data-type="daily" class="active">按日</button>
201
+ <button data-type="weekly">按周</button>
202
+ <button data-type="monthly">按月</button>
203
+ <button data-type="yearly">按年</button>
204
+ </div>
205
+ <div id="chartAuthorTotalCommits" class="echart"></div>
206
+ </div>
207
+
208
+ <section class="chartsHalf">
209
+ <div class="chart-card">
210
+ <h2>开发者 提交总次数</h2>
211
+ <div id="authorTotalCommitsRank" class="rank-list"></div>
212
+ </div>
213
+ <div class="chart-card">
214
+ <h2>开发者 提交总次数</h2>
215
+ <div id="authorTotalCommitsRankSummary" style="height: 600px"></div>
216
+ </div>
217
+ </section>
218
+ <!-- 开发者 累计提交次数 End -->
219
+
220
+ <!-- 开发者 累计提交Changed -->
221
+ <div class="chart-card" id="totalCommitsChangedCard">
222
+ <h2>开发者 累计提交Changed </h2>
223
+ <div class="tabs" id="tabsTotalCommitsChanged">
224
+ <button data-type="daily" class="active">按日</button>
225
+ <button data-type="weekly">按周</button>
226
+ <button data-type="monthly">按月</button>
227
+ <button data-type="yearly">按年</button>
228
+ </div>
229
+ <div id="chartAuthorTotalCommitsChanged" class="echart"></div>
230
+ </div>
231
+
232
+ <section class="chartsHalf" id="totalCommitsChangedRankSection">
233
+ <div class="chart-card">
234
+ <h2>开发者 提交Changed 总次数</h2>
235
+ <div id="authorTotalCommitsChangedRank" class="rank-list"></div>
236
+ </div>
237
+ <div class="chart-card">
238
+ <h2>开发者 提交Changed 总次数</h2>
239
+ <div id="authorTotalCommitsChangedRankSummary" style="height: 600px"></div>
240
+ </div>
241
+ </section>
242
+ <!-- 开发者 累计提交Changed End -->
243
+
244
+ <!-- <div class="chart-card">
245
+ <h2>开发者 加班总时长</h2>
246
+ <div class="box-flex">
247
+ <div id="authorTotalOvertimeRank" class="rank-list"></div>
248
+ <div id="authorTotalOvertimeRankSummary"></div>
249
+ </div>
250
+ </div> -->
251
+
104
252
  <section class="table-card">
105
253
  <h2>提交清单</h2>
106
254
  <div id="tableControls">
@@ -130,12 +278,13 @@
130
278
  <table id="commitsTable">
131
279
  <thead>
132
280
  <tr>
133
- <th>Hash</th>
281
+ <th class="hash">Hash</th>
134
282
  <th>Author</th>
135
- <th>Email</th>
283
+ <th class="email">Email</th>
136
284
  <th>Date</th>
137
285
  <th>Message</th>
138
- <th>Changed</th>
286
+ <th class="cherryPick">CherryPick</th>
287
+ <th id="thChanged">Changed</th>
139
288
  </tr>
140
289
  </thead>
141
290
  <tbody></tbody>