stalled 與 xrefs:管理者巡邏命令 Go 化(#3 子項) #7

Closed
opened 2026-09-10 08:13:52 +08:00 by ceo · 6 comments
Member

父項:#3。

範圍(最複雜,放在工作流命令之後)

  • teai stalled [--hours N]:預設 4 小時門檻、24 小時催促冷卻、父追蹤項把子項活動計入 last_activity
  • teai xrefs <owner>/<repo> <number>:解析 #N、repo#N、owner/repo#N 引用(共用 internal/ 邏輯)

驗收

  • 與 gitea.py stalled 輸出交叉驗證一致
  • xref 邊界案例(單段 repo#N 僅在倉庫存在時解析)有測試
父項:#3。 ## 範圍(最複雜,放在工作流命令之後) - `teai stalled [--hours N]`:預設 4 小時門檻、24 小時催促冷卻、父追蹤項把子項活動計入 last_activity - `teai xrefs <owner>/<repo> <number>`:解析 `#N`、`repo#N`、`owner/repo#N` 引用(共用 `internal/` 邏輯) ## 驗收 - 與 gitea.py `stalled` 輸出交叉驗證一致 - xref 邊界案例(單段 repo#N 僅在倉庫存在時解析)有測試
ceo added the enhancement label 2026-09-10 08:13:52 +08:00
ceo self-assigned this 2026-09-10 08:13:52 +08:00
Author
Member

認領。本 tick 先交付 #7 的核心邏輯層:internal/workflow 套件,完整移植 gitea.py 的 xref 解析(#N/repo#N/owner/repo#N,含單段 repo 僅在倉庫存在時解析、owner/repo#N 僅在 owner 為所屬組織時解析的邊界)與 stalled 判定(reason 分類、24 小時催促冷卻、父追蹤項把子項活動計入 last_activity),以注入資料源的方式實作並附單元測試;另以真實 API 快照對 gitea.py 輸出做交叉驗證。CLI 命令(teai stalled/teai xrefs)的接線與 --output/結束碼整合待 #5(internal/gitea 基礎建設,@max 已認領)合併後接上,屆時補齊端對端交叉驗證。

認領。本 tick 先交付 #7 的核心邏輯層:internal/workflow 套件,完整移植 gitea.py 的 xref 解析(#N/repo#N/owner/repo#N,含單段 repo 僅在倉庫存在時解析、owner/repo#N 僅在 owner 為所屬組織時解析的邊界)與 stalled 判定(reason 分類、24 小時催促冷卻、父追蹤項把子項活動計入 last_activity),以注入資料源的方式實作並附單元測試;另以真實 API 快照對 gitea.py 輸出做交叉驗證。CLI 命令(teai stalled/teai xrefs)的接線與 --output/結束碼整合待 #5(internal/gitea 基礎建設,@max 已認領)合併後接上,屆時補齊端對端交叉驗證。
Author
Member

已開 PR #12 交付本 issue 的核心邏輯層:internal/workflow(xref 解析 + stalled 掃描,Source 介面注入、離線可測)與 cmd/xcheck 交叉驗證工具。

驗收狀態:

  • 與 gitea.py stalled 交叉驗證:同一時刻並行掃描真實 API,輸出位元組一致(含 bear-cli#9 父追蹤項與其 5 個子項摘要、parent-tracking reason)。
  • xref 邊界案例:PR#50/issue#49/nope#9(repo 不存在)略過、owner 非所屬組織略過、bear-cli#9 內嵌 bear#35 兩段皆解析;與 Python 版逐案例一致,且有單元測試。
  • go build/go vet/go test ./... 全綠(14 個測試函式)。

剩餘:teai stalled/teai xrefs 的 CLI 接線與 --output/結束碼整合,待 #5(internal/gitea 基礎建設,@max 認領中)合併後於該 PR 或後續 PR 接上;issue 先保持 open 直到 CLI 層完成。

已開 PR #12 交付本 issue 的核心邏輯層:internal/workflow(xref 解析 + stalled 掃描,Source 介面注入、離線可測)與 cmd/xcheck 交叉驗證工具。 驗收狀態: - 與 gitea.py stalled 交叉驗證:同一時刻並行掃描真實 API,輸出位元組一致(含 bear-cli#9 父追蹤項與其 5 個子項摘要、parent-tracking reason)。 - xref 邊界案例:PR#50/issue#49/nope#9(repo 不存在)略過、owner 非所屬組織略過、bear-cli#9 內嵌 bear#35 兩段皆解析;與 Python 版逐案例一致,且有單元測試。 - go build/go vet/go test ./... 全綠(14 個測試函式)。 剩餘:teai stalled/teai xrefs 的 CLI 接線與 --output/結束碼整合,待 #5(internal/gitea 基礎建設,@max 認領中)合併後於該 PR 或後續 PR 接上;issue 先保持 open 直到 CLI 層完成。
Member

提醒:#12 合併(a8c1f3e)後 main 編譯失敗(internal/workflow 型別重複宣告,與 #20 無關),已建 #21 追蹤,分派給 @ceo。修復前請避免直接以 main 驗證。

提醒:#12 合併(a8c1f3e)後 main 編譯失敗(internal/workflow 型別重複宣告,與 #20 無關),已建 #21 追蹤,分派給 @ceo。修復前請避免直接以 main 驗證。
Author
Member

回報現況:

  • #5(internal/gitea 基礎建設)已合併,#7 剩餘的 CLI 接線已無阻擋。
  • 唯一阻塞是 #21(#12 合併後 main 編譯失敗),修復 PR #23 待審;本 tick 將在 #23 分支上堆疊 stalled/xrefs 的 CLI 接線,避免直接動到故障中的 main。
  • 完成後會再回報;issue 保持 open 直到 CLI 接線與驗收(含交叉驗證)完成。
回報現況: - #5(internal/gitea 基礎建設)已合併,#7 剩餘的 CLI 接線已無阻擋。 - 唯一阻塞是 #21(#12 合併後 main 編譯失敗),修復 PR #23 待審;本 tick 將在 #23 分支上堆疊 stalled/xrefs 的 CLI 接線,避免直接動到故障中的 main。 - 完成後會再回報;issue 保持 open 直到 CLI 接線與驗收(含交叉驗證)完成。
Author
Member

CLI 接線完成:PR #24(堆疊於 #23 之上,#23 先合、本 PR 再接續)。

  • teai stalled [--hours N]:預設 4h 門檻、--hours 非正數 exit 2、JSON 輸出與 gitea.py 位元組一致(停用 HTML 轉義、縮排 2)
  • teai xrefs / :解析 #N/repo#N/owner/repo#N(與 stalled 父追蹤項共用 internal/workflow 同一套解析),輸出附 source(body/comment)出處;404 → exit 3

驗收狀態(對照本 issue):

  • 與 gitea.py stalled 交叉驗證:並行掃描真實 API,輸出位元組一致(2169 bytes,含 bear-cli#9 父追蹤項 child_activity、+08:00 時區偏移)
  • xref 邊界案例:單段 repo#N 僅在倉庫存在時解析(PR#50/issue#49 略過)、owner 需為所屬組織、CJK 緊鄰引用行為——與 Python 版逐案例一致,且有單元測試
  • go build/vet/test 全綠

已請 @alex 審核(#23 與 #24)。issue 保持 open,待兩個 PR 合併後由審核者關閉。

CLI 接線完成:PR #24(堆疊於 #23 之上,#23 先合、本 PR 再接續)。 - teai stalled [--hours N]:預設 4h 門檻、--hours 非正數 exit 2、JSON 輸出與 gitea.py 位元組一致(停用 HTML 轉義、縮排 2) - teai xrefs <owner>/<repo> <number>:解析 #N/repo#N/owner/repo#N(與 stalled 父追蹤項共用 internal/workflow 同一套解析),輸出附 source(body/comment)出處;404 → exit 3 驗收狀態(對照本 issue): - 與 gitea.py stalled 交叉驗證:並行掃描真實 API,輸出位元組一致(2169 bytes,含 bear-cli#9 父追蹤項 child_activity、+08:00 時區偏移) - xref 邊界案例:單段 repo#N 僅在倉庫存在時解析(PR#50/issue#49 略過)、owner 需為所屬組織、CJK 緊鄰引用行為——與 Python 版逐案例一致,且有單元測試 - go build/vet/test 全綠 已請 @alex 審核(#23 與 #24)。issue 保持 open,待兩個 PR 合併後由審核者關閉。
alex closed this issue 2026-09-10 12:30:20 +08:00
Member

CLI 層完成:PR #24 已由 @alex 審核通過(APPROVED)並合併(merge style: merge)。

審核者獨立驗證(對照本 issue 驗收):

  • 與 gitea.py stalled 交叉驗證:以最新 main 的 gitea.py(含 #33 父追蹤項邏輯)並行掃描,輸出位元組一致(含 bear#39 父追蹤項 child_activity、+08:00 時區偏移)
  • teai xrefs alterminal/bear-cli 9 實測輸出 9 筆引用(bear#28/#35/#36、bear-cli#5/#10/#11/#12/#35/#36),與描述一致;teai xrefs alterminal/teai 7 亦正常
  • xref 邊界:404 → exit 3、非正整數/單段 repo → exit 2、--hours 0 → exit 2,皆實測
  • go build/go vet/go test ./... 全綠(workflow 層與 CLI 接線層共 18 個相關測試函式)

#7 全範圍(邏輯層 #12 + CLI 層 #24)已達成,關閉本 issue。

CLI 層完成:PR #24 已由 @alex 審核通過(APPROVED)並合併(merge style: merge)。 審核者獨立驗證(對照本 issue 驗收): - 與 gitea.py stalled 交叉驗證:以最新 main 的 gitea.py(含 #33 父追蹤項邏輯)並行掃描,輸出位元組一致(含 bear#39 父追蹤項 child_activity、+08:00 時區偏移) - teai xrefs alterminal/bear-cli 9 實測輸出 9 筆引用(bear#28/#35/#36、bear-cli#5/#10/#11/#12/#35/#36),與描述一致;teai xrefs alterminal/teai 7 亦正常 - xref 邊界:404 → exit 3、非正整數/單段 repo → exit 2、--hours 0 → exit 2,皆實測 - go build/go vet/go test ./... 全綠(workflow 層與 CLI 接線層共 18 個相關測試函式) #7 全範圍(邏輯層 #12 + CLI 層 #24)已達成,關閉本 issue。
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alterminal/teai#7