name: auto-merge

# feature/* → develop 的自动合并（应急手动入口）
#
# **常态触发**：本 workflow **不再走 schedule cron**。日常自动合由两台
# dedicated runner 上的 systemd timer + auto-merge daemon 负责
# （docs/ops/03-auto-merge-daemon.md）。
#
# 本 workflow 仅保留 workflow_dispatch，作为以下场景的应急入口：
#   - 两台 daemon 同时挂（系统级故障）
#   - 调试 / dry-run 验证判定逻辑变更
#   - 临时强制扫一次（不想等下个 5min tick）
#
# 判定条件（全部满足才合，详见 scripts/ops/auto-merge-develop.py）：
#   1. base == develop 且 state == open
#   2. mergeable == true（false / None 走 update 分支）
#   3. 所有 required status check == success
#   4. 最新 AIBot review verdict 严格匹配 "pass"
#   5. PR 没有 REQUEST_CHANGES review
#   6. PR 作者 != AIBot（防递归）
#   7. PR 没有 label 'do-not-auto-merge'
#
# 合并方式：squash。同时把"7/7 但 base outdated"的 PR 自动 update_branch。
#
# 临时禁用：
#   - 单个 PR：加 label 'do-not-auto-merge'
#   - 全局停 daemon：见 docs/ops/03-auto-merge-daemon.md § 4.4
#
# 前置：
#   1. Gitea secret AI_REVIEW_GITEA_TOKEN 已配置（AIBot PAT，scope:
#      write:repository + read:user）——复用现有 secret
#   2. AIBot 已加入 develop 分支保护的 merge_whitelist

permissions:
  contents: write
  pull-requests: write

# 跟 daemon 同时跑也安全：Gitea API 自带 409 幂等
concurrency:
  group: auto-merge-develop
  cancel-in-progress: false

on:
  workflow_dispatch:
    inputs:
      dry-run:
        description: 'dry-run（不真合）'
        required: false
        default: 'false'
        type: choice
        options: [ 'false', 'true' ]

jobs:
  auto-merge:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Run auto-merge
        env:
          GITEA_API_TOKEN: ${{ secrets.AI_REVIEW_GITEA_TOKEN }}
          DRY_RUN: ${{ github.event.inputs.dry-run == 'true' && '1' || '' }}
        run: python3 scripts/ops/auto-merge-develop.py
