
# 자동화

Rudel의 자동화는 임시 샌드박스가 끝없이 쌓이지 않도록 관리합니다. 매시간 한 번 실행되는 WP-Cron 이벤트 `rudel_scheduled_cleanup`는 다음 작업을 수행할 수 있습니다:

- 정리 정책 실행(만료, 사용 기간 및 유휴 상태)
- 병합된 브랜치 정리 실행
- 만료되었거나 만료가 임박한 샌드박스 보고

## 구성

자동화는 `rudel_config` 옵션에서 다음 키를 읽습니다. 전체 목록은 [구성](https://rudel.inline0.dev/ko/docs/configuration)에 있습니다.

| 키 | 용도 | 기본값 |
|-----|---------|---------|
| `auto_cleanup_enabled` | 이벤트가 실행될 때마다 정리 정책 실행 | `1` |
| `auto_cleanup_merged` | 병합된 Git 워크트리 브랜치가 있는 샌드박스도 제거 | `0` |
| `expiring_environment_notice_days` | N일 이내에 만료되는 샌드박스 보고 | `0` |
| `max_age_days` | 정리 정책에 사용되는 연령 제한 | `0` |
| `max_idle_days` | 정리 정책에 사용되는 유휴 제한 | `0` |
| `default_ttl_days` | 새 샌드박스에 적용되는 만료 기간 | `0` |

기본 설정에서는 이벤트가 예약되지만, 과거의 만료 시각이 명시된 샌드박스만 제거됩니다. 연령 제한, 유휴 제한 및 기본 TTL이 설정되어 있지 않기 때문입니다.

## WP-Cron

활성화하면 이벤트가 예약되며, 요청이 있을 때마다 예약 상태를 다시 확인합니다. `auto_cleanup_enabled`, `auto_cleanup_merged` 또는 `expiring_environment_notice_days` 중 하나라도 0이 아니면 이벤트가 유지되고, 그렇지 않으면 제거됩니다. 비활성화하면 이벤트가 제거됩니다.

자동화 명령은 없습니다. 설정을 `rudel_config`에서 변경하세요:

```bash
wp option update rudel_config '{"auto_cleanup_enabled":1,"max_idle_days":7,"expiring_environment_notice_days":2}' --format=json
wp rudel status
```

`wp rudel status`은 `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` 및 `Automation scheduled`를 표시합니다.

## 만료 보고

`expiring_environment_notice_days`이 설정되면 각 실행은 그 기간 내에 `expires_at`이 도래하는 샌드박스를 모아 `rudel_after_automation_expiring_environments` 작업에 전달하고, `expiring` 및 `expired`로 나눕니다. Rudel 자체는 알림을 보내지 않습니다. 소유자에게 알리려면 작업에 알림 기능을 연결하세요.

```php
add_action(
    'rudel_after_automation_expiring_environments',
    function ( array $report ): void {
        foreach ( $report['expiring'] as $sandbox ) {
            error_log( $sandbox['id'] . ' expires at ' . $sandbox['expires_at'] );
        }
    }
);
```

## 지금 실행하기

로컬 또는 CI에서 일관된 결과를 얻으려면 수동 정리를 사용하세요:

```bash
wp rudel cleanup --dry-run
wp rudel cleanup
```

PHP에서 `Rudel::run_automation()`은 cron 이벤트와 같은 작업을 실행합니다.
