docs(ai-review 對話收斂): 補階段十三 PR 對話收斂流程與驗收說明
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 2m46s

This commit is contained in:
Jeffery
2026-06-23 11:09:50 +08:00
parent 7a29a5be1c
commit 374253d4cf
2 changed files with 12 additions and 1 deletions
+5
View File
@@ -69,3 +69,8 @@
- 驗收:log 中能看到 `Step1.5`(或對等)前置驗證的每一項結果(成功/失敗),任一失敗時 log 指出是哪一項與錯誤訊息,且 workflow 狀態為失敗;全部通過時 log 出「前置驗證通過」後才進入後續流程;驗證邏輯由 `app/preflight.js` 提供並有單元測試覆蓋(成功、缺環境變數、Gitea token 無效、comment token 無效、所有 LLM key 失敗、Ollama base url 等情境)。
- 補充紀錄:前置驗證不應發布任何 PR comment,只做唯讀的認證/連線確認;LLM 驗證請用最小 payload,避免浪費 token。
- 已驗收:`app/preflight.js` 提供 `checkRequiredEnv` / `verifyGiteaToken` / `verifyCommentToken` / `verifyLLM` / `runPreflight`git push 認證驗證由 `app/git.js``verifyRemoteAccess``git ls-remote`)提供;`main.js` 已在 Step1 之後、bot-check 之前呼叫 `runPreflight(WORKSPACE)`,未通過即印出原因並 `exit 1``app/preflight.test.js``app/git.test.js` 覆蓋上述情境(含 git push 認證成功/失敗、token 不外洩、askpass 清理),`node --test *.test.js` 全數通過。
## 階段十三:PR 對話收斂(讀留言判斷解決狀態)
- 目標:前置驗證通過、且非 AI 助理自動提交後(Step2),讀取 PR 上所有行內 review comment 並收斂成對話,請 AI 對照 PR head 最新程式碼判斷每個對話指出的問題是否已解決:已解決者用 Gitea 官方 API resolve 對話,並在 Step4 從問題清單移除;未解決且可解析回 bot finding 者,於 Step4 加回問題清單。納入判斷的對話包含所有人的留言;任一外部呼叫失敗都降級為「視為未解決」,不中斷流程。
- 驗收:log 中能看到 `Step2` 的對話總數/已解決/待判斷統計,以及 `對話已解決並 resolve: <path>:<line>``對話收斂完成: resolved=.. unresolved=.. 加回 findings=..`Step4 能看到 `對話收斂套用: N -> M 筆`resolve / list comments / 取檔案內容 / AI 判斷任一失敗時有對應降級警告。
- 已驗收:`app/resolve.js` 提供 `parseBotReviewComment` / `groupConversations` / `codeWindow` / `judgeConversationsResolved` / `reconcileConversations` / `dropResolvedFindings` / `addCarriedFindings``app/gitea.js` 新增 `listPullReviews` / `getPullReviewComments` / `listAllReviewComments` / `resolvePullReviewComment` / `getFileContentAtRef``main.js``Step2` 呼叫並於 `Step4` 套用結果;`app/resolve.test.js` 與擴充後的 `app/gitea.test.js` 覆蓋解析、收斂、AI 判斷對齊、resolve/降級、移除/加回去重等情境,`node --test *.test.js` 全數通過。