import sys import traceback from config import GITEA_REPOSITORY, PR_NUMBER, PR_HEAD_BRANCH, PR_BASE_BRANCH, get_llm_config from roles import load_roles, get_role_intro from gitea import get_pr_diff, post_comment def main(): print("=" * 60) print("🚀 Step1: Pipeline 啟動") print(f" repo={GITEA_REPOSITORY} PR=#{PR_NUMBER}") print(f" {PR_HEAD_BRANCH} -> {PR_BASE_BRANCH}") # 偵測 LLM provider, _, base_url, model = get_llm_config() if not provider: print("❌ 未設定任何 LLM API Key,請檢查 action inputs") sys.exit(1) print(f" LLM: provider={provider} model={model} base_url={base_url}") # 載入角色 roles = load_roles() print(f" 已載入 {len(roles)} 個角色: {[r['name'] for r in roles]}") # 取得 PR diff print("\n📋 Step1: 取得 PR Diff") try: diff = get_pr_diff() print(f" diff 長度: {len(diff)} 字元") except Exception as e: print(f" ❌ 取得 diff 失敗: {e}") sys.exit(1) if not diff.strip(): print(" ⚠️ diff 為空,無需審查") sys.exit(0) # 發布角色介紹 comment print("\n💬 Step1: 發布角色介紹 Comment") try: intro = get_role_intro(roles) intro += f"\n\n> 🔍 服務:{provider} 模型:{model}" post_comment(intro) print(" ✅ 角色介紹 comment 發布成功") except Exception as e: print(f" ⚠️ comment 發布失敗(繼續執行): {e}") print("\n📊 Step2: Findings 產生(待實作)") print(" [stub] 各角色分析 diff...") print("\n🔀 Step3: Findings 合併與去重(待實作)") print(" [stub] 合併新舊 findings...") print("\n📝 Step4: Findings 寫入與 Comment 發布(待實作)") print(" [stub] 寫入 findings.json,發布 comment...") print("\n💾 Step5: 記憶區 Commit/Push(待實作)") print(" [stub] commit & push findings.json...") print("\n🚦 Step6: 嚴重問題檢查(待實作)") print(" [stub] 檢查 critical findings...") print("\n✅ Pipeline 完成") print("=" * 60) if __name__ == "__main__": try: main() except SystemExit: raise except Exception: print("❌ Runner failed:") traceback.print_exc() sys.exit(1)