fix(issue-extract): 留言逐頁讀完,不再只數第一頁
原本只打一次留言端點就收工,留言超過一頁時未整併的則數會少算——而少算的後果 是下游以為描述是最新的,照著過期的描述做事。改用 lib.pages 走完所有頁,讀不完 就以 COMMENT_LIMIT 報錯,不無聲回傳半份。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
|||||||
expectOk,
|
expectOk,
|
||||||
giteaRequest,
|
giteaRequest,
|
||||||
main,
|
main,
|
||||||
|
pages,
|
||||||
parseFlags,
|
parseFlags,
|
||||||
parseRepo,
|
parseRepo,
|
||||||
preflight,
|
preflight,
|
||||||
@@ -92,16 +93,20 @@ async function fetchIssue(login, repo, index, path) {
|
|||||||
*
|
*
|
||||||
* 已整併的留言會被打上 `+1` reaction(由 sdlc-sync 負責標記),而 Gitea 的留言物件
|
* 已整併的留言會被打上 `+1` reaction(由 sdlc-sync 負責標記),而 Gitea 的留言物件
|
||||||
* 不含 reaction,所以只能逐則再查一次。留言多時請求數會跟著長,但這個數字要準
|
* 不含 reaction,所以只能逐則再查一次。留言多時請求數會跟著長,但這個數字要準
|
||||||
* ——它決定下游會不會拿著過期的描述做事。
|
* ——它決定下游會不會拿著過期的描述做事,所以留言也要逐頁讀完,讀不完寧可報錯。
|
||||||
*/
|
*/
|
||||||
async function countUnmergedComments(login, repo, commentsPath) {
|
async function countUnmergedComments(login, repo, commentsPath) {
|
||||||
const comments = expectOk(await giteaRequest(login, 'GET', commentsPath), `GET ${commentsPath}`) ?? [];
|
|
||||||
|
|
||||||
let unmerged = 0;
|
let unmerged = 0;
|
||||||
for (const comment of comments) {
|
|
||||||
const path = `/repos/${repo}/issues/comments/${comment.id}/reactions`;
|
for await (const comments of pages(login, commentsPath, {
|
||||||
const reactions = expectOk(await giteaRequest(login, 'GET', path), `GET ${path}`) ?? [];
|
limitCode: 'COMMENT_LIMIT',
|
||||||
if (!reactions.some((reaction) => reaction.content === '+1')) unmerged += 1;
|
limitHint: `${commentsPath} 的留言太多,數不完未整併的則數`,
|
||||||
|
})) {
|
||||||
|
for (const comment of comments) {
|
||||||
|
const path = `/repos/${repo}/issues/comments/${comment.id}/reactions`;
|
||||||
|
const reactions = expectOk(await giteaRequest(login, 'GET', path), `GET ${path}`) ?? [];
|
||||||
|
if (!reactions.some((reaction) => reaction.content === '+1')) unmerged += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return unmerged;
|
return unmerged;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user