
# Töövoogude sündmuste logi

Töövoo sündmuste logi salvestab jälje iga püsiva töövoopiiri kohta. Iga jäljesündmus võib sisaldada sammu sisendit ja väljundit, avalikku olekut enne ja pärast sammu, käituskonteksti, artefaktiviiteid, voogedastatud tükke, ajastust ja tõrke üksikasju.

## Mida salvestatakse

| Sündmus | Millal | Salvestatud andmed |
|---|---|---|
| `step_started` | Enne sammu käsitleja käivitamist | Töö ID, järjekord, katse, sammu nimi, sammu tüüp, sisend ja olek enne käivitamist |
| `step_completed` | Pärast sammu käsitleja edukat käivitamist | Sisend, väljund, olek enne ja pärast, kontekst, artefaktid, tükid ja kestus |
| `step_failed` | Kui sammu käsitleja tekitab erindi | Sisend, olek enne ja pärast (kui saadaval), kontekst, vea klass, veateade, jälg ja kestus |
| `step_branch_completed` | Kui paralleelharu käivitub edukalt | Haru sisend ja väljund, olek enne ja pärast, kontekst ja kestus |
| `step_item_completed` | Kui iga üksik element käivitub edukalt | Elemendi sisend ja väljund, olek enne ja pärast, elemendi metaandmed, kontekst ja kestus |
| `workflow_waiting` | Kui ootamissamm peatab käivituse | Ootamise tüüp, ootamise sihtmärgid ja režiim, tulemuse võti, sobitamise metaandmed ning ootel olek |
| `workflow_resumed` | Kui ootamissamm on täidetud | Jätkamise andmestik, olek enne jätkamist ja olek pärast jätkamist |
| `workflow_replayed` | Ekspordi uuesti loomisel | Lähte töövoo metaandmed ja taasesituse olek |

## Ajajoone päringud

```php
$events = Queuety::workflow_timeline( $workflow_id );

foreach ( $events as $event ) {
    echo $event['step_index'] . ' ' . $event['event'] . ' ' . $event['handler'] . "\n";

    if ( 'step_completed' === $event['event'] ) {
        $input        = $event['input'];
        $output       = $event['output'];
        $state_before = $event['state_before'];
        $state_after  = $event['state_after'];
    }

    if ( 'step_failed' === $event['event'] ) {
        echo 'Error: ' . $event['error']['message'] . "\n";
    }
}
```

Iga sündmuse rida sisaldab järgmist:

- `id`
- `workflow_id`
- `job_id`
- `parent_event_id`
- `step_index`
- `step_name`
- `step_type`
- `handler`
- `event`
- `queue`
- `attempt`
- `input`
- `output`
- `state_before`
- `state_after`
- `context`
- `artifacts`
- `chunks`
- `error`
- `duration_ms`
- `created_at`

## Normaliseeritud jäljepakett

Kasuta töövoo siluri UI koostamisel `workflow_trace()`:

```php
$trace = Queuety::workflow_trace( $workflow_id );
```

Jäljepakett sisaldab järgmist:

- `workflow`
- `steps`
- `events`
- `jobs`
- `logs`
- `artifacts`
- `chunks`
- `signals`
- `wait_dependencies`

`steps` rühmitab sündmused sammuindeksi järgi ja lisab iga sammu kohta uusima olulise sündmuse.

## Sammu oleku otsing

```php
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
```

See tagastab selle sammu viimase lõpetatud või jätkatud sündmuse avaliku `state_after`-i või väärtuse `null`, kui olekut ei salvestatud.

## Käitusaja jälje metaandmed

Käsitlejad saavad töö käigus lisada rakenduse taseme jälje üksikasju:

```php
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
```

Sammukäsitlejad saavad tagastada ka reserveeritud jälje metaandmeid:

```php
return [
    'result' => 'done',
    '_queuety_trace' => [
        'input' => [ 'resolved' => $resolved_input ],
        'context' => [ 'node_id' => 'loadPost' ],
        'artifacts' => [
            [ 'key' => 'brief', 'kind' => 'markdown' ],
        ],
    ],
];
```

Võti `_queuety_trace` salvestatakse sündmuste logisse ega liideta töövoo olekusse.

## CLI

Vaata ajajoont tabelina:

```bash
wp queuety workflow timeline 42
```

Vaata sammu järgset olekut:

```bash
wp queuety workflow state-at 42 0
```

## Säilitamine

Sündmuste logid kogunevad aja jooksul. Kasuta `prune()` vanade jäljesündmuste kustutamiseks:

```php
$deleted = Queuety::workflow_events()->prune( 30 );
```
