
# Αρχείο συμβάντων ροής εργασίας

Το αρχείο συμβάντων της ροής εργασίας καταγράφει ένα ίχνος για κάθε διατηρήσιμο όριο της ροής. Κάθε συμβάν ίχνους μπορεί να περιλαμβάνει την είσοδο και την έξοδο του βήματος, τη δημόσια κατάσταση πριν και μετά το βήμα, το περιβάλλον εκτέλεσης, αναφορές τεχνουργημάτων, τμήματα ροής, χρονικά στοιχεία και λεπτομέρειες σφάλματος.

## Τι καταγράφεται

| Συμβάν | Πότε | Καταγεγραμμένα δεδομένα |
|---|---|---|
| `step_started` | Πριν εκτελεστεί ο χειριστής βήματος | Αναγνωριστικό εργασίας, ουρά, προσπάθεια, όνομα βήματος, τύπος βήματος, είσοδος και κατάσταση πριν από την εκτέλεση |
| `step_completed` | Μετά την επιτυχή εκτέλεση του χειριστή βήματος | Είσοδος, έξοδος, κατάσταση πριν, κατάσταση μετά, περιβάλλον, τεχνουργήματα, τμήματα και διάρκεια |
| `step_failed` | Όταν ο χειριστής βήματος προκαλέσει εξαίρεση | Είσοδος, κατάσταση πριν, κατάσταση μετά όταν είναι διαθέσιμη, περιβάλλον, κλάση σφάλματος, μήνυμα σφάλματος, ίχνος και διάρκεια |
| `step_branch_completed` | Όταν ένας παράλληλος κλάδος ολοκληρωθεί επιτυχώς | Είσοδος κλάδου, έξοδος, κατάσταση πριν, κατάσταση μετά, περιβάλλον και διάρκεια |
| `step_item_completed` | Όταν ένα στοιχείο επανάληψης ολοκληρωθεί επιτυχώς | Είσοδος στοιχείου, έξοδος, κατάσταση πριν, κατάσταση μετά, μεταδεδομένα στοιχείου, περιβάλλον και διάρκεια |
| `workflow_waiting` | Όταν ένα βήμα αναμονής θέτει σε αναμονή την εκτέλεση | Τύπος αναμονής, στόχοι αναμονής, λειτουργία αναμονής, κλειδί αποτελέσματος, μεταδεδομένα αντιστοίχισης και κατάσταση κατά την αναμονή |
| `workflow_resumed` | Όταν ικανοποιηθεί ένα βήμα αναμονής | Ωφέλιμο φορτίο συνέχισης, κατάσταση πριν από τη συνέχιση και κατάσταση μετά τη συνέχιση |
| `workflow_replayed` | Όταν αναδημιουργείται μια εξαγωγή | Μεταδεδομένα πηγαίας ροής εργασίας και κατάσταση επανάληψης |

## Αναζήτηση στο χρονολόγιο

```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";
    }
}
```

Κάθε γραμμή συμβάντος περιέχει:

- `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`

## Κανονικοποιημένο σύνολο ιχνών

Χρησιμοποιήστε το `workflow_trace()` κατά τη δημιουργία ενός εργαλείου εντοπισμού σφαλμάτων UI:

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

Το σύνολο ιχνών περιλαμβάνει:

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

Το `steps` ομαδοποιεί τα συμβάντα ανά ευρετήριο βήματος και περιλαμβάνει το πιο πρόσφατο σημαντικό συμβάν για κάθε βήμα.

## Αναζήτηση κατάστασης βήματος

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

Αυτό επιστρέφει τη δημόσια κατάσταση `state_after` από το πιο πρόσφατο ολοκληρωμένο ή συνεχιζόμενο συμβάν για το συγκεκριμένο βήμα ή το `null` αν δεν καταγράφηκε κατάσταση.

## Μεταδεδομένα ιχνών εκτέλεσης

Οι χειριστές μπορούν να προσθέτουν λεπτομέρειες ιχνών σε επίπεδο εφαρμογής κατά την εκτέλεσή τους:

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

Οι χειριστές βημάτων μπορούν επίσης να επιστρέφουν δεσμευμένα μεταδεδομένα ιχνών:

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

Το κλειδί `_queuety_trace` αποθηκεύεται στο αρχείο συμβάντων και δεν συγχωνεύεται με την κατάσταση της ροής εργασίας.

## CLI

Δείτε το χρονολόγιο ως πίνακα:

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

Δείτε την κατάσταση μετά από ένα βήμα:

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

## Διατήρηση

Τα αρχεία συμβάντων συσσωρεύονται με τον καιρό. Χρησιμοποιήστε το `prune()` για να διαγράψετε παλιά συμβάντα ιχνών:

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