
# Automatizácia

Automatizácia Rudel zabraňuje tomu, aby sa jednorazové sandboxy hromadili donekonečna. Jedna hodinová udalosť WP-Cron, `rudel_scheduled_cleanup`, môže:

- spustiť pravidlá čistenia (uplynutie platnosti, vek a nečinnosť)
- vyčistiť sandboxy zlúčených vetiev
- nahlásiť sandboxy, ktorým uplynula alebo čoskoro uplynie platnosť

## Konfigurácia

Automatizácia číta tieto kľúče z možnosti `rudel_config`. Úplný zoznam nájdete v časti [Konfigurácia](https://rudel.inline0.dev/sk/docs/configuration).

| Kľúč | Účel | Predvolená hodnota |
|-----|---------|---------|
| `auto_cleanup_enabled` | Spustiť pravidlá čistenia pri každej udalosti | `1` |
| `auto_cleanup_merged` | Odstrániť aj sandboxy s pracovnými vetvami Git, ktoré boli zlúčené | `0` |
| `expiring_environment_notice_days` | Nahlásiť sandboxy, ktorým uplynie platnosť do N dní | `0` |
| `max_age_days` | Vekový limit používaný pravidlami čistenia | `0` |
| `max_idle_days` | Limit nečinnosti používaný pravidlami čistenia | `0` |
| `default_ttl_days` | Platnosť nastavená pre nové sandboxy | `0` |

Pri predvolených nastaveniach je udalosť naplánovaná, ale odstraňuje len sandboxy s výslovne nastaveným dátumom uplynutia platnosti v minulosti, pretože nie je nastavený vekový ani časový limit nečinnosti ani predvolené TTL.

## WP-Cron

Aktivácia naplánuje udalosť a každá požiadavka plán znova skontroluje: udalosť existuje, kým niektorá z hodnôt `auto_cleanup_enabled`, `auto_cleanup_merged` alebo `expiring_environment_notice_days` nie je nulová; inak sa odstráni. Deaktivácia ju odstráni.

Príkazy na automatizáciu neexistujú. Zmeňte nastavenia 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ásenia o uplynutí platnosti

Keď je nastavené `expiring_environment_notice_days`, každé spustenie zhromaždí sandboxy, ktorým `expires_at` uplynie do toľkých dní, a odovzdá ich akcii `rudel_after_automation_expiring_environments`, rozdelené na `expiring` a `expired`. Rudel samo neposiela upozornenia; pripojte k akcii upozorňovanie vlastníkov.

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

## Spustenie teraz

Na deterministické lokálne spustenia alebo spustenia v CI použite manuálne čistenie:

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

Z PHP spúšťa `Rudel::run_automation()` rovnaké úlohy ako udalosť cron.
