Files
code-review/app/main.py
T
jiantw83 1324f1575d feat: 階段一 - 基本流程串接骨架
- 重寫 action.yaml:支援所有 LLM providers 的 inputs
- 重寫 Dockerfile:python:3.11-slim + git
- 重寫 entrypoint.sh:啟動 app/main.py
- app/config.py:環境變數與 LLM 自動偵測
- app/llm.py:OpenAI-compatible 統一介面
- app/gitea.py:PR diff 取得與 comment 發布
- app/roles.py:從 prompts/roles/*.yaml 載入角色
- app/main.py:pipeline 骨架,log 每個主要階段
- app/prompts/roles/:五個角色定義(Aria/Rex/Zara/Leo/Maya)
2026-05-11 07:23:06 +00:00

76 lines
2.3 KiB
Python

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)