name: AI Code Review

on:
  pull_request:
    types:
      - opened
      - synchronize
      - reopened

# 同一个 PR 只跑一个 review，新的取消旧的
concurrency:
  group: code-review-${{ gitea.repository }}-${{ gitea.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  code-review:
    name: AI Code Review
    runs-on: ci-l2
    # 跳过草稿 PR
    if: ${{ !gitea.event.pull_request.draft }}

    steps:
      # actions/checkout 由 runner 在宿主机层面处理，不受容器网络影响
      - name: Checkout code
        shell: sh
        env:
          GITHUB_TOKEN: ${{ github.token }}
        run: |
          curl -sH "Authorization: token $GITHUB_TOKEN"             "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/raw/scripts/ci/step_checkout.sh?ref=${GITHUB_SHA}"             | bash

      - name: Install dependencies
        run: |
          # 确保 python3-pip 可用（兼容不同基础镜像）
          if ! python3 -m pip --version >/dev/null 2>&1; then
            apt-get update -qq && apt-get install -y -qq python3-pip python3-venv >/dev/null 2>&1
          fi
          # 部分镜像 ensurepip 方式兜底
          if ! python3 -m pip --version >/dev/null 2>&1; then
            python3 -m ensurepip --upgrade 2>/dev/null || curl -sS https://bootstrap.pypa.io/get-pip.py | python3
          fi
          python3 -m pip install --upgrade pip
          python3 -m pip install requests

      - name: Run AI Code Review
        env:
          # Gitea 配置（自动从运行环境获取）
          GITEA_API_URL: ${{ gitea.server_url }}
          GITEA_TOKEN: ${{ secrets.REVIEW_GITEA_TOKEN }}
          REPO_NAME: ${{ gitea.repository }}
          PR_NUMBER: ${{ gitea.event.pull_request.number }}
          # LLM 提供商: coze (扣子原生Bot) / openai (OpenAI兼容)
          LLM_PROVIDER: "coze"
          # 扣子模式配置（默认国内站 api.coze.cn）
          LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
          LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
          COZE_BOT_ID: ${{ secrets.COZE_BOT_ID }}
          LLM_MODEL: ${{ secrets.LLM_MODEL }}
          # 可选参数
          MAX_DIFF_CHARS: "30000"
          LLM_TIMEOUT: "120"
        run: |
          python3 scripts/ci_code_review.py
        # 审查脚本异常不影响 CI 通过
        continue-on-error: true

      - name: Report CI trace
        if: always()
        shell: sh
        env:
          AGENTLOOP_LICENSE_KEY: ${{ secrets.AGENTLOOP_LICENSE_KEY }}
        run: |
          STATUS="ok"
          [ ${{ job.status }} = "success" ] || STATUS="error"
          START_TIME=""
          [ -f /tmp/ci_job_start_time ] && START_TIME=$(cat /tmp/ci_job_start_time)
          python3 scripts/ci/ci_trace_report.py --service xiaoxia-saas-ci --status $STATUS --start-time "$START_TIME" || true

