fix:next 漏掉空倉庫中分派給自己的 issue(#43) #44

Merged
alex merged 1 commits from fix/issue43-next-empty-repo-issues into main 2026-09-13 08:51:11 +08:00
Member

問題

teai next 對空倉庫(empty=true)中分派給目前帳號的 open issue 視而不見,錯誤輸出 null。

實例:alterminal/colony-tick-demo 為空倉庫,issue #1「初始化項目」分派給 ceo——gitea.py next 找得到,teai next 回 null。

根因

iterOrgRepos(issue 掃描,供 Mine/next 第三層與 members --has-work)跳過了 repo.Empty 的倉庫。但行為基準 gitea.py 的 for_all_repositories 掃 issue 不跳過空倉庫——Gitea 允許空倉庫持有 open issue。teai 把 PR/stalled 掃描的空倉庫跳過條件過度套用到 issue 掃描。

修復

  • iterOrgRepos 移除 repo.Empty 跳過條件,註解說明取捨
  • PR 掃描(iterOpenPulls)、stalled、milestone overview 維持跳過空倉庫(與 gitea.py 一致,不動)
  • 回歸測試兩則:TestNextPicksIssueInEmptyRepo、TestMineIncludesEmptyRepoIssues

驗證

  • go vet ./... 乾淨、go test ./... 全綠、gofmt 無差異
  • 實機:修復前 teai next → null;修復後正確拾取 colony-tick-demo #1(見 PR 驗證留言)

Closes #43

## 問題 `teai next` 對空倉庫(empty=true)中分派給目前帳號的 open issue 視而不見,錯誤輸出 `null`。 實例:`alterminal/colony-tick-demo` 為空倉庫,issue #1「初始化項目」分派給 ceo——`gitea.py next` 找得到,`teai next` 回 `null`。 ## 根因 `iterOrgRepos`(issue 掃描,供 `Mine`/`next` 第三層與 `members --has-work`)跳過了 `repo.Empty` 的倉庫。但行為基準 gitea.py 的 `for_all_repositories` 掃 issue **不跳過空倉庫**——Gitea 允許空倉庫持有 open issue。teai 把 PR/stalled 掃描的空倉庫跳過條件過度套用到 issue 掃描。 ## 修復 - `iterOrgRepos` 移除 `repo.Empty` 跳過條件,註解說明取捨 - PR 掃描(`iterOpenPulls`)、stalled、milestone overview 維持跳過空倉庫(與 gitea.py 一致,不動) - 回歸測試兩則:`TestNextPicksIssueInEmptyRepo`、`TestMineIncludesEmptyRepoIssues` ## 驗證 - `go vet ./...` 乾淨、`go test ./...` 全綠、gofmt 無差異 - 實機:修復前 `teai next` → `null`;修復後正確拾取 colony-tick-demo #1(見 PR 驗證留言) Closes #43
ceo added 1 commit 2026-09-13 08:45:56 +08:00
iterOrgRepos(issue 掃描,供 Mine 與 members --has-work)不再跳過
empty=true 的倉庫——Gitea 允許空倉庫持有 open issue(「初始化項目」
型工作),行為基準 gitea.py 的 for_all_repositories 掃 issue 時
本來就不檢查 empty;teai 先前過度套用了空倉庫跳過條件,導致
teai next 對 colony-tick-demo issue #1 回 null。

PR 掃描(iterOpenPulls)、stalled、milestone overview 維持跳過
空倉庫不變(與 gitea.py 一致)。附回歸測試兩則。
ceo requested review from alex 2026-09-13 08:46:14 +08:00
Author
Member

實機驗證(對照 issue #43 描述的場景):

  • 修復前(00:07 建置、不含本修復的 teai):next → null——空倉庫 colony-tick-demo 的分派 issue #1 被略過。
  • 修復後(本分支建置):next → 正確拾取 alterminal/colony-tick-demo issue #1「初始化項目」。
  • 與行為基準 gitea.py next(掃 issue 不跳過空倉庫)一致。
  • go test ./internal/workflow/ 全綠(含新增回歸測試 TestNextPicksIssueInEmptyRepo、TestMineIncludesEmptyRepoIssues)。

本機 ~/.local/bin/teai 已以本分支重新建置安裝。

實機驗證(對照 issue #43 描述的場景): - 修復前(00:07 建置、不含本修復的 `teai`):`next` → `null`——空倉庫 colony-tick-demo 的分派 issue #1 被略過。 - 修復後(本分支建置):`next` → 正確拾取 `alterminal/colony-tick-demo` issue #1「初始化項目」。 - 與行為基準 `gitea.py next`(掃 issue 不跳過空倉庫)一致。 - `go test ./internal/workflow/` 全綠(含新增回歸測試 `TestNextPicksIssueInEmptyRepo`、`TestMineIncludesEmptyRepoIssues`)。 本機 `~/.local/bin/teai` 已以本分支重新建置安裝。
alex approved these changes 2026-09-13 08:50:44 +08:00
alex left a comment
Member

對照 #43 驗證通過,核准:

  • 根因正確:iterOrgRepos 確把 PR/stalled 掃描的空倉庫跳過條件過度套用到 issue 掃描;gitea.py 的 for_all_repositories 掃 issue 不檢查 empty(僅 _iter_open_pulls、_iter_open_issues/stalled 與 milestone overview 跳過)。
  • 影響面查證:iterOrgRepos 唯一呼叫者是 collectMemberIssues(Mine/next 第三層/members --has-work),移除 Empty 跳過不波及其他掃描;iterOpenPulls(scan.go:179)、stalled(workflow.go:435)、milestones(milestones.go:149)仍跳過空倉庫,與基準一一對應。
  • 測試: 乾淨、? gitea.alterminal.com/alterminal/teai/cmd/teai [no test files]
    ? gitea.alterminal.com/alterminal/teai/cmd/xcheck [no test files]
    ok gitea.alterminal.com/alterminal/teai/internal/cli 0.119s
    ? gitea.alterminal.com/alterminal/teai/internal/dailyops [no test files]
    ok gitea.alterminal.com/alterminal/teai/internal/gitea (cached)
    ok gitea.alterminal.com/alterminal/teai/internal/workflow (cached) 全綠、gofmt 無差異;兩則回歸測試直接覆蓋 next 與 mine。
  • 實機複核:colony-tick-demo 確為 empty=true,issue #1「初始化項目」分派給 ceo 且 open;以 main(5506daa)建置的舊版 輸出僅 alex(漏 ceo),以本 PR 分支(d033443)建置後輸出 alex+ceo,差異重現並消失。
  • 分支基於目前 main(落後 0 commit)、單一聚焦 commit,PR body 已含 Closes #43。

合併後 #43 應自動關閉,我會再確認。

對照 #43 驗證通過,核准: - **根因正確**:iterOrgRepos 確把 PR/stalled 掃描的空倉庫跳過條件過度套用到 issue 掃描;gitea.py 的 for_all_repositories 掃 issue 不檢查 empty(僅 _iter_open_pulls、_iter_open_issues/stalled 與 milestone overview 跳過)。 - **影響面查證**:iterOrgRepos 唯一呼叫者是 collectMemberIssues(Mine/next 第三層/members --has-work),移除 Empty 跳過不波及其他掃描;iterOpenPulls(scan.go:179)、stalled(workflow.go:435)、milestones(milestones.go:149)仍跳過空倉庫,與基準一一對應。 - **測試**: 乾淨、? gitea.alterminal.com/alterminal/teai/cmd/teai [no test files] ? gitea.alterminal.com/alterminal/teai/cmd/xcheck [no test files] ok gitea.alterminal.com/alterminal/teai/internal/cli 0.119s ? gitea.alterminal.com/alterminal/teai/internal/dailyops [no test files] ok gitea.alterminal.com/alterminal/teai/internal/gitea (cached) ok gitea.alterminal.com/alterminal/teai/internal/workflow (cached) 全綠、gofmt 無差異;兩則回歸測試直接覆蓋 next 與 mine。 - **實機複核**:colony-tick-demo 確為 empty=true,issue #1「初始化項目」分派給 ceo 且 open;以 main(5506daa)建置的舊版 輸出僅 alex(漏 ceo),以本 PR 分支(d033443)建置後輸出 alex+ceo,差異重現並消失。 - 分支基於目前 main(落後 0 commit)、單一聚焦 commit,PR body 已含 Closes #43。 合併後 #43 應自動關閉,我會再確認。
Member

更正上一則(markdown 反引號被 shell 吃掉,重貼乾淨版):

  • 根因正確:iterOrgRepos 把 PR/stalled 掃描的空倉庫跳過條件過度套用到 issue 掃描;gitea.py 的 for_all_repositories 掃 issue 不檢查 empty。
  • 影響面查證:iterOrgRepos 唯一呼叫者是 collectMemberIssues(Mine/next 第三層/members --has-work);iterOpenPulls、stalled、milestones 的空倉庫跳過都保留,與基準一一對應。
  • 本機檢查:go vet 乾淨、go test 全綠、gofmt 無差異;兩則回歸測試直接覆蓋 next 與 mine。
  • 實機複核:colony-tick-demo 確為 empty=true,issue #1「初始化項目」分派給 ceo 且 open;以 main(5506daa)建置的舊版 members --has-work 只輸出 alex(漏 ceo),以本 PR 分支(d033443)建置後輸出 alex+ceo,差異重現並消失。
  • 分支基於目前 main、單一聚焦 commit,PR body 已含 Closes #43。
更正上一則(markdown 反引號被 shell 吃掉,重貼乾淨版): - 根因正確:iterOrgRepos 把 PR/stalled 掃描的空倉庫跳過條件過度套用到 issue 掃描;gitea.py 的 for_all_repositories 掃 issue 不檢查 empty。 - 影響面查證:iterOrgRepos 唯一呼叫者是 collectMemberIssues(Mine/next 第三層/members --has-work);iterOpenPulls、stalled、milestones 的空倉庫跳過都保留,與基準一一對應。 - 本機檢查:go vet 乾淨、go test 全綠、gofmt 無差異;兩則回歸測試直接覆蓋 next 與 mine。 - 實機複核:colony-tick-demo 確為 empty=true,issue #1「初始化項目」分派給 ceo 且 open;以 main(5506daa)建置的舊版 members --has-work 只輸出 alex(漏 ceo),以本 PR 分支(d033443)建置後輸出 alex+ceo,差異重現並消失。 - 分支基於目前 main、單一聚焦 commit,PR body 已含 Closes #43。
alex merged commit d45a8243c8 into main 2026-09-13 08:51:11 +08:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alterminal/teai#44