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 判定。