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

# Randevular — Genel Bakış

> Randevu modelinin yapısı, yaşam döngüsü ve takvim ile ilişkisi.

Randevu, **hasta + doktor + tedavi + saat** dörtlüsünden oluşan ana operasyonel kayıttır. Açıldığında doktorun bağlı Google Calendar'ına otomatik etkinlik yazılır; tamamlandığında ona bağlı satış kesilir.

## Yaşam döngüsü

```mermaid theme={null}
stateDiagram-v2
    [*] --> pending: Oluşturuldu
    pending --> approved: Firma onayladı
    pending --> rejected: Reddedildi
    pending --> cancelled: İptal
    approved --> completed: Tedavi yapıldı
    approved --> no_show: Hasta gelmedi
    approved --> cancelled: İptal
    completed --> [*]
    cancelled --> [*]
    rejected --> [*]
    no_show --> [*]
```

| Durum       | Etiket       | Anlamı                                          |
| ----------- | ------------ | ----------------------------------------------- |
| `pending`   | Bekliyor     | Oluşturuldu, henüz firma tarafından onaylanmadı |
| `approved`  | Onaylandı    | Firma panelden onayladı                         |
| `rejected`  | Reddedildi   | İstek karşılanamadı (örn. uygun slot yok)       |
| `cancelled` | İptal Edildi | İptal — takvimden silinir                       |
| `completed` | Tamamlandı   | Randevu yapıldı, üzerine satış işlenebilir      |
| `no_show`   | Gelmedi      | Hasta gelmedi — operasyonel raporlara etki eder |

## Bileşenler

| Alan           | Açıklama                | Zorunlu        |
| -------------- | ----------------------- | -------------- |
| `customer_id`  | Hangi hasta             | Evet           |
| `user_id`      | Hangi doktor            | Evet           |
| `treatments`   | Hangi tedaviler (çoklu) | Evet — en az 1 |
| `scheduled_at` | Tarih + saat (ISO 8601) | Evet           |
| `room_id`      | Hangi oda               | Hayır          |
| `assistant_id` | Asistan personel        | Hayır          |
| `description`  | Serbest not             | Hayır          |

<Warning>
  Tedavi, hedef doktora **atanmış olmalıdır**. Olmadan eklenirse 422 doğrulama hatası alınır. Tedavi atamaları panel `Tedaviler` ekranından yönetilir.
</Warning>

## Önkoşullar

```mermaid theme={null}
flowchart LR
    H[Hasta kaydı] --> R[Randevu]
    D[Doktor] --> R
    D --> GC{Takvim<br/>entegrasyonu<br/>aktif?}
    GC -->|Hayır| X[Doktor randevu<br/>listesinde görünmez]
    T[Tedavi doktora atanmış] --> R
```

* Hasta kaydı **var olmalı** (yoksa önce yarat).
* Tedavi(ler) doktora atanmış olmalı.
* **Doktorun aktif takvim entegrasyonu olmalı.** Hem panel randevu formu hem AI üzerinden randevu açma akışı, aktif `calendar` entegrasyonu olmayan doktoru **doktor seçim listesine almaz** — yani pratikte takvim bağlı olmadan randevu açılamaz. Detay: [Takvim senkronizasyonu](/documentation/appointments/calendar).

## Tipik akış

<Steps>
  <Step title="Hasta belirlendi">
    Görüşmeden veya panel aramadan hasta seçilir.
  </Step>

  <Step title="Saat seçildi">
    Takvimde doktorun boş slotlarından biri seçilir.
  </Step>

  <Step title="Tedavi(ler) eklendi">
    Doktora atanmış tedaviler listelenir; bir veya birden fazla seçilir.
  </Step>

  <Step title="Onaylandı">
    Randevu `pending` olarak yaratılır; doktorun Google Calendar'ına etkinlik yazılır; hatırlatma kuyruğa girer.
  </Step>
</Steps>

Detay için [Randevu açma akışı](/documentation/appointments/booking-flow).

## Hatırlatma

Sistem, ayarlı zaman dilimlerinde (örn. 24 saat önce, 1 saat önce) hastaya WhatsApp/Telegram üzerinden hatırlatma yollar. Hatırlatma randevunun durumunu otomatik değiştirmez; firma hastayla teyit edip panelden `approved` işaretler. Detay: [Hatırlatmalar](/documentation/appointments/reminders).

## Sonraki adımlar

<CardGroup cols={2}>
  <Card title="Randevu açma akışı" icon="calendar-plus" href="/documentation/appointments/booking-flow">
    Kanaldan AI'a, AI'dan takvime uçtan uca akış.
  </Card>

  <Card title="Takvim senkronizasyonu" icon="rotate" href="/documentation/appointments/calendar">
    Google Calendar bağlama mantığı.
  </Card>

  <Card title="Hatırlatmalar" icon="bell" href="/documentation/appointments/reminders">
    Kural ve şablon yönetimi.
  </Card>

  <Card title="API: Randevu oluşturma" icon="code" href="/guides/create-appointment">
    Detay endpoint + örnek payload.
  </Card>
</CardGroup>
