Bir CRM’i yıllarca geliştirirsin ve şu soruya cevap veremezsin: bu ekranı kim kullanıyor?
Tahminler var. “Muhasebe şu sayfayı çok kullanıyor sanırım.” Ama bir özelliği kaldırmak ya da yeniden yazmak gerektiğinde tahmin yetmiyor.
Bu yüzden CRM’e ayrı bir panel yazdım: sistemin kullanımını canlı gösteren bir ekran.
Önce görünür kılmak
Panel siyah zeminli, ayrı bir kabuk. Ortada bir grafik var: düğümler kullanıcılar ve modüller, kenarlar “şu kişi şu anda şurada” demek.
Biri bir sayfa açtığında o kenar canlanıyor, bir nabız geçiyor. Beş dakika boyunca bakınca şirketin o an ne yaptığını görüyorsun.
Görsel tarafta birkaç bilinçli karar var:
- Düğümler sabitlenmiyor. Serbest duruyorlar, sürekli hafifçe hareket ediyorlar. Donmuş bir grafik ölü görünüyor.
- Yeni kenar geldiğinde ışınlanma yok. Fizik ısınma adımı olmadan başlıyor, düğümler yerlerine kayarak geliyor.
- Grafik verisi yalnız topoloji değişince yenileniyor. Her olayda yeniden kurulursa sahne sürekli zıplıyor.
Sonra derinlik: panelin içinde ne oluyor
“Fatura modülü çok kullanılıyor” bilgisi bir işe yaramıyor. Asıl soru o modülün içinde ne yapıldığı.
Toplayıcı zaten bunu kaydediyordu: tıklanan öğenin seçicisi, çağrılan uç adresi, odaklanılan alan. Sadece kimse bakmıyordu. Bir kırılım ucu yazdım:
modül: fatura · panel: liste · son 60 dk
en çok tıklanan
.btn-export 412
.filter-period 97
.row-detail 88
en çok çağrılan uçlar
/fatura/?xhr=1 1.204
/fatura/pdf/ 412
en çok odaklanılan alanlar
input[name=search] 203
Bu tablo bir şeyi hemen söyledi: dışa aktarma butonuna, listeyi filtrelemekten dört kat fazla basılıyordu. İnsanlar veriyi sistemde kullanmıyor, alıp Excel’e götürüyorlardı.
Bu, bir özellik eksiği. Ve hiçbir toplantıda dile gelmemişti.
Tekrarları bulmak
Sonraki adım: aynı kullanıcının aynı sırayla tekrarladığı adımları bulmak.
Yöntem basit — olay dizisinde ikili ve üçlü sıralar sayılıyor:
site/liste → site/detay → fatura/liste × 47
cari/liste → cari/ekstre × 31
fatura/liste → fatura/pdf → fatura/liste × 26
Üçüncü satır özellikle anlamlı: kişi listeye dönüp aynı işi tekrar yapıyor. Yani tek tek PDF alıyor. Toplu alma özelliği ya yok, ya bulunamıyor.
Ve AI katmanı
Bu desenleri bir modele verip otomasyon önerisi istedim. Çıktı serbest metin değil, yapılandırılmış:
{
"title": "Faturayı tek tek PDF alma döngüsü",
"pattern": "fatura/liste → fatura/pdf → fatura/liste ×26",
"insight": "Kullanıcı listeye dönüp aynı işlemi tekrarlıyor",
"suggestion": "Liste ekranına çoklu seçim + toplu PDF",
"impact": "yüksek"
}
Modelin işi burada da veri üretmek değil, desene bakıp isim vermek. Rakamlar veritabanından geliyor; model yalnız “bu ne anlama geliyor” sorusunu cevaplıyor.
1. Zaman aşımı. Model uzun düşünme modunda binlerce token üretip 50 saniyelik istek sınırını aşıyordu. Panel “oluşturulamadı” diyordu, oysa karşı tarafta iş tamamlanıyordu. Düşünme çabası düşürüldü, üst sınır kondu, süre 12 saniyeye indi.
2. Anahtar koda gömülmüştü. Var olan bir modülde API anahtarı doğrudan kaynak dosyada duruyordu. Yeni katmanda bunu yapmadım — anahtar ortamdan okunuyor, yoksa özellik kapanıyor. Eski sızıntıyı da bir yapılacak olarak yazdım.
Ve sınırlar
Bu panel çok şey görüyor: fare hareketi, kaydırma, tıklama, odak. O yüzden üç kural baştan kondu:
- Saklama süresi sınırlı. Ham olaylar 30 gün sonra siliniyor.
- Erişim dar. Toplama herkesten, görme yalnız yönetici rolünde.
- Amaç yazılı. Bu veri performans değerlendirmesi için değil, iş akışı iyileştirmesi için toplanıyor.
Üçüncüsü teknik bir kural değil ama en önemlisi. Aynı veri iki farklı amaçla kullanılabilir ve amacı yazmazsan zamanla kayar.
Ne öğrendim
Bir sistemin nasıl kullanıldığını bilmeden geliştirmek, karanlıkta ev düzenlemeye benziyor. Mobilyayı doğru yere koyduğunu sanırsın.
Panelin bana gösterdiği en değerli şey bir özellik değildi — hangi özelliklerin hiç kullanılmadığıydı. Yıllardır bakımını yaptığımız üç ekran, altmış günde toplam dokuz kez açılmış.