diff --git a/app/comments.js b/app/comments.js
index 3ee6e84..942cec1 100644
--- a/app/comments.js
+++ b/app/comments.js
@@ -62,15 +62,16 @@ function countBy(findings, predicate) {
function buildReviewSummary(findings, commentable) {
const unplacedCount = findings.length - commentable.length;
+ const criticalCount = countBy(findings, f => f.level === 'critical');
+ const warningCount = countBy(findings, f => f.level === 'warning');
+ const infoCount = countBy(findings, f => f.level === 'info');
return [
'## AI Code Review 統計',
'',
- `總問題:${findings.length} 筆`,
- `可標註檔案與行數:${commentable.length} 筆`,
- `無法標註檔案與行數:${unplacedCount} 筆`,
- `嚴重:${countBy(findings, f => f.level === 'critical')} 筆`,
- `警告:${countBy(findings, f => f.level === 'warning')} 筆`,
- `建議:${countBy(findings, f => f.level === 'info')} 筆`,
+ '| 統計 | 統計 | 統計 |',
+ '| --- | --- | --- |',
+ `| **總問題**
${findings.length} 筆 | **可標註檔案與行數**
${commentable.length} 筆 | **無法標註檔案與行數**
${unplacedCount} 筆 |`,
+ `| **🔴 嚴重**
${criticalCount} 筆 | **🟡 警告**
${warningCount} 筆 | **🔵 建議**
${infoCount} 筆 |`,
].join('\n');
}
diff --git a/app/comments.test.js b/app/comments.test.js
index 7e3b88a..f21b16d 100644
--- a/app/comments.test.js
+++ b/app/comments.test.js
@@ -200,11 +200,9 @@ describe('postFindingsReview', () => {
});
assert.equal(reviewCalls.length, 1);
- assert.match(reviewCalls[0].body, /總問題:3 筆/);
- assert.match(reviewCalls[0].body, /可標註檔案與行數:3 筆/);
- assert.match(reviewCalls[0].body, /嚴重:1 筆/);
- assert.match(reviewCalls[0].body, /警告:1 筆/);
- assert.match(reviewCalls[0].body, /建議:1 筆/);
+ assert.match(reviewCalls[0].body, /\| 統計 \| 統計 \| 統計 \|/);
+ assert.match(reviewCalls[0].body, /\| \*\*總問題\*\*
3 筆 \| \*\*可標註檔案與行數\*\*
3 筆 \| \*\*無法標註檔案與行數\*\*
0 筆 \|/);
+ assert.match(reviewCalls[0].body, /\| \*\*🔴 嚴重\*\*
1 筆 \| \*\*🟡 警告\*\*
1 筆 \| \*\*🔵 建議\*\*
1 筆 \|/);
assert.deepEqual(
reviewCalls[0].comments.map(c => c.path),
['app/a.js', 'app/b.js', 'app/c.js'],
@@ -229,9 +227,7 @@ describe('postFindingsReview', () => {
});
assert.equal(reviewCalls.length, 1);
- assert.match(reviewCalls[0].body, /總問題:2 筆/);
- assert.match(reviewCalls[0].body, /可標註檔案與行數:1 筆/);
- assert.match(reviewCalls[0].body, /無法標註檔案與行數:1 筆/);
+ assert.match(reviewCalls[0].body, /\| \*\*總問題\*\*
2 筆 \| \*\*可標註檔案與行數\*\*
1 筆 \| \*\*無法標註檔案與行數\*\*
1 筆 \|/);
assert.equal(reviewCalls[0].comments.length, 1);
assert.equal(reviewCalls[0].comments[0].path, 'app/b.js');
});