← Ana Sayfa

Gereksinim Belgesi · SRS

Demo CRM — müşteri, görev ve sayaç modüllerinin fonksiyonel ve teknik gereksinimleri.

Belge
SRS v1.1
Tarih
06.10.2026
Çalışan sürüm
cfceea7 (prod)
Kaynak (tek)
Proje Özeti + UI uyum brief'i
Durum
Üretime alınmış sürümle uyumlu
Son değişiklik
Yeni görev penceresi: müşteri alanı, paneldeki seçili müşteri filtresiyle dolu açılır (V-9, U-08). v1.0.0 → v1.1.0: arayüz v2 (yazı tipi, renkler, yerleşim) — davranış aynı kaldı

01Genel Bakış

Amaç ve kapsam

Demo CRM; tek kullanıcıya, yerel ortamda çalışan, tek sayfa ve tamamen Türkçe bir müşteri takip uygulamasıdır. Üç iş alanından oluşur: müşteri kayıtları ve bunların yönetimi, müşteriye bağlı takip görevleri ve üç özet sayacı.

Arayüz ile arka uç birlikte çalışır; filtreler ve sayaçlar yalnızca kaydedilmiş gerçek veriyi gösterir. Her başarılı işlemden sonra ilgili liste ve sayaçlar yenilenir.

Arayüz (UI v2): Bu sürüm, arayüzün yeni tasarım sistemine göre yeniden çizildiği görsel sürümle uyumludur (yerel Fira yazı tipi yığını, dış CDN yok; mavi vurgu paleti; tablo taşma kontrolü) ve detay panelindeki notu düzenleme için bir not popup bileşeni içerir. İşlev ve veri sözleşmesi değişmedi; fark yalnızca görsel ve bu yeni bileşendir.

Müşteriler

Beş alanlı müşteri kaydı: oluşturma, listeleme, düzenleme, silme, arama ve firma filtresi.

Görevler

Müşteriye bağlı takip görevleri: başlık, vade ve durum; müşteri ve gecikmiş filtreleri.

Sayaçlar

Toplam müşteri, gecikmiş görev ve bu ay eklenen müşteri sayaçları.

Belge hakkında

