> ## Documentation Index
> Fetch the complete documentation index at: https://docs.azalt.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Zamanlanmis Gorev Calismasi

> Gunlukler, cikti ve zamanlama bilgileri dahil cron gorev calismalari icin gecmis kayitlari.

### Zamanlanmis Gorev Calismasi (Cron Job Execution)

Zamanlanmis Gorev Calismalari, bir cron gorevinin her calistirildigindaki gecmis kayitlaridir. Calisma durumunu, konsol gunluklerini, donus degerlerini, zamanlama bilgilerini ve olusan hatalari yakalar.

#### Bir Bakista

* Her zamanlanmis ve manuel calismayi kaydeder
* Konsol ciktisini ve betik donus degerlerini yakalar
* Calisma suresini ve durumunu takip eder
* Durum ve tetikleme tipine gore filtrelemeyi destekler
* Hata ayiklama ve izleme icin faydali

#### Veri Yapisi

```typescript theme={null}
// apps/azalt/src/server/db/types/cron-job.ts (basitlestirilmis)
interface CronJobExecution {
  id: string;
  cronJobId: string;
  status: "running" | "success" | "failed" | "timeout";
  triggerType: "scheduled" | "manual";
  triggeredById: string | null;    // Manuel tetiklemeler icin kullanici ID'si
  startedAt: Date;
  finishedAt: Date | null;
  executionTimeMs: number | null;  // Milisaniye cinsinden sure
  logs: string | null;             // Konsol ciktisi
  error: string | null;            // Basarisizsa hata mesaji
  output: JsonValue | null;        // Betikten donus degeri
}
```

#### Calisma Durumu

| Durum     | Aciklama                         |
| --------- | -------------------------------- |
| `running` | Su anda calisiyor (devam ediyor) |
| `success` | Hatasiz tamamlandi               |
| `failed`  | Bir hata nedeniyle sonlandirildi |
| `timeout` | 5 dakikalik zaman sinirini asti  |

#### Tetikleme Tipleri

| Tip         | Aciklama                                                   | `triggeredById`    |
| ----------- | ---------------------------------------------------------- | ------------------ |
| `scheduled` | Zamanlayici tarafindan otomatik calistirma                 | `null`             |
| `manual`    | Kullanici tarafindan arayuz veya API uzerinden baslatilmis | Kullanicinin ID'si |

#### Gunlukler ve Cikti

**Konsol Gunlukleri**: Tum `console.log()`, `console.error()`, vb. cagrilar yakalanir:

```javascript theme={null}
// Cron gorev kodunuzda
console.log('Veri senkronizasyonu baslatiliyor...');
console.log(`${items.length} oge isleniyor`);
console.error('Uyari: API hiz siniri yaklasiyori');

// Bunlar execution.logs'ta su sekilde gorunur:
// [2024-01-15T10:30:00.000Z] Veri senkronizasyonu baslatiliyor...
// [2024-01-15T10:30:01.234Z] 150 oge isleniyor
// [2024-01-15T10:30:02.567Z] Uyari: API hiz siniri yaklasiyoru
```

**Donus Degeri**: Betigin donus degeri `output`'ta saklanir:

```javascript theme={null}
// Cron gorev kodunuzda
const results = await processData();
return {
  processed: results.length,
  errors: results.filter(r => r.error).length,
  timestamp: new Date().toISOString()
};

// Bu nesne execution.output'ta saklanir
```

#### Calisma Istatistikleri

Ust CronJob, calismalardan toplu istatistikler icerir:

```typescript theme={null}
interface ExecutionStats {
  totalExecutions: number;      // Tum zamanlarin calisma sayisi
  successCount: number;         // Basarili calismalar
  failedCount: number;          // Basarisiz calismalar
  lastSuccess: Date | null;     // En son basari
  lastFailure: Date | null;     // En son basarisizlik
  avgExecutionTimeMs: number | null;  // Ortalama sure
}
```

#### Guvenlik ve Izinler

* **Goruntuleme**: Herhangi bir organizasyon uyesi calisma gecmisini gorebilir
* **Olusturma**: Yalnizca sistem (zamanlayici veya manuel tetikleme yoluyla)
* **Silme**: Desteklenmiyor (denetim izi korunur)

#### API Notlari

* `cronJob.listExecutions`: Durum ve tetikleme tipine gore filtreleme ile sayfalandirilmis liste
* `cronJob.getExecution`: Gunlukler ve cikti dahil tam calisma detaylari
* `cronJob.get`: Son calismalar ve toplu istatistikleri icerir

#### Izleme En Iyi Uygulamalari

1. **Basarisizlik kaliplarini kontrol edin**: Belirli zamanlarda yinelenen hatalara bakin
2. **Calisma suresini izleyin**: Ani artislar sorunlari gosterebilir
3. **Gunlukleri duzenliolarak inceleyin**: Uyarilari basarisizlik olmadan once yakalay
4. **Uyarilar kurun**: Harici izlemeyi tetiklemek icin ciktiyi kullanin
5. **Basari oranlarini takip edin**: `successCount / totalExecutions` hesaplayin

#### Ornek: Basarisiz Bir Calismayi Hata Ayiklama

```typescript theme={null}
// API uzerinden calisma detaylarini al
const execution = await api.cronJob.getExecution({ id: 'exec-123' });

// Durum ve hatayi kontrol et
if (execution.status === 'failed') {
  console.log('Hata:', execution.error);
  console.log('Gunlukler:', execution.logs);
  console.log('Sure:', execution.executionTimeMs, 'ms');
}

// Zaman asimi sorunlari icin
if (execution.status === 'timeout') {
  console.log('Gorev 5 dakikalik siniri asti');
  console.log('Son gunluklenen cikti:', execution.logs);
}
```

#### Ilgili Kavramlar

* CronJob - Ust zamanlanmis otomasyon gorevi
* CronJobVariable - Ortam degiskenleri ve gizli degerler
