
# Automatisering

Rudels automatisering forhindrer, at midlertidige sandkasser ophobes for altid. Én WP-Cron-hændelse i timen, `rudel_scheduled_cleanup`, kan:

- køre oprydningspolitikken (udløb, alder og inaktivitet)
- rydde op i flettede grene
- rapportere om sandkasser, der er udløbet eller snart udløber

## Konfiguration

Automatisering læser disse nøgler fra indstillingen `rudel_config`. Den fulde liste findes under [Konfiguration](https://rudel.inline0.dev/da/docs/configuration).

| Nøgle | Formål | Standardværdi |
|-----|---------|---------|
| `auto_cleanup_enabled` | Kør oprydningspolitikken ved hver hændelse | `1` |
| `auto_cleanup_merged` | Fjern også sandkasser med flettede worktree-grene Git | `0` |
| `expiring_environment_notice_days` | Rapportér om sandkasser, der udløber inden for N dage | `0` |
| `max_age_days` | Aldersgrænse, der bruges af oprydningspolitikken | `0` |
| `max_idle_days` | Inaktivitetsgrænse, der bruges af oprydningspolitikken | `0` |
| `default_ttl_days` | Udløbstid, der tildeles nye sandkasser | `0` |

Med standardindstillingerne er hændelsen planlagt, men fjerner kun sandkasser med en udtrykkelig udløbsdato i fortiden, fordi der ikke er angivet nogen alders- eller inaktivitetsgrænse eller standard-TTL.

## WP-Cron

Aktivering planlægger hændelsen, og hver anmodning kontrollerer tidsplanen igen: Hændelsen findes, så længe en af `auto_cleanup_enabled`, `auto_cleanup_merged` eller `expiring_environment_notice_days` er forskellig fra nul, og fjernes ellers. Deaktivering fjerner den.

Der er ingen automatiseringskommandoer. Skift indstillingerne i `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` viser `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` og `Automation scheduled`.

## Udløbsrapporter

Når `expiring_environment_notice_days` er angivet, indsamler hver kørsel sandkasser med en `expires_at` inden for det angivne antal dage og sender dem til handlingen `rudel_after_automation_expiring_environments`, opdelt i `expiring` og `expired`. Rudel sender ikke selv meddelelser; tilknyt handlingen for at underrette ejere.

```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'] );
        }
    }
);
```

## Kør nu

Brug manuel oprydning til forudsigelige lokale kørsler eller CI-kørsler:

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

Fra PHP kører `Rudel::run_automation()` de samme opgaver som hændelsen cron.
