# 用途：CI workflow 的 command-file 草稿，保留原始流程並補上逐行說明。
# 更新時間：2026/07/11 19:00:45
# workflow 名稱，對應 Gitea UI 中的顯示標題。
name: CI
# 定義此 workflow 的觸發事件。
on:
  # 在 pull request 事件時執行。
  pull_request:
    # 只在建立與同步更新 PR 時觸發。
    types: [opened, synchronize]
# workflow 內的工作列表。
jobs:
  # 第一個 job：負責版本計算與 release 發佈。
  build:
    # job 顯示名稱，用來區分執行階段。
    name: 1. BUILD
    # 使用 Ubuntu runner 執行。
    runs-on: ubuntu
    # job 層級環境變數。
    env:
      # 目標分支為 develop 時視為 beta。
      IS_BETA: ${{ gitea.base_ref == 'develop' }}
    # 對外輸出供後續 job 使用。
    outputs:
      # 輸出版本字串。
      version: ${{ env.VERSION }}
      # 輸出是否為 beta。
      is_beta: ${{ env.IS_BETA }}
    # build job 的執行步驟。
    steps:
    # 先依 repo 狀態計算版本號。
    - name: Calculate Version
      # 供後續步驟讀取輸出用的 step id。
      id: calculate-version
      # 使用版本計算 action。
      uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }}
      # 傳入 action 參數。
      with:
        # 告知 action 是否為 beta 分支情境。
        is_beta: ${{ env.IS_BETA }}
    # 依計算出的版本建立 release。
    - name: Publishing Release
      # 使用 release action。
      uses: akkuman/gitea-release-action@${{ vars.ACTION_GITEA_RELEASE_VERSION }}
      # 這個 step 的環境變數。
      env:
        # 取前一步算出的版本號。
        VERSION: ${{ steps.calculate-version.outputs.version }}
      # release action 的參數。
      with:
        # release 名稱。
        name: "${{ gitea.event.repository.name }} v${{ env.VERSION }}"
        # release tag 名稱。
        tag_name: "v${{ env.VERSION }}"
        # 指向目前提交。
        target_commitish: ${{ gitea.sha }}
        # beta 情境時標記為 prerelease。
        prerelease: ${{ env.IS_BETA }}
  # 第二個 job：在 beta 情境執行 AI Code Review。
  test:
    # job 顯示名稱。
    name: 2. TEST
    # 使用 Ubuntu runner。
    runs-on: ubuntu
    # 必須等 build job 完成。
    needs: [build]
    # 只有 beta 情境才執行。
    if: ${{ needs.build.outputs.is_beta == 'true' }}
    # job 層級環境變數。
    env:
      # 使用 build job 輸出的版本號。
      VERSION: ${{ needs.build.outputs.version }}
    # test job 的步驟。
    steps:
    # 安裝或設定 LLM CLI。
    - name: Setup LLM CLI
      # 使用對應的 setup action。
      uses: https://gitea.jsc.idv.tw/actions/setup-${{ vars.ACTION_SETUP_LLM_CLI }}
      # 傳入設定。
      with:
        # LLM CLI 的 OAuth 憑證。
        oauth: ${{ secrets.LLM_OAUTH }}
    # 執行 AI Code Review action。
    - name: Run AI Code Review
      # step id，方便追蹤。
      id: ai-code-review
      # 使用本 repo 發佈的 action。
      uses: https://gitea.jsc.idv.tw/actions/ai-code-review@v${{ env.VERSION }}
      # action 參數。
      with:
        # 存取 Gitea API 的 token。
        token: ${{ secrets.TOKEN }}
        # 指定 LLM 模型名稱。
        model: ${{ vars.LLM_NAME }}
  # 第三個 job：輸出最終版本資訊。
  result:
    # job 顯示名稱。
    name: 3. RESULT
    # 使用 Ubuntu runner。
    runs-on: ubuntu
    # 需等待前兩個 job。
    needs: [build,test]
    # job 層級環境變數。
    env:
      # 延續 build 的版本號。
      VERSION: ${{ needs.build.outputs.version }}
    # result job 的步驟。
    steps:
    # 顯示版本號。
    - name: Show Version
      # 將版本輸出到 log。
      run: echo "$VERSION"
