Files
bogazici-api/prompts/admin-leads.md
2026-03-27 10:41:54 +03:00

11 KiB
Raw Blame History

Admin Panel — Leads (Başvuru Yönetimi) Modülü

Genel Bakış

Web sitesindeki formlardan gelen tüm başvurular leads tablosuna yazılır. Admin panelden başvurular listelenir, detay görüntülenir, durum güncellenir ve not eklenir. Lead'ler sadece API'den oluşur — admin panelde "Yeni Oluştur" butonu olmayacak.


API Endpoints (Admin — auth:sanctum)

Method Endpoint ıklama
GET /admin/leads Başvuruları listele (paginated, filtrelenebilir)
GET /admin/leads/{id} Başvuru detayı (otomatik okundu işaretler)
PUT /admin/leads/{id} Durum/not güncelle
DELETE /admin/leads/{id} Başvuru sil (soft delete)

GET /admin/leads — Liste

Query Parametreleri:

Parametre Tip ıklama
status string Durum filtresi: new, contacted, enrolled, cancelled
source string Kaynak filtresi: kurs_kayit, danismanlik, duyuru, iletisim
is_read boolean Okundu/okunmadı filtresi
search string İsim/telefon arama
per_page integer Sayfa başına (varsayılan: 15)

Response:

{
  "data": [
    {
      "id": 1,
      "name": "Ahmet Yılmaz",
      "phone": "+90 532 724 15 32",
      "email": "ahmet@email.com",
      "source": "kurs_kayit",
      "status": "new",
      "target_course": "gemici-birlesik-egitimi",
      "education_level": "lise",
      "subject": null,
      "message": "Eğitim hakkında bilgi almak istiyorum",
      "is_read": false,
      "kvkk_consent": true,
      "marketing_consent": false,
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "denizcilik-2026",
      "admin_note": null,
      "created_at": "2026-03-24T10:30:00.000000Z",
      "updated_at": "2026-03-24T10:30:00.000000Z"
    }
  ],
  "meta": { "current_page": 1, "last_page": 5, "per_page": 15, "total": 72 }
}

GET /admin/leads/{id} — Detay

Detay açıldığında backend otomatik olarak is_read: true yapar.


PUT /admin/leads/{id} — Güncelle

Admin sadece şu alanları güncelleyebilir:

{
  "status": "contacted",
  "is_read": true,
  "admin_note": "Arandı, bilgi verildi. Nisan dönemine kayıt olacak."
}

Veri Modeli

Lead Alanları

Alan Tip ıklama
id integer
name string Ad Soyad
phone string Telefon
email string (nullable) E-posta
source enum Başvuru kaynağı (form tipi)
status enum İşlem durumu
target_course string (nullable) Hedef eğitim slug'ı
education_level string (nullable) Eğitim seviyesi
subject string (nullable) Konu (iletişim formunda)
message text (nullable) Mesaj
is_read boolean Admin tarafından okundu mu
kvkk_consent boolean KVKK onayı
marketing_consent boolean Pazarlama onayı
utm_source string (nullable) UTM Source
utm_medium string (nullable) UTM Medium
utm_campaign string (nullable) UTM Campaign
admin_note text (nullable) Admin notu
created_at datetime Başvuru tarihi

Source (Kaynak) Değerleri

Değer ıklama Hangi Form?
kurs_kayit Kurs ön kayıt Eğitim detay sayfası kayıt formu
danismanlik Danışmanlık Danışmanlık sayfası formu
duyuru Duyuru Duyuru sidebar'daki mini form
iletisim İletişim İletişim sayfası formu
hero_form Hero form Anasayfa hero bölümü formu
whatsapp_widget WhatsApp WhatsApp widget üzerinden gelen

Status (Durum) Değerleri

Değer Label Badge Rengi ıklama
new Yeni warning (sarı) Henüz işlenmemiş
contacted İletişim Kuruldu info (mavi) Aranmış/e-posta gönderilmiş
enrolled Kayıt Oldu success (yeşil) Eğitime kaydolmuş
cancelled İptal danger (kırmızı) Vazgeçmiş/iptal

Önerilen Admin Panel Sayfası

Liste Sayfası (/admin/leads)

