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

# Mimari

> Flextell modüllerinin birbirleriyle ilişkisi ve tipik veri akışı.

Flextell'deki her veri **firma** altında yaşar. Bir firmadaki kanaldan gelen mesaj, aynı firmadaki hasta kaydına bağlanır; ondan açılan randevu, aynı firmadaki doktorun takvimine yazılır.

## Modüller arası ilişki

```mermaid theme={null}
flowchart TB
    subgraph Firma
      direction LR
      CH[Kanal<br/>WhatsApp / Telegram]
      CN[Conversation]
      CL[ChatLog<br/>Mesajlar]
      CU[Hasta<br/>Customer]
      AP[Randevu]
      DR[Doktor]
      TR[Tedavi]
      RM[Oda]
      SL[Satış]
      PY[Ödeme]
      IN[Stok]
    end

    H[Hasta] <--> CH
    CH --> CN
    CN --> CL
    CN --> CU
    CU --> AP
    AP --> DR
    AP --> TR
    AP --> RM
    DR --> GC[(Google Calendar)]
    AP --> GC
    CU --> SL
    SL --> PY
    SL --> IN
    SL --> EF[(e-Fatura<br/>Nilvera / NES)]
```

## Tipik uçtan uca akış

Hastanın mesaj atmasından satışın e-faturaya dönüşmesine kadar:

<Steps>
  <Step title="Mesaj geldi">
    Hasta WhatsApp'tan yazar. Flextell webhook ile alır, ilgili `Conversation` ve `ChatLog` kayıtlarını oluşturur, `ChatLogCreated` event'i yayar.
  </Step>

  <Step title="AI yanıtladı (opsiyonel)">
    Asistan açıksa otomatik yanıt üretir; bu da bir `ChatLog`'tur. İçerik karmaşıksa veya tetikleyici kelime geçerse [insana devir](/documentation/conversations/handoff) olur.
  </Step>

  <Step title="Randevu açıldı">
    Firma/AI panelden veya API'den randevu oluşturur. Doktorun Google Calendar'ına otomatik etkinlik yazılır.
  </Step>

  <Step title="Hatırlatma çıktı">
    Sistem, ayarlı zamanlamada hastaya WhatsApp üzerinden hatırlatma yollar.
  </Step>

  <Step title="Randevu tamamlandı, satış kesildi">
    Tedavi sonrası satış kalemleri girilir, ödeme tahsilatı yapılır, stok düşer.
  </Step>

  <Step title="e-Fatura kesildi">
    Firma satış üzerinden manuel olarak bağlı entegratör (Nilvera/NES) ile e-Fatura veya e-Arşiv keser.
  </Step>
</Steps>

## Katmanlar

| Katman          | İçindekiler                                                 | Erişim               |
| --------------- | ----------------------------------------------------------- | -------------------- |
| Sohbet          | Kanal, Conversation, ChatLog, AI Asistan, Ticket, Blacklist | Panel, API, Realtime |
| Randevu & Hasta | Hasta, Lead, Randevu, Takvim, Hatırlatma                    | Panel, API           |
| Klinik          | Doktor, Asistan, Tedavi, Oda, Dosya, AI Raporu              | Panel                |
| Finans          | Depo, Ürün, Stok, Teklif, Satış, Ödeme, Fatura, Hesap       | Panel, API           |
| Yönetim         | Firma, Kullanıcı, Rol, Agent, Kredi, Loglar, Ayarlar        | Panel                |

## Çoklu kanal, tek hasta

Aynı hasta WhatsApp'tan ve Telegram'dan yazabilir. Flextell, `CustomerIdentity` ile her kanaldaki kimliği aynı hasta altında saklar; ayrıntı için [Hastalar](/documentation/customers/overview).

## Realtime

Sohbete dair değişiklikler Pusher protokolü üzerinden WebSocket olarak yayınlanır. Yayınlanan event'ler şunlardır:

| Event                                        | Tetik                         |
| -------------------------------------------- | ----------------------------- |
| `ChatLogCreated`                             | Yeni mesaj                    |
| `ChatLogUpdated`                             | Mesaj güncellendi             |
| `ChatLogDeleted`                             | Mesaj silindi                 |
| `ConversationRead`                           | Sohbet okundu                 |
| `ConversationPresenceUpdated`                | Kullanıcı sohbete girdi/çıktı |
| `AiSuggestionCreated`, `AiSuggestionUpdated` | AI yanıt önerisi              |

Randevu, satış vb. diğer modüller için **broadcast event yoktur**; bunlar için panel kendi durumunu yeniden okur. Detay: API tarafı [Realtime](/realtime/overview).

## Sonraki adımlar

<CardGroup cols={2}>
  <Card title="Kavramlar" icon="book" href="/documentation/concepts">
    Modellerin tek tek tanımı.
  </Card>

  <Card title="Kanallar" icon="plug" href="/documentation/conversations/channels">
    Hangi kanal türleri var ve nasıl bağlanır.
  </Card>
</CardGroup>