Tek kaynakProje Özeti (başlangıç brief'i)
İsimlendirmeArayüz etiketi ile sistem alan adı her tabloda ayrı sütunda
EtiketlerMUST  V-  Öneri

MUST — başlangıç brief'inde açıkça yer alan zorunluluk. V- — brief sessiz kaldığı yerlerdeki düşük etkili varsayım; kaynak şartı değildir. Öneri — mimariye devredilen tercih; zorunluluk değildir.

Belge kalite kontrolü

  • Açık karar bekleyen konu yok — kaynakta yer alan her ifade bir gereksinim, varsayım veya kapsam dışı maddesine karşılık geliyor.
  • Tek veri sözleşmesi — her alanın adı, tipi, zorunluluğu ve hata davranışı tek yerde tanımlı.
  • Her arayüz işlemi için kabul maddesi — girdi/eylem ve beklenen ekran sonucu belgeli.
  • Her zorunluluk kaynağa dayanıyor — brief sessiz kaldığı yerler açıkça varsayım olarak etiketli.
  • Sayaç etkileri koşul bazlı — her işlemin sayaçları nasıl etkilediği, değişen/değişmeyen örneklerle tanımlı.

02Varsayımlar ve Öneriler

Başlangıç brief'i sessiz kaldığı konularda düşük etkili varsayımlar tanımlanmıştır. Her biri gerekirse değişiklik talebiyle güncellenebilir; hiçbiri kaynak şartı olarak yazılmamıştır.

+V-1Görev vadesi gün çözünürlüklüdürEtki: düşük

Görev vadesi "gün" çözünürlüklüdür (YYYY-MM-DD); saat tutulmaz.

Gerekçe: Gün çözünürlüğü gecikme kuralını basit tutar. Saate ihtiyaç doğarsa değişiklik talebiyle eklenir.

+V-2Bugün vadesi olan görev gecikmiş sayılmazEtki: orta-düşük

Gecikme, vadenin bugünden önce olması demektir (vade < bugün); bugün vadesi olan görev gecikmiş sayılmaz. "Bugün", sunucunun yerel saat dilimine (Türkiye, UTC+3) göre belirlenir.

Gerekçe: Brief "gecikmiş" derken sınırı tanımlamaz.

+V-3"Bu ay eklenen" oluşturulma gününe göre sayılırEtki: orta-düşük

"Bu ay eklenen müşteri", müşterinin oluşturulduğu günün yerel saat dilimindeki takvim ayına göre sayılır; ay, her ayın 1'inde 00:00'da başlar.

Gerekçe: Brief "bu ay eklenen" derken sınırlarını vermez.

+V-4Arama dört metin alanında çalışırEtki: düşük

Arama; isim, firma, telefon ve e-posta alanlarında kısmi ve büyük/küçük harf duyarsızdır; not alanına bakmaz.

Gerekçe: Brief arama kapsamını vermez; telefon da metin eşleşmesiyle aranır.

+V-5Firma filtresi tam eşleşmedirEtki: düşük

Firma filtresi, seçilen firmanın tam eşleşmesini uygular; eşleşen müşteri kümesini listeler.

Gerekçe: "Firma filtresi"nin en doğal okuması tekil firma seçimidir.

+V-6Görevin müşteri alanı zorunludurEtki: orta-düşük

Görevler müşteriye bağlıdır: müşteri alanı görev oluştururken zorunludur. Görev filtresi yalnızca "müşteri" ve "gecikmiş" olmak üzere tanımlıdır.

Gerekçe: "Müşteriye bağlı" ifadesi zorunluluğa okunur.

+V-7Müşteri silinince görevleri de silinirEtki: orta-düşük

Bir müşteri silindiğinde ona bağlı görevler birlikte silinir; yetim görev kabul edilmez.

Gerekçe: İlişki bütünlüğü; kullanıcıya sormadan yapılabilen düşük etkili okuma.

+V-8Varsayılan liste sıralamasıEtki: düşük

Müşteri listesi isme göre artan; görev listesi vadeye göre artan sıralanır (eşitlikte oluşturulma sırası).

Gerekçe: Sıralama brief'te yer almaz.

+V-9Yeni görev penceresinde müşteri varsayılanıEtki: düşük

"Yeni Görev Kayıt" penceresi açıldığında müşteri alanı, panelde seçili olan müşteri filtresiyle dolu gelir. Filtre "Tümü" (boş) ise alan boş kalır. Düzenleme akışında alan, görevin bağlı olduğu müşteriyle dolu açılır (etkilenmez). Varsayılan her zaman kullanıcının değiştirebildiği bir başlangıç değeridir.

Gerekçe: Panelde zaten daraltılmış bir müşteri görünümünde görev açarken aynı müşteri tekrar seçilmek zorunda kalınmasın; brief sessiz kaldığı için düşük etkili varsayım olarak belirlendi.

Öneriler (mimariye devredilen tercihler)

Öneri-1Öneri

Not alanı için 2.000 karakter üst sınırı

Performans eşiği değil, veri sağlamlığı için tanımlanmıştır; mimari onaylar veya değiştirir.

Öneri-2Öneri

E-posta için pratik biçim doğrulaması

Örneğin @ işareti zorunludur. Kötü veri korumasıdır; brief dışı zorunluluk değildir.

Öneri-3Öneri

Sayfa içi liste boyu: 100 kayıt

Yerel, tek kullanıcı uygulamaya uygun hacim sınırı; brief'te hacim tanımı yoktur.

03Veri Modeli

İki kayıt türü vardır: müşteri ve takip görevi. Her alanda arayüz etiketi ile sistem alan adı ayrı sütunda gösterilir; bu tablo tek sözleşmedir.

Müşteri

AlanSistem adıTipZorunluBoş/null değerdeGeçersiz giriş örneği
İsimadmetin, 1–200 karakterEvithata gösterilir, kayıt oluşmaz"" (boş), 201+ karakter
Firmafirmametin, 0–200 karakterHayırboş olarak saklanır201+ karakter
Telefontelefonmetin, 0–30 karakter (rakam, boşluk, + - ( ))Hayırboş olarak saklanır31+ karakter, harf içeren değer
E-postaepostametin, 0–200 karakterHayırboş olarak saklanırornek.com (@ yok)
Notnotmetin, 0–2000 karakterHayırboş olarak saklanır2001+ karakter

Takip görevi

AlanSistem adıTipZorunluBoş/null değerdeGeçersiz giriş örneği
Başlıkbaslikmetin, 1–200 karakterEvithata gösterilir, kayıt oluşmaz"" (boş), 201+ karakter
Vadevadetarih, YYYY-MM-DD (V-1)Evithata gösterilir31-02-2026, 2026-13-01
Durumdurumacik | tamamlanmisEvit (varsayılan: acik)oluşturmada varsayılana döner; güncellemede boş gönderilirse hatayapildi (geçersiz durum)
Müşterimusteri_idmüşteri kimliği (tam sayı)Evit (V-6)var olmayan müşteri için hatavar olmayan kimlik

Durum değerleri

DurumDeğer (kod)Arayüz etiketi
Görev durumuacik, tamamlanmisAçık, Tamamlandı
Gecikmişlik (türetilmiş)gecikmis, gecikmis_degilGecikmiş, Gecikmiş değil

Oluşturma ve güncelleme kuralları

  • • Oluşturma: zorunlu alan eksikse veya boşsa hata (422) gösterilir; kayıt oluşmaz, veri değişmez.
  • • Güncelleme: yalnızca gönderilen alanlar değişir (kısmi güncelleme / PATCH); gönderilmeyen alan korunur. null, alanı "boş" olarak yazar (zorunlu alanlarda hata).
  • • Boş metin (""), zorunlu metin alanlarında hatadır.
  • • Her başarılı değişiklikten sonra ilgili liste ve sayaçlar kaynaktan yeniden hesaplanır; önbellek tutulmaz.

04Fonksiyonel Gereksinimler

On altı fonksiyonel gereksinim; modül filtresiyle daraltılabilir.

Müşteri 4 gereksinim
REQ-MST-01MUST

Müşteri oluşturulur

Girdi: İsim (zorunlu), Firma, Telefon, E-posta, Not.

Kabul: İsim verilmeden kayıt oluşturulamaz — hata gösterilir, kayıt oluşmaz. Tüm alanlar geçerliyse müşteri listede görünür ve sayaçlar yenilenir.
REQ-MST-02MUST

Müşteriler listelenir

Kabul: Oluşturulan her müşteri listede tüm alanlarıyla görünür; filtreler kapalıyken tüm kayıtlar listelenir. Varsayılan sıralama isme göre artandır (V-8).
REQ-MST-03MUST

Müşteri düzenlenir

Tüm beş alan düzenlenebilir; güncelleme kısımdaki kısmi güncelleme kuralına göre çalışır.

Kabul: Değiştirilen alan yeni değeriyle görünür; değiştirilmeyen alanlar korunur. Geçersiz girişte (ör. boş İsim) kayıt önceki haliyle kalır ve hata gösterilir.
REQ-MST-04MUST

Müşteri silinir

Silme kalıcıdır; müşteriye bağlı görevler de birlikte silinir (V-7).

Kabul: Onaydan sonra müşteri listede görünmez; bağlı görevler görev listesinde görünmez; sayaçlar yenilenir (bkz. Sayaç Etkileri).
Arama ve firma filtresi 3 gereksinim
REQ-MST-05MUST

Müşteri listesi aranır

Aranan alanlar: isim, firma, telefon, e-posta; kısmi ve büyük/küçük harf duyarsız (V-4).

Kabul: Bir isim alt metni yazıldığında yalnızca eşleşen müşteriler listelenir; eşleşme yoksa "Kayıt bulunamadı" durumu gösterilir; arama kutusu temizlenince tam liste döner.
REQ-MST-06MUST

Müşteri listesi firma filtresiyle daraltılır

Firma filtresi tam eşleşmedir (V-5).

Kabul: Bir firma seçilince yalnızca o firmanın müşterileri listelenir; filtre temizlenince tam liste döner.
REQ-MST-07MUST

Arama ve firma filtresi birlikte çalışır

Kabul: Arama metni ile firma seçimi birlikte (AND) uygulanır; sonuç kümesi her iki koşulu sağlayan kayıtlardır. Birinin temizlenmesi diğerini etkilemez.
Takip görevleri 3 gereksinim
REQ-TSK-01MUST

Müşteriye bağlı görev oluşturulur

Girdi: Başlık, Vade, Durum (varsayılan: Açık), Müşteri.

Kabul: Geçerli girdiyle görev, ilgili müşterinin görevlerinde görünür. Müşteri yoksa veya var olmayan bir müşteri seçildiyse görev oluşmaz ve hata gösterilir; vade yoksa görev oluşmaz.
REQ-TSK-02MUST

Görev güncellenir

Başlık, vade, durum ve müşteri değiştirilebilir; kısmi güncelleme kuralına göre çalışır.

Kabul: Durum Tamamlandı yapıldığında görev liste ve sayaçlarda tamamlanmış görünür; vade güncellenince gecikmişlik yeniden hesaplanır; geçerli olmayan durum değeri reddedilir.
REQ-TSK-03MUST

Görev silinir

Kabul: Silinen görev listede görünmez; sayaçlar durum bazlı etkisine göre yenilenir (bkz. Sayaç Etkileri).
Görev filtresi 3 gereksinim
REQ-TSK-04MUST

Görev listesi müşteri filtresiyle daraltılır

Kabul: Bir müşteri seçilince yalnızca o müşterinin görevleri listelenir; seçim temizlenince tüm görevler döner.
REQ-TSK-05MUST

Görev listesi "gecikmiş" filtresiyle daraltılır

Kabul: Filtre açılıyken yalnızca vadesi geçmiş açık görevler listelenir; bugün vadesi olan açık görev listede yer almaz (V-2 sınırı).
REQ-TSK-06MUST

Müşteri ve gecikmiş filtreleri birlikte çalışır

Kabul: Sonuç kümesi, seçilen müşterinin gecikmiş görevleridir (AND). Bir filtre temizlenince diğeri tek başına uygulanır.
Sayaçlar 3 gereksinim
REQ-CNT-01MUST

"Toplam müşteri" sayacı

Kabul: Kayıtlı müşteri sayısını gösterir: müşteri eklenince 1 artar, silinince 1 azalır, düzenlemede değişmez.
REQ-CNT-02MUST

"Gecikmiş görev" sayacı

Kabul: Vadesi geçmiş açık görevleri sayar (V-2): görev tamamlanınca veya vadesi bugüne/ilerideye çekilince sayaçtan çıkar.
REQ-CNT-03MUST

"Bu ay eklenen müşteri" sayacı

Kabul: Oluşturulma tarihi bu takvim ayında (V-3) olan müşteri sayısını gösterir; geçen ay eklenen müşteri sayacı artırmaz; ay geçişinde yeniden hesaplanır.

05Arayüz Kabulü

Tek sayfa Türkçe arayüzde her işlem için girdi/eylem ve beklenen ekran sonucu. Hata durumunda kayıt oluşmaz/değişmez, Türkçe hata mesajı gösterilir ve mevcut liste korunur.

#İşlemGirdi / eylemBeklenen ekran sonucu
U-01Müşteri eklemeFormda İsim (zorunlu) + diğer alanlar; "Kaydet"Yeni müşteri listede görünür; "Toplam müşteri" sayacı 1 artar (bu ay eklenmişse "Bu ay eklenen" de artar); form temizlenir
U-02Müşteri ekleme — hataBoş İsim ile "Kaydet"Müşteri oluşmaz; "İsim zorunludur" benzeri Türkçe hata; liste ve sayaçlar değişmez
U-03Müşteri düzenlemeSatırda "Düzenle" → alan değiştir → "Kaydet"Satır yeni değerlerle görünür; değiştirilmeyen alanlar korunur; sayaçlar değişmez
U-04Müşteri silmeSatırda "Sil" → onaySatır listeden kalkar; bağlı görevler görev listesinde görünmez; "Toplam müşteri" 1 azalır; bu ay eklenmişse "Bu ay eklenen" 1 azalır; bağlı açık gecikmiş görev varsa gecikmiş sayacı da azalabilir (bkz. Sayaç Etkileri)
U-05AramaArama kutusuna metin yaz (isim, firma, telefon, e-posta — V-4)Liste yalnızca eşleşen kayıtlara daralır; eşleşme yoksa "Kayıt bulunamadı"; kutu boşsa tam liste
U-06Firma filtresiFirma seç (V-5)Liste yalnızca o firmanın müşterilerine daralır; "Tümü" seçilince tam liste
U-07Arama + firmaİkisi birlikteAND sonuç; biri temizlenince diğeri tek başına geçerli kalır
U-08Görev eklemeMüşteri seç + Başlık + Vade + Durum; "Kaydet"Pencere açılırken müşteri alanı, panelde seçili müşteri filtresiyle dolu gelir (filtre "Tümü" ise boş — V-9); görev, ilgili müşterinin görev listesinde görünür; vade dünden önce ve durum Açık ise "Gecikmiş görev" sayacı artar, aksi halde değişmez
U-09Görev ekleme — hataBaşlıksız veya vadesiz "Kaydet"Görev oluşmaz; hata mesajı; liste ve sayaçlar değişmez
U-10Görev güncellemeGörevde "Düzenle" → Durum: Tamamlandı → "Kaydet"Görev tamamlanmış görünür; "Gecikmiş görev" sayacı azalır (görev önceden gecikmişse)
U-11Görev silmeGörevde "Sil" → onayGörev listeden kalkar; sayaçlar Sayaç Etkileri kuralına göre yenilenir
U-12Görev filtresi — müşteriMüşteri seçYalnızca o müşterinin görevleri görünür
U-13Görev filtresi — gecikmiş"Gecikmiş" filtresi açılırYalnızca gecikmiş açık görevler görünür; bugün vadesi olan açık görev listede yer almaz (V-2)
U-14Görev filtreleri birleşimiMüşteri + gecikmişAND sonuç; biri temizlenince tek filtre geçerli kalır
U-15Boş durumlarYeni (kayıtsız) veri veya eşleşmesiz filtreListelerde "Kayıt yok" benzeri Türkçe boş durum; sayaçlar 0; hata üretilmez
U-16Müşteri notunu not popup ile düzenleDetay panelinde "Not" düğmesine bas → yazı alanına metin gir → "Kaydet" (veya "Vazgeç" / ESC)Popup, seçili müşterinin adını ve mevcut notu gösterir; "Kaydet"te not yeni metniyle detay panelinde ve listede görünür, sayaçlar değişmez; "Vazgeç"/ESC'te popup kapanır ve not değişmez; 2.000 karakter üst sınırı karakter sayacıyla izlenir

Arayüz kabul maddeleri, ayrı senaryolar halinde "Kullanım Senaryoları" belgesinde de yer alır.

06Sayaç Etkileri

Tarih sınırları: "bugün" = sunucu yerel saati (UTC+3); "bu ay" = oluşturulma tarihinin takvim ayı (ayın 1'i, 00:00'da başlar — V-2, V-3).

Müşteri işlemleri ve sayaçlar

İşlemToplam müşteriBu ay eklenenGecikmiş görev
Müşteri oluştur+1+1değişmez
Müşteri sil (bu ay eklenmiş)−1−1bağlı açık gecikmiş görev kadar azalır (V-7)
Müşteri sil (geçen ay eklenmiş)−1değişmezaynı etki (V-7)
Müşteri düzenledeğişmezdeğişmezdeğişmez

Görev işlemleri ve gecikmiş görev sayacı

İşlemGecikmiş görev sayacı
Açık görev ekle, vade bugünden önce+1
Açık görev ekle, vade bugün veya sonrasıdeğişmez (bugün vadesi gecikmiş değildir — V-2)
Açık gecikmiş görevi tamamla−1
Tamamlanmış, geçmiş vadeli görevi sildeğişmez (zaten sayaçta değildi)
Açık gecikmiş görevi sil−1
Açık görevin vadesini bugüne çek−1 (artık gecikmiş değil)
Açık görevin vadesini geleceğe çek (önceden bugün vadesiydi)değişmez

Değişen / değişmeyen örnekler

DeğişenGeçmiş vadeli açık görev silinir → gecikmiş görev sayacı 1 azalır.
DeğişmeyenGeçmiş vadeli tamamlanmış görev silinir → sayacı değişmez (önceden sayaçta yoktu).
DeğişenBu ay eklenen müşteri silinir → "bu ay eklenen" 1 azalır.
DeğişmeyenGeçen ay eklenen müşteri silinir → "bu ay eklenen" değişmez.

07Kapsam Dışı

Aşağıdaki maddeler bu sürümde kapsam dışıdır ve başlangıç brief'inde açıkça belirtilmiştir.

SC-01Kapsam dışı

Docker

Uygulama Docker ile paketlenmez.

SC-02Kapsam dışı

Kullanıcı hesabı / kimlik doğrulama

Ürün tek kullanıcıya yöneliktir; hesap ve kimlik doğrulama yoktur.

SC-03Kapsam dışı

Dış API entegrasyonu

Dış servislerle veri alışverişi yapılmaz.

SC-04Kapsam dışı

E-posta gönderimi / bildirim

Sistem e-posta göndermez, bildirim üretmez.

SC-05Kapsam dışı

Çoklu dil

Arayüz yalnızca Türkçedir.

SC-06Kapsam dışı

Yük testi

Yük testi kapsamı dışıdır.

SC-07Kapsam dışı

Ücretli bağımlılık

Yalnızca ücretsiz bağımlılıklar kullanılır.

SC-08Kapsam dışı

Model / servis / önbellek ayarı değiştirme

Bu ayarlar değiştirilmez.

SC-09Kapsam dışı

Brief dışı zorunluluk

Başlangıç brief'i dışında ek zorunluluk tanımlanmamıştır.

08Teknik Gereksinimler

NFR-1MUST

Teknoloji yığını

Python 3.11+, FastAPI, SQLAlchemy, SQLite (WAL modu), uvicorn.

NFR-2MUST

Dört ayrı ortam

Geliştirme, test, önizleme ve üretim ortamları ayrıdır: her ortam kendi veri dosyasını, yapılandırmasını, sürecini ve günlüğünü kullanır. Hedef portlar 8201/8202/8203/8204; kullanımdan önce uygunluk doğrulanır.

NFR-3MUST

Veri kaybı olmaz

Silme kalıcıdır ancak onay gerektirir (U-04, U-11); geçersiz giriş veri değiştiremez.

NFR-4MUST

Ortam karışması olmaz

Her ortam yalnızca kendi veri dosyasına bağlanır.

NFR-5MUST

Kurulum ve kullanım belgeleri

Ürün, kurulum ve kullanım kılavuzu ile birlikte teslim edilir.

NFR-6MUST

Kullanıcı onayı

Her üretim adayı, yayına alınmadan önce gerçek kullanıcı onayını bekler.

NFR-7MUST

Kanıt zinciri

Yayına giren aday için: geliştirici testleri, bağımsız kod incelemesi, kalite testleri ve aynı adayın önizleme ortamındaki tam regresyonu.

NFR-8Öneri

Performans eşiği tanımlanmaz

WAL + tek yerel kullanıcı ölçeği için ek performans eşiği tanımlanmamıştır; kaynakta eşik tanımı yoktur.

09İzlenebilirlik

Başlangıç brief'indeki her davranış, bu belgedeki ilgili maddeye karşılık gelir.

Brief davranışıBelge maddesi
Müşteri eklemeREQ-MST-01 · Arayüz Kabulü U-01, U-02
Müşteri listelemeREQ-MST-02 · Arayüz Kabulü U-15
Müşteri düzenlemeREQ-MST-03 · Arayüz Kabulü U-03
Müşteri silmeREQ-MST-04 · Arayüz Kabulü U-04
Müşteri alanları (isim, firma, telefon, e-posta, not)Veri Modeli
AramaREQ-MST-05 · Arayüz Kabulü U-05
Firma filtresiREQ-MST-06, REQ-MST-07 · Arayüz Kabulü U-06, U-07
Görev (başlık, vade, durum, müşteriye bağlı)Veri Modeli · REQ-TSK-01 · Arayüz Kabulü U-08, U-09
Görev güncelleme / silmeREQ-TSK-02, REQ-TSK-03 · Arayüz Kabulü U-10, U-11
Müşteri + gecikmiş görev filtresiREQ-TSK-04, REQ-TSK-05, REQ-TSK-06 · Arayüz Kabulü U-12, U-13, U-14
Üç sayaç (toplam müşteri, gecikmiş görev, bu ay eklenen)REQ-CNT-01, REQ-CNT-02, REQ-CNT-03 · Sayaç Etkileri