
# Automatizace

Automatizace Rudel brání neustálému hromadění dočasných sandboxů. Jedna hodinová událost WP-Cron, `rudel_scheduled_cleanup`, může:

- spustit zásady úklidu (končící platnost, stáří a nečinnost)
- spustit úklid větví sloučených do hlavní větve
- nahlásit sandboxy, jejichž platnost skončila nebo brzy skončí

## Konfigurace

Automatizace načítá tyto klíče z volby `rudel_config`. Úplný seznam najdete v části [Konfigurace](https://rudel.inline0.dev/cs/docs/configuration).

| Klíč | Účel | Výchozí hodnota |
|-----|---------|---------|
| `auto_cleanup_enabled` | Spustí zásady úklidu při každé události | `1` |
| `auto_cleanup_merged` | Navíc odstraní sandboxy s propojenými pracovními větvemi Git, které byly sloučeny | `0` |
| `expiring_environment_notice_days` | Nahlásí sandboxy, jejichž platnost skončí během N dní | `0` |
| `max_age_days` | Limit stáří používaný zásadami úklidu | `0` |
| `max_idle_days` | Limit nečinnosti používaný zásadami úklidu | `0` |
| `default_ttl_days` | Doba platnosti přidělená novým sandboxům | `0` |

Při výchozím nastavení je událost naplánována, ale odstraní pouze sandboxy s výslovně nastavenou dobou platnosti v minulosti, protože není nastaven limit stáří ani nečinnosti ani výchozí TTL.

## WP-Cron

Aktivace naplánuje událost a každý požadavek její plán znovu ověří: událost existuje, pokud je některá z hodnot `auto_cleanup_enabled`, `auto_cleanup_merged` nebo `expiring_environment_notice_days` nenulová; jinak se odstraní. Deaktivace ji odstraní.

Příkazy pro automatizaci nejsou k dispozici. Změňte nastavení v `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` zobrazuje `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` a `Automation scheduled`.

## Hlášení o končící platnosti

Je-li nastavena hodnota `expiring_environment_notice_days`, každé spuštění shromáždí sandboxy, jejichž `expires_at` nastane během daného počtu dní, a předá je akci `rudel_after_automation_expiring_environments` rozdělené na `expiring` a `expired`. Rudel samo oznámení neodesílá; napojte na tuto akci upozornění vlastníků.

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

## Okamžité spuštění

Pro předvídatelná místní spuštění nebo běhy CI použijte ruční úklid:

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

Z PHP spustí `Rudel::run_automation()` stejné úlohy jako událost cron.
