diff --git a/app/comments.js b/app/comments.js index 942cec1..399f870 100644 --- a/app/comments.js +++ b/app/comments.js @@ -60,18 +60,16 @@ function countBy(findings, predicate) { return findings.filter(predicate).length; } -function buildReviewSummary(findings, commentable) { - const unplacedCount = findings.length - commentable.length; +function buildReviewSummary(findings) { 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} 筆 |`, - `| **🔴 嚴重**
${criticalCount} 筆 | **🟡 警告**
${warningCount} 筆 | **🔵 建議**
${infoCount} 筆 |`, + `| ${criticalCount} 筆 | ${warningCount} 筆 | ${infoCount} 筆 |`, ].join('\n'); } @@ -93,7 +91,7 @@ export async function postFindingsReview(findings, deps = {}) { const { postReview = postPullReview } = deps; const sorted = [...findings].sort(bySeverity); const comments = sorted.map(toReviewComment).filter(Boolean); - const body = buildReviewSummary(sorted, comments); + const body = buildReviewSummary(sorted); await postReview({ body, comments }); ok(`review 發布: total=${sorted.length} commentable=${comments.length}`); } diff --git a/app/comments.test.js b/app/comments.test.js index f21b16d..aa945e6 100644 --- a/app/comments.test.js +++ b/app/comments.test.js @@ -200,9 +200,8 @@ describe('postFindingsReview', () => { }); assert.equal(reviewCalls.length, 1); - assert.match(reviewCalls[0].body, /\| 統計 \| 統計 \| 統計 \|/); - assert.match(reviewCalls[0].body, /\| \*\*總問題\*\*
3 筆 \| \*\*可標註檔案與行數\*\*
3 筆 \| \*\*無法標註檔案與行數\*\*
0 筆 \|/); - assert.match(reviewCalls[0].body, /\| \*\*🔴 嚴重\*\*
1 筆 \| \*\*🟡 警告\*\*
1 筆 \| \*\*🔵 建議\*\*
1 筆 \|/); + assert.match(reviewCalls[0].body, /\| 🔴 嚴重 \| 🟡 警告 \| 🔵 建議 \|/); + 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'], @@ -227,7 +226,7 @@ describe('postFindingsReview', () => { }); assert.equal(reviewCalls.length, 1); - assert.match(reviewCalls[0].body, /\| \*\*總問題\*\*
2 筆 \| \*\*可標註檔案與行數\*\*
1 筆 \| \*\*無法標註檔案與行數\*\*
1 筆 \|/); + assert.match(reviewCalls[0].body, /\| 1 筆 \| 1 筆 \| 0 筆 \|/); assert.equal(reviewCalls[0].comments.length, 1); assert.equal(reviewCalls[0].comments[0].path, 'app/b.js'); });