> ## 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.

# Randevu açma akışı

> Hastadan gelen ilk mesajdan onaylı randevuya uçtan uca akış.

Bir randevu yalnızca panelden manuel açılmaz — Flextell'in en güçlü senaryosu, hastadan gelen mesajın **AI asistan üzerinden** randevuya dönüşmesidir. Bu sayfa hem kanaldan hem panelden açılan akışı yan yana gösterir.

## Uçtan uca akış (AI ile)

```mermaid theme={null}
sequenceDiagram
    actor H as Hasta
    participant K as Kanal (WA/TG)
    participant F as Flextell
    participant AI as AI Asistan
    participant O as Firma

    H->>K: "Yarın için randevu alabilir miyim?"
    K->>F: Mesaj
    F->>AI: İçeriği değerlendir
    AI->>H: "Hangi tedavi? Hangi gün uygun?"
    H->>AI: "Diş temizliği, Cuma öğleden sonra"
    AI->>F: Uygun slot bul
    F-->>AI: 3 uygun slot
    AI->>H: Slot seçenekleri
    H->>AI: "15:00 olsun"
    AI->>F: Randevu oluştur (pending)
    F->>GC[(Google Calendar)]: Etkinlik yaz
    F->>H: "Randevunuz oluşturuldu — 25 Nisan 15:00"
```

## Firma tarafından panelden

<Steps>
  <Step title="Hastayı seç">
    Takvimde boş slotu tıklayın ya da hasta profilinden "Yeni Randevu".
  </Step>

  <Step title="Doktor & tedavi seç">
    Açılır listeden doktorun atanmış tedavilerinden seçim yapın.
  </Step>

  <Step title="Saati seç">
    Açılır listede yalnızca müsait slotlar listelenir; dolu olanlar `(Dolu)`, geçmiş saatler `(Geçmiş)` etiketiyle gri görünür ve seçilemez. Çalışma saatleri dışına da slot oluşturulmaz.
  </Step>

  <Step title="Kaydet">
    `pending` durumunda yaratılır; doktorun Google Calendar'ına etkinlik yazılır; hasta hatırlatma akışına alınır.
  </Step>
</Steps>

## Slot seçim kuralları

Saat seçim listesi, formdaki seçili gün ve doktor için **müsait slotları** gösterir. Müsait olmayan saatler ya hiç listelenmez ya da etiketle işaretlenir:

| Senaryo                                                          | Davranış                                                                                                      |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| Firmanın çalışma saatleri dışı (ör. kapalı gün, mesai dışı saat) | Slot **listede gösterilmez** — `getWorkingHours()` o güne çalışma saati döndürmezse seçenek listesi boş kalır |
| Geçmiş tarih/saat                                                | Slot `(Geçmiş)` etiketiyle gösterilir — seçilemez                                                             |
| Doktorun aynı zaman aralığında başka randevusu                   | Slot `(Dolu)` etiketiyle gösterilir — seçilemez (15 dakikalık granülasyon, `getCalendarOnlyBusySlots`)        |
| Doktorda aktif takvim entegrasyonu yok                           | Doktor **doktor seçim listesinde** zaten görünmez — bkz. [Takvim](/documentation/appointments/calendar)       |

Slot uzunluğu firma ayarındaki `SLOT_DURATION` (varsayılan slot süresi) ile belirlenir.

## Durum geçişleri

Randevu yaratıldıktan sonra şu aksiyonlar mümkündür:

| Aksiyon                             | Sonuç durum        | Takvim etkisi    |
| ----------------------------------- | ------------------ | ---------------- |
| Firma panelden onayladı             | `approved`         | —                |
| Firma reddetti                      | `rejected`         | Etkinlik silinir |
| Randevu zamanı geçti, hasta gelmedi | `no_show` (manuel) | Etkinlik kalır   |
| Firma/hasta iptal etti              | `cancelled`        | Etkinlik silinir |
| Tedavi tamamlandı                   | `completed`        | Etkinlik kalır   |

## API tarafı

Kod tarafından açmak için bkz. [API rehberi: Randevu oluşturma](/guides/create-appointment).

## Sonraki adımlar

<CardGroup cols={2}>
  <Card title="Takvim senkronizasyonu" icon="rotate" href="/documentation/appointments/calendar">
    Google Calendar bağlama ve eşleme kuralları.
  </Card>

  <Card title="Hatırlatmalar" icon="bell" href="/documentation/appointments/reminders">
    Hatırlatma şablonları ve zamanlamaları.
  </Card>
</CardGroup>
