11 KiB
11 KiB
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 | Açı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 | Açı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 | Açı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 | Açı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 widget üzerinden gelen |
Status (Durum) Değerleri
| Değer | Label | Badge Rengi | Açı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 | Açı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_readveadmin_notedüzenlenebilir target_courseslug 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_readdetay sayfası açıldığında otomatiktrueolur (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