refactor(lib): 讀檔與列留言收進 lib,並讓已整併只認自己打的 +1

「讀一個 --xxx-file 或直接失敗」原本在四支腳本各寫一份,錯誤碼還有三種拼法
(BODY_FILE_NOT_FOUND/BODY_FILE_MISSING/CONTENT_FILE_NOT_FOUND)。同一種情況要有同一個
碼,呼叫端才分辨得出是哪一步壞了。留言分頁的那段咒語也是第三份,一併收成 listIssueComments。

countUnmergedComments 原本接受任何人的 +1,而讀留言那邊只認自己的——兩端對「已整併」的
定義不一致。後果是隊友對決策留言按個讚,未處理留言數就掉到 0,analyze 與 feat 再也不提示,
那則決策永遠不會被收進描述。統一成只認自己打的:別人按讚是「我同意」,不是「已經收進去了」。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-17 09:19:05 +00:00
co-authored by Claude Opus 5
parent d0e7e569a3
commit ee474d0439
2 changed files with 63 additions and 22 deletions
+2 -8
View File
@@ -25,7 +25,6 @@
* --body-file <描述檔> --index 13
* [--issue-repo owner/name] [--host <網址>] [--dry-run]
*/
import { existsSync, readFileSync } from 'node:fs';
import {
ScriptError,
expectOk,
@@ -35,6 +34,7 @@ import {
parseIndex,
parseRepo,
preflight,
readTextFile,
resolveLogin,
} from './lib.js';
@@ -87,7 +87,7 @@ main(async () => {
const head = flags.head;
const base = flags.base;
const index = parseIndex(flags.index);
const body = readBody(flags['body-file']);
const body = readTextFile(flags['body-file'], '--body-file');
// 描述先驗完再談寫入:不合格的描述不該等到實跑才發現
checkSections(body);
@@ -160,12 +160,6 @@ async function findOpenPull(login, repo, head) {
}
function readBody(path) {
if (!existsSync(path)) {
throw new ScriptError('BODY_FILE_NOT_FOUND', `找不到描述檔 ${path}`);
}
return readFileSync(path, 'utf8');
}
/** 八個段落一個都不能少,而且順序要與 SECTIONS 一致 */
function checkSections(body) {