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

# Takvim

> Panel takvim görünümü ve doktor Google Calendar senkronizasyonu.

Takvim, randevuların kronolojik olarak görüntülendiği ve oluşturulduğu panel sayfasıdır (`CalendarPage`). Ek olarak doktorun Google Calendar hesabı bağlıysa randevu açıldığında otomatik etkinlik yazılır.

## Panel takvim sayfası

```mermaid theme={null}
flowchart LR
    F[Takvim sayfası] --> V{Görünüm}
    V --> G[Gün]
    V --> H[Hafta]
    V --> A[Ay]
    F --> Y[Yeni Randevu]
    F --> S[Slot tıkla]
    F --> R[Randevu sürükle / boyutlandır]
    R --> RP[Yeniden planla]
```

Sayfadan yapılabilecekler:

* Slot tıklayarak yeni randevu açma
* Randevu sürükleyerek yeniden planlama
* Boyutlandırma ile süreyi değiştirme
* Doktor / oda / tedavi filtresi

## Doktor Google Calendar bağlantısı

Doktor takvimine etkinlik yazımı için Google Calendar entegrasyonu kurulmalıdır.

```mermaid theme={null}
sequenceDiagram
    participant D as Doktor
    participant P as Flextell Paneli
    participant G as Google OAuth

    D->>P: Entegrasyonlar → Takvim → Bağla
    P->>G: OAuth onayı iste (scope: calendar.events)
    G->>D: İzin ekranı
    D->>G: İzin ver
    G-->>P: Access + refresh token
    P-->>D: Takvim bağlandı
```

<Steps>
  <Step title="Doktor olarak panele girin">
    `Entegrasyonlar → Takvim` ekranını açın.
  </Step>

  <Step title="Google ile bağlan">
    "Bağla" butonu Google'ın OAuth onay sayfasına gönderir.
  </Step>

  <Step title="İzinleri kabul edin">
    İstenen tek izin: takvim etkinliği oluşturma/güncelleme/silme.
  </Step>

  <Step title="Varsayılan takvimi seçin (opsiyonel)">
    Birden fazla takviminiz varsa Flextell etkinliklerinin yazılacağı takvimi seçin.
  </Step>
</Steps>

<Warning>
  **Takvim entegrasyonu olmayan doktora randevu açılamaz.** Hem panel randevu formu hem AI booking akışı, aktif `calendar` entegrasyonu olmayan doktoru doktor seçim listesine almaz (`AppointmentForm.php`, `DoctorService::selectDoctor(calendarOnly: true)`).
</Warning>

## Etkinlik içeriği

Flextell, takvime şu bilgileri yazar (`CreateCalendarEventJob`):

| Alan            | İçerik                                |
| --------------- | ------------------------------------- |
| Başlık          | `Hasta Adı — Tedavi Adı`              |
| Tarih/Saat      | `scheduled_at`                        |
| Süre            | Tedavi(ler)in toplam süresinden hesap |
| Konum           | Oda adı (varsa)                       |
| Açıklama        | Randevu kodu + serbest not            |
| Yer (organizer) | Doktor                                |

## Senkronizasyon yönü

```mermaid theme={null}
flowchart LR
    F[Flextell randevu] -->|Oluştur/güncelle/sil| GC[(Google Calendar)]
    GC -.->|Değişiklik geri okunmaz| F
```

<Note>
  Senkronizasyon **tek yönlüdür**: Flextell → Google Calendar. Google'da etkinliği değiştirirseniz Flextell'e yansımaz. Değişiklikler her zaman Flextell üzerinden yapılmalıdır.
</Note>

## Yetki kaybedildiğinde

| Durum                              | Davranış                                                    |
| ---------------------------------- | ----------------------------------------------------------- |
| Doktor Google hesabını revoke etti | Sonraki randevu yazımı hata verir; doktor yeniden bağlamalı |
| Refresh token süresi doldu         | Otomatik yenileme; başarısız olursa hata                    |

Outlook Calendar desteği yol haritasındadır; şu an yalnızca Google Calendar desteklenir.

## API tarafı

Randevu oluşturma sırasında takvime yazım otomatik olur; ek API çağrısı gerekmez. Detay: [API: Randevu oluşturma](/guides/create-appointment).