┌─────────────────────────────────────────────────────────────┐
│ Başvurular                                    [Filtreler ▼] │
├─────────────────────────────────────────────────────────────┤
│ Filtreler: [Kaynak ▼] [Durum ▼] [Okundu ▼] [Ara...]       │
├──────┬──────────────┬──────────────┬────────────┬───────────┤
│  ●   │ Ahmet Yılmaz │ +90 532 ... │ kurs_kayit │ 🟡 Yeni  │
│  ○   │ Mehmet Kaya  │ +90 555 ... │ iletisim   │ 🔵 İlet. │
│  ○   │ Ayşe Demir   │ +90 212 ... │ danismanlik│ 🟢 Kayıt │
└──────┴──────────────┴──────────────┴────────────┴───────────┘
  ● = okunmadı (bold göster)   ○ = okundu

Tablo Sütunları:

Sütun ıklama
Okundu göstergesi is_read false ise bold/dot göster
Ad Soyad name
Telefon phone
E-posta email (varsa)
Kaynak source — badge ile göster
Hedef Eğitim target_course (varsa)
Durum status — renkli badge
Tarih created_at — relative (2 saat önce)

Kaynak Badge Renkleri:

Source Renk
kurs_kayit primary (mavi)
danismanlik purple
duyuru orange
iletisim teal
hero_form indigo
whatsapp_widget green

Detay/Düzenleme Sayfası (/admin/leads/{id})

┌─────────────────────────────────────────────────┐
│ Başvuru #42 — Ahmet Yılmaz                      │
├─────────────────────────────────────────────────┤
│ Bilgiler                                         │
│ ┌─────────────────┬───────────────────────────┐ │
│ │ Ad Soyad        │ Ahmet Yılmaz              │ │
│ │ Telefon         │ +90 532 724 15 32         │ │
│ │ E-posta         │ ahmet@email.com           │ │
│ │ Kaynak          │ 🔵 kurs_kayit             │ │
│ │ Hedef Eğitim    │ Gemici (Birleşik) Eğitimi │ │
│ │ Eğitim Seviyesi │ Lise                      │ │
│ │ Mesaj           │ Bilgi almak istiyorum      │ │
│ │ KVKK Onay       │ ✅ Evet                   │ │
│ │ Pazarlama Onay  │ ❌ Hayır                  │ │
│ │ Tarih           │ 24 Mar 2026, 10:30        │ │
│ └─────────────────┴───────────────────────────┘ │
│                                                   │
│ UTM Bilgileri                                     │
│ ┌─────────────────┬───────────────────────────┐ │
│ │ utm_source      │ google                    │ │
│ │ utm_medium      │ cpc                       │ │
│ │ utm_campaign    │ denizcilik-2026           │ │
│ └─────────────────┴───────────────────────────┘ │
│                                                   │
│ İşlem                                             │
│ ┌───────────────────────────────────────────────┐│
│ │ Durum:  [Yeni ▼]  → contacted / enrolled /.. ││
│ │                                                ││
│ │ Admin Notu:                                    ││
│ │ ┌─────────────────────────────────────────┐   ││
│ │ │ Arandı, bilgi verildi. Nisan dönemine   │   ││
│ │ │ kayıt olacak.                            │   ││
│ │ └─────────────────────────────────────────┘   ││
│ │                                                ││
│ │                              [Kaydet]          ││
│ └───────────────────────────────────────────────┘│
└─────────────────────────────────────────────────┘

Düzenleme Kuralları:

  • Başvuru bilgileri (name, phone, message vb.) readonly — sadece görüntüleme
  • Sadece status, is_read ve admin_note düzenlenebilir
  • target_course slug ise, linke çevir: /admin/courses/{slug}/edit
  • "Yeni Oluştur" butonu yok — lead'ler sadece frontend formlarından gelir

İstatistik Kartları (Dashboard için, opsiyonel)

Liste sayfasının üstüne istatistik kartları eklenebilir:

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│  🟡 Yeni     │ │  🔵 İletişim │ │  🟢 Kayıt    │ │  📊 Toplam   │
│     12       │ │     28       │ │     45       │ │     93       │
│  Bu hafta: 5 │ │  Bu hafta: 8 │ │  Bu ay: 15   │ │  Bu ay: 32   │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘

API'den alınabilir:

GET /admin/leads?status=new        → meta.total
GET /admin/leads?status=contacted  → meta.total
GET /admin/leads?status=enrolled   → meta.total
GET /admin/leads                   → meta.total

Notlar

  • is_read detay sayfasııldığında otomatik true olur (backend tarafından)
  • Soft delete kullanılıyor — silinen lead'ler geri alınabilir
  • UTM verileri backend'de tek JSON sütununda (utm) saklanır, API response'da ayrı ayrı döner
  • KVKK ve pazarlama onayları readonly gösterilmeli — admin tarafından değiştirilemez