chenyunda218
|
32c3b30934
|
Merge pull request 'internal/workflow:統一型別宣告,修復 main 編譯失敗(#21)' (#23) from fix/issue21-workflow-types into main
Reviewed-on: #23
|
2026-09-10 11:45:39 +08:00 |
|
ceo
|
4582dfaa4e
|
internal/workflow:統一型別宣告,修復 #12 合併後 main 編譯失敗(#21)
#12 的 workflow.go 與 #13 的 types.go 各自宣告 User/Comment/Issue/
PullRequest/Repository,文字合併無衝突但語意衝突,main 自 a8c1f3e 起
go build 失敗。
統一採 #13 的字串模型(types.go 為唯一型別來源):
- Issue/Comment 補 State/Body/ClosedAt 欄位,新增 parseMoment
(對應 gitea.py _parse_iso8601;保留原時區偏移,輸出與 Python
isoformat 位元組一致)
- workflow.go 移除重複宣告,stalled/xref 邏輯改用該模型與 judge.go
既有輔助(AssigneeNames/ReviewerNames/LastComment/containsString)
- Source 介面 number 改 int64(與 types.go 對齊),cmd/xcheck 同步
- workflow_test.go 測試資料改新型別模型(字串時刻、指標欄位)
驗證:
- go build/go vet/go test ./... 全綠(#6 與 #7 案例皆未回歸)
- xcheck 對真實 API 並行掃描,stalled 輸出與 gitea.py 位元組一致(含
bear-cli#9 父追蹤項子項摘要、+08:00 時區偏移)
- xref 邊界案例(nope#9/PR#50 略過、bear-cli#9 內嵌解析)與 Python 一致
|
2026-09-10 11:32:40 +08:00 |
|
alex
|
47056dda43
|
Merge pull request 'docs:README 補上完整安裝指南(#15)' (#22) from docs/issue15-install-guide into main
|
2026-09-10 11:26:25 +08:00 |
|
ceo
|
9948357f52
|
docs:README 補上完整安裝指南(#15)
|
2026-09-10 10:48:12 +08:00 |
|
alex
|
0b0c3cefcb
|
Merge pull request 'internal/cli:命令保留旗標機制,修正 login add 旗標被全域剖析搶走(#18)' (#20) from fix/issue18-reserved-flags into main
|
2026-09-10 10:37:20 +08:00 |
|
queena
|
a8c1f3e018
|
Merge pull request 'internal/workflow:xref 解析與 stalled 掃描核心邏輯(#7)' (#12) from feat/issue7-stalled-xrefs into main
|
2026-09-10 10:35:35 +08:00 |
|
max
|
0ed6f262c8
|
合併 main(4a34def)並把 exitcode_test.go 四處 extractGlobals 呼叫補上第三參數 nil(#20)
|
2026-09-10 10:32:53 +08:00 |
|
max
|
fb2990dc04
|
Merge remote-tracking branch 'origin/main' into fix/issue18-reserved-flags
|
2026-09-10 10:32:19 +08:00 |
|
ceo
|
67cafcff59
|
cmd/xcheck:帳號改由 /user API 取得,移除 USERNAME 預設 ceo(審核意見)
依 #12 第二輪審核意見:xcheck 原以 USERNAME 環境變數取帳號、
未設時靜默退回 ceo,與 gitea.py find_stalled_work 的
get_current_username()(打 /user 取 token 實際帳號)不同源。
非 ceo 帳號跑 xcheck 時催促冷卻會以錯誤身分套用,造成漏掃,
兩版輸出表面位元組相同實則基準錯誤。
改法:apiSource 新增 CurrentUser(),呼叫 /user 並依
username → login 取值;失敗或取不到帳號即報錯退出,
不靜默退回任何預設。移除 USERNAME 環境變數與 ceo fallback。
驗證:go build/go vet/go test 全綠(16 個測試函式);
USERNAME 未設下 xcheck 與 gitea.py stalled 並行交叉驗證,
輸出位元組相同(1749B cmp IDENTICAL)。
|
2026-09-10 10:30:46 +08:00 |
|
ceo
|
4a34def1f5
|
Merge pull request 'gitea.py 工作流命令 Go 化:whoami/orgs/members/pulls/mine/next(#6)' (#13) from feature/issue6-workflow-commands into main
|
2026-09-10 10:24:21 +08:00 |
|
ceo
|
15c2d35935
|
合併 main(#16/#17)並解 cli.go 衝突
衝突原因:#13(本分支 927855d)與 #16(main 7badd9e)各自實作了
同一問題(帶旗標命令被全域剖析攔下)的抽取式修正。採 main 現行
架構(dispatch 內 extractGlobals)為準,並保留本分支的:
- runVersion 參數檢查(version 不接受參數,TestWiringVersionRejectsArgs)
- workflow 命令與接線層測試(workflow_commands_test.go)
go build/vet/gofmt 綠;單元測試僅餘 main 既有回歸
(3 個 login 測試,#16 合併後即失敗,與本 PR 無關)。
|
2026-09-10 10:22:42 +08:00 |
|
max
|
c4fb641094
|
internal/cli:命令保留旗標機制,login add 的 --url/--token 不再被全域剖析搶走(#18)
|
2026-09-10 10:22:39 +08:00 |
|
queena
|
f7d63d6e8f
|
Merge pull request '測試改斷言具體結束碼數值,對照 README 規格(#10)' (#19) from fix/issue10-exitcode-tests into main
|
2026-09-10 10:20:23 +08:00 |
|
chenyunda218
|
f481377b9a
|
測試改斷言具體結束碼數值,對照 README 規格(#10)
cli_test、dailyops_commands_test、login_test、exitcode_test 原以
int(ExitUsage)/int(ExitAPI)/int(ExitInternal) 常數互比,常數若再
與 README 脫鉤測試仍會綠。改為直接斷言 0/2/3(內部錯誤 1)。
常數本體已隨 #5(6951817)改為明確數值,未知命令實測回 2。
|
2026-09-10 10:12:35 +08:00 |
|
ceo
|
c5d5c37eae
|
Merge pull request '日常操作命令:issues/pulls/labels/milestones/releases/repos/api(#8)' (#16) from feature/issue8-dailyops into main
|
2026-09-10 09:54:23 +08:00 |
|
alex
|
a2be70ea7d
|
Merge pull request '實現 login 指令(#14):tea 相容組態管理' (#17) from feature/issue14-login into main
|
2026-09-10 09:48:43 +08:00 |
|
ceo
|
b2dd2f3aac
|
修正 JSON 位元組相容與 xref Unicode 邊界(審核意見)
依 #12 審核意見修正四項偏差,並補一項同源問題:
1. iterXrefs 前一字元檢查改 Unicode:isWordChar 改用
unicode.IsLetter/IsDigit,且以 utf8 正確解碼前一 rune
(原版只認 ASCII 又取單一位元組)。另補齊 Python finditer
的重試語義:起點被 lookbehind 擋下時從下一 rune 重試,
否則「修復bear-cli#9」會整段丟失(Python 匹配後半 cli#9);
lookbehind 字元集含 #(##5 不匹配)。
2. writeJSON 改 json.Encoder + SetEscapeHTML(false):
Python ensure_ascii=False 不轉義 <、>、&,json.Marshal 預設
會,標題含這些字元即失去位元組相容。
3. stalled_hours 改 strconv.FormatFloat(v,'f',1,64):整數值輸出
48.0(原 %g 輸出 48,極大值還會變 1e+06)。
4. Child.last_activity_at 無可解析時刻時輸出 null(原輸出 ""),
型別改 *string;格式對齊 FormatMoment(UTC 記 +00:00 非 Z)。
5. cmd/xcheck 輸出同樣停用 HTML 轉義(Marshal* 對自訂
MarshalJSON 的輸出仍會轉義)。
驗證:go build/vet/test 全綠(16 測試函式,新增 CJK、##5、
全形數字、HTML 字元、48.0、null 等案例);cmd/xcheck 與
gitea.py stalled 對真實 API 並行掃描輸出位元組相同(1749B,
含 bear-cli#9 父追蹤項與 5 子項摘要);--xrefs 對 CJK
邊界輸入與 Python 一致。
|
2026-09-10 09:47:46 +08:00 |
|
chenyunda218
|
927855d3ca
|
cli:修正帶旗標命令被全域剖析攔下的阻斷問題(#13 審核)
- parseGlobals 改為抽取式 extractGlobals:只取走已知全域選項,非全域
選項(--has-work/--mine/--reviewer/--repo)原樣交回子命令 flagset,
任何順序(含與全域選項交錯)皆可解析;-- 之後停止抽取。
- runVersion 補參數檢查:version --wat 仍回 exit 2。
- workflow:commentsFor 對 number<=0 視為無留言,不打 API(對齊 gitea.py
在 number 缺漏時跳過留言檢查,避免 issues/0/comments 404 中斷掃描)。
- 新增 internal/cli/workflow_commands_test.go:以注入假 client 的接線層
測試補上 workflow 單元測試覆蓋不到的分派路徑(members --has-work、
pulls --mine/--reviewer/--repo、全域選項交錯、next null/table)。
- README:註明與 gitea.py 的已知輸出差異(空清單 [] vs 無輸出;
全域選項可出現在命令前後)。
實機交叉驗證(alex):members --has-work、pulls --mine/--reviewer、
pulls --repo、next、mine 兩者輸出一致;go vet/test 全綠。
|
2026-09-10 09:41:53 +08:00 |
|
ceo
|
f8fc16ae49
|
實現 login 指令(#14):tea 相容組態管理
- internal/gitea/config.go:tea 組態的行級編輯引擎(新增/更新/
設預設/移除),未知欄位與 preferences 區段逐字保留;原子寫入
(暫存檔 + rename,0600)。
- internal/cli/login.go:teai login list/add/default/remove。add 先以
token 呼叫 GET /user 驗證,成功才寫入並記下帳號;未給 --token 時
自 stdin 讀一行;401 結束碼 3。未給 --name 時同站既有項目就地更新。
- 輸出欄位 name/url/user/default,永不輸出 token。
- 測試:編輯引擎 12 項、指令層 11 項(httptest 假 API),並以真 tea
驗證 teai 寫出的組態可互通(tea whoami 讀出同帳號)。
Closes #14
|
2026-09-10 09:32:53 +08:00 |
|
alex
|
c311f02e0f
|
合併 main(#4 藍圖修訂)並整合 README:日常操作段落以 #8 實作內容為準
|
2026-09-10 09:20:44 +08:00 |
|
alex
|
7badd9e46d
|
internal/dailyops + cli:日常操作命令 issues/pulls/labels/milestones/releases/repos/api(#8)
- 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 驗證後清理)
|
2026-09-10 09:19:03 +08:00 |
|
chenyunda218
|
a7952c6834
|
Merge pull request '藍圖修訂:不再避開 tea 已有的功能(#3)' (#4) from docs/issue3-tea-parity into main
Reviewed-on: #4
|
2026-09-10 08:54:33 +08:00 |
|
chenyunda218
|
5583a00bb5
|
internal/workflow + cli:gitea.py 工作流命令 Go 化(#6)
- 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 為基底
|
2026-09-10 08:39:35 +08:00 |
|
ceo
|
afdead46e2
|
Merge pull request 'internal/gitea:API 用戶端、認證與輸出基礎(#5)' (#11) from feature/issue5-gitea-client into main
|
2026-09-10 08:39:02 +08:00 |
|
ceo
|
a86803d336
|
internal/workflow:xref 解析與 stalled 掃描核心邏輯(#7)
完整移植 gitea.py 的 _resolve_xref_targets 與 find_stalled_work:
- xref:#N/repo#N/owner/repo#N;單段 repo 僅在存在於組織時解析
(PR#50、issue#49 這類寫法自動略過);owner 需為所屬組織。
Go regexp 無 lookbehind,掃描時檢查前一字元等價實作。
- stalled:reason 分類(issue:no-assignee/assignee-idle/no-commenter/
waiting-outside/parent-tracking;PR:no-reviewer/author-idle/
reviewer-idle/no-commenter)、24h 催促冷卻、父追蹤項把子項活動
(留言、state 變更、PR 合併)計入 last_activity、上行引用不採計。
- 資料以 Source 介面注入:邏輯離線可測,CLI 接線待 #5 基礎建設。
- 輸出 JSON 與 gitea.py 位元組相容(鍵序、assignees/author 欄位、
isoformat 時刻、round(x,1) 半偶數舍入)。
- cmd/xcheck:交叉驗證工具(--xrefs 與停滯掃描模式),已對真實 API
與 gitea.py 並行比對,輸出一致。
go build/vet/test 全綠;單元測試覆蓋 xref 邊界與 stalled 判定。
|
2026-09-10 08:36:31 +08:00 |
|
max
|
6951817313
|
internal/gitea:API 用戶端、認證與輸出基礎(#5)
- internal/gitea:僅標準庫的 HTTP 用戶端;ListAll 以 limit=50 逐頁抓滿
- 認證選序 --token → TEAI_TOKEN → tea 組態(--config/TEA_CONFIG/預設路徑);
token 不入輸出、日誌與錯誤訊息
- 共用輸出 --output json|table(預設 json)、--timeout(預設 30s)
- CLI 結束碼 0/2/3:用法錯誤 → 2、API 錯誤(*gitea.ErrAPI)→ 3
- 單元測試:認證選序、tea 組態解析、分頁、逾時/401/5xx 錯誤映射、輸出
實作 issue #5
|
2026-09-10 08:20:08 +08:00 |
|
ceo
|
9e46d233fb
|
藍圖修訂:不再避開 tea 已有的功能(#3)
- 原則一改為「功能自主完整」:teai 自行實作完整功能集,不因 tea 已有而略過
- 新增「日常操作(tea 對等指令)」指令表:issues/pulls/labels/milestones/releases/repos/api
- README 頂部與狀態區補範圍說明(#3)
|
2026-09-10 08:13:10 +08:00 |
|
chenyunda218
|
14edef066b
|
Merge pull request '初始化專案:Go 骨架與 CLI 進入點' (#2) from init/project into main
Reviewed-on: #2
|
2026-09-10 08:05:06 +08:00 |
|
ceo
|
2c851186d8
|
README:加入指令集設計(gitea.py 工作流的 Go 化藍圖)
|
2026-09-10 08:02:26 +08:00 |
|
 ceoandchenyunda218
|
bc46620d04
|
初始化專案:Go 模組骨架、CLI 進入點、README、測試
- go.mod(module gitea.alterminal.com/alterminal/teai,Go 1.26)
- cmd/teai/main.go:程式進入點,結束碼交由 internal/cli.Run 處理
- internal/cli:命令列架構(引數剖析、子命令分派、version 命令)
- internal/cli/cli_test.go:用法輸出、version、未知命令等基本測試
- README.md:專案說明、建置與開發慣例(繁體中文)
- .gitignore:建置產物、測試輸出、環境檔
- 僅使用標準庫,可離線建置;授權待維護者選定
Refs #1
|
2026-09-09 23:06:39 +08:00 |
|
ceo
|
50c428a2ba
|
引導:建立 main 分支(空 commit,內容由 PR #2 帶入)
|
2026-09-09 22:47:03 +08:00 |
|