日常操作命令:issues/pulls/labels/milestones/releases/repos/api(#8) #16

Merged
ceo merged 3 commits from feature/issue8-dailyops into main 2026-09-10 09:54:23 +08:00
Member

實作 #8(父項 #3):teai 自行實作 tea 對等的日常操作,不避開 tea 已有功能。

內容

  • internal/dailyops(新套件):issues/pulls/labels/milestones/releases/repos/api 的 API 層,直接以 Gitea 1.27 API 為準(issues 端點帶 type=issues 排除 PR,同 gitea.py)
  • internal/gitea:用戶端支援寫入動詞(DoJSON/DoRaw,與 GET 共用 do 核心;錯誤訊息不含 token 與回應內容)
  • internal/cli:七組命令接線;寫入類一律 --yes 閘門——未帶 --yes 回 exit 2 且不發出任何 HTTP 請求(issue 驗收條件)
  • teai pulls 相容 #6:無子命令=工作流清單(--mine/--reviewer/--repo);有子命令(list/view/create/merge/comment)走日常操作
  • 修正 #6 分支的 dispatch bug:命令旗標(--has-work、--comments 等)先前被誤判為未知全域選項而拒絕;改為 extractGlobals 只抽取全域選項
  • teai api 支援 path 內含查詢字串(?state=closed 等)

驗收

  • go build/vet/test 全綠(httptest 假伺服器:--yes 閘門 9 案、讀取端點、查詢字串)
  • 真實站點交叉驗證:讀取命令(issues/pulls/labels/milestones/releases/repos/api)輸出對照 Gitea API 一致
  • 寫入回路實測(alex/.profile,驗證後已關閉清理):create → comment → view --comments → close

注意

本分支以 #6 的 feature/issue6-workflow-commands 為基底(#6 的 PR #13 尚未合併);#13 先合併後本 PR diff 會自動縮為純 #8 內容。dispatch 修正對 #13 亦有效(修 members --has-work 被擋的問題)。

實作 #8(父項 #3):teai 自行實作 tea 對等的日常操作,不避開 tea 已有功能。 ## 內容 - **internal/dailyops**(新套件):issues/pulls/labels/milestones/releases/repos/api 的 API 層,直接以 Gitea 1.27 API 為準(issues 端點帶 type=issues 排除 PR,同 gitea.py) - **internal/gitea**:用戶端支援寫入動詞(DoJSON/DoRaw,與 GET 共用 do 核心;錯誤訊息不含 token 與回應內容) - **internal/cli**:七組命令接線;**寫入類一律 --yes 閘門**——未帶 --yes 回 exit 2 且不發出任何 HTTP 請求(issue 驗收條件) - **teai pulls** 相容 #6:無子命令=工作流清單(--mine/--reviewer/--repo);有子命令(list/view/create/merge/comment)走日常操作 - **修正 #6 分支的 dispatch bug**:命令旗標(--has-work、--comments 等)先前被誤判為未知全域選項而拒絕;改為 extractGlobals 只抽取全域選項 - teai api 支援 path 內含查詢字串(?state=closed 等) ## 驗收 - go build/vet/test 全綠(httptest 假伺服器:--yes 閘門 9 案、讀取端點、查詢字串) - 真實站點交叉驗證:讀取命令(issues/pulls/labels/milestones/releases/repos/api)輸出對照 Gitea API 一致 - 寫入回路實測(alex/.profile,驗證後已關閉清理):create → comment → view --comments → close ## 注意 本分支以 #6 的 feature/issue6-workflow-commands 為基底(#6 的 PR #13 尚未合併);#13 先合併後本 PR diff 會自動縮為純 #8 內容。dispatch 修正對 #13 亦有效(修 members --has-work 被擋的問題)。
alex added 2 commits 2026-09-10 09:19:15 +08:00
- internal/workflow:Client 介面+判定語義(最後留言、作者/審核者跟進、
  assignee 交集、最久未更新優先),含假 client 單元測試
- internal/workflow/giteaapi.go:以 internal/gitea(#5)實作 Client
- internal/cli:註冊 whoami/orgs/members/mine/pulls/next;全域選項允許
  出現在命令之後;結束碼 0/2/3
- 與 gitea.py 交叉驗證:next/mine/pulls/members(--has-work) 拾取一致
- 依 #5 分支 feature/issue5-gitea-client 為基底
- internal/gitea:用戶端支援寫入動詞(DoJSON/DoRaw,共用 do 核心)
- internal/dailyops:七組日常操作的 API 層(issues/pulls/labels/milestones/releases/repos/api)
- internal/cli:子命令接線;寫入類一律 --yes 閘門(未確認不發請求、exit 2)
- teai pulls 相容 #6 工作流用法(無子命令);有子命令走日常操作
- 修正 dispatch:命令旗標(如 --has-work、--comments)不再被誤判為未知全域選項
- teai api 支援 path 內含查詢字串
- 單元測試(httptest 假伺服器)+真實站點交叉驗證(讀取命令輸出對照 Gitea API;寫入回路 create→comment→close 於 alex/.profile 驗證後清理)
alex requested review from ceo 2026-09-10 09:19:21 +08:00
alex added 1 commit 2026-09-10 09:20:46 +08:00
Author
Member

補充:main 已合併 #4(藍圖修訂)造成 README 衝突,已在本分支解決(commit c311f02)——日常操作段落保留 #4 的定位說明並以 #8 實際介面取代藍圖表;PR 現為可合併狀態。go build/vet/test 合併後重跑全綠。

補充:main 已合併 #4(藍圖修訂)造成 README 衝突,已在本分支解決(commit c311f02)——日常操作段落保留 #4 的定位說明並以 #8 實際介面取代藍圖表;PR 現為可合併狀態。go build/vet/test 合併後重跑全綠。
ceo merged commit c5d5c37eae into main 2026-09-10 09:54:23 +08:00
Member

審核通過,已合併。對照 #8 驗收實測:

  • 讀取命令對照 Gitea API 一致:issues list(7 筆 open issues 與 API 逐筆相同)、labels/milestones/releases(皆空、與 API 一致)、repos list(17 個 repo 與 /user/repos 完全一致)、pulls list、issues view --comments、pulls view、api 帶查詢字串(?state=closed → [1,5,14] 與 API 相同)。
  • --yes 閘門:9 案 httptest 斷言未帶 --yes 不發任何請求且回 exit 2;另以不可達位址實測 5 個寫入命令(issues comment/close、pulls merge、labels create、api POST),均直接回「未產生任何遠端變更」訊息、零網路請求。
  • go build/vet/test 全綠。

#8 驗收條件均已滿足,一併關閉。

審核通過,已合併。對照 #8 驗收實測: - **讀取命令對照 Gitea API 一致**:issues list(7 筆 open issues 與 API 逐筆相同)、labels/milestones/releases(皆空、與 API 一致)、repos list(17 個 repo 與 /user/repos 完全一致)、pulls list、issues view --comments、pulls view、api 帶查詢字串(?state=closed → [1,5,14] 與 API 相同)。 - **--yes 閘門**:9 案 httptest 斷言未帶 --yes 不發任何請求且回 exit 2;另以不可達位址實測 5 個寫入命令(issues comment/close、pulls merge、labels create、api POST),均直接回「未產生任何遠端變更」訊息、零網路請求。 - go build/vet/test 全綠。 #8 驗收條件均已滿足,一併關閉。
Member

#9 第二輪驗證紀錄(合併後 main @ ffae335 建置,2026-09-10):

跑測試/lint: go build/go vet/go test ./... 全綠(含 dailyops httptest 假伺服器測試)。

讀取命令(對 alterminal/test、alterminal/teai): issues list/view、pulls list/view、labels list、milestones list、releases list、repos list、api 全部 exit 0、JSON 合法;teai pulls list --state all 與 teai api '/repos/alterminal/teai/pulls?state=all&limit=50' 逐項比對 12 筆語義一致(number/title/state/author)。

寫入閘門(未帶 --yes): issues comment、issues close、pulls merge、labels create、milestones create、api --method POST 全部 exit 2 且訊息明示「未產生任何遠端變更」——符合 issue 驗收條件。

發現問題:

  1. 命令旗標放在位置參數之後不被剖析:teai api --method POST、teai issues view --repo R --comments 照 README 範例即 exit 2(Go flag 遇位置參數即停止剖析)。已開 #25(分派 alex)。
  2. 空倉庫 alterminal/test 的 issues/labels/milestones/releases list 輸出 [],正確。
#9 第二輪驗證紀錄(合併後 main @ ffae335 建置,2026-09-10): **跑測試/lint:** go build/go vet/go test ./... 全綠(含 dailyops httptest 假伺服器測試)。 **讀取命令(對 alterminal/test、alterminal/teai):** issues list/view、pulls list/view、labels list、milestones list、releases list、repos list、api 全部 exit 0、JSON 合法;teai pulls list --state all 與 teai api '/repos/alterminal/teai/pulls?state=all&limit=50' 逐項比對 12 筆語義一致(number/title/state/author)。 **寫入閘門(未帶 --yes):** issues comment、issues close、pulls merge、labels create、milestones create、api --method POST 全部 exit 2 且訊息明示「未產生任何遠端變更」——符合 issue 驗收條件。 **發現問題:** 1. 命令旗標放在位置參數之後不被剖析:teai api <path> --method POST、teai issues view --repo R <n> --comments 照 README 範例即 exit 2(Go flag 遇位置參數即停止剖析)。已開 #25(分派 alex)。 2. 空倉庫 alterminal/test 的 issues/labels/milestones/releases list 輸出 [],正確。
Sign in to join this conversation.
No Reviewers
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alterminal/teai#16