TotalApp Dökümanlar

Birleşik Kişi Dizini Mimarisi

TotalApp'ın müşterileri, tedarikçileri, adayları ve şirketleri tek bir kayıt olarak nasıl modellediği — ve CRM, Satış, Satın Alma ve Çağrı Merkezi'nin bunu nasıl okuyup yazdığı.

Genel Bakış

Çoğu CRM/ERP ürünü, birbirini örten üç dört "bu kim?" kavramıyla sonuçlanır — bir CRM Hesabı, bir Satış Müşterisi, bir Satın Alma Tedarikçisi, bir Kişi — her biri ayrı saklanır, her biri diğerlerinden bağımsız olarak senkron dışı kalır. TotalApp bunu, her kişi ve şirketi tek bir birleşik Contact kaydında saklayarak önler. Bir kişinin ne olduğu — müşteri, tedarikçi, aday, şirket, üretici — hangi tabloda yaşadığı değil, o tek kayıt üzerindeki bir dizi boolean rol bayrağıdır. Bu sayfa o modelin mimari referansıdır: veri şekli, yaşam döngüsü ve her modülün — Hesaplar, Satış Hunisi, Tedarikçi Yönetimi ve Çağrı Merkezi — onu tam olarak nasıl okuyup yazdığı.

"Hesaplar" Nereye Gitti

TotalApp'ın önceki sürümlerinde "Hesaplar" adında bir CRM ekranı vardı; bu, Finans modülündeki Hesap Planı ile çakışıyordu (aynı kelime hangi modülde olduğunuza bağlı olarak iki farklı şey anlamına geliyordu — Odoo/Salesforce/HubSpot tarzı ürünlerde iyi bilinen bir belirsizlik). O ekran artık Hesaplar olarak adlandırılıyor ve "Hesaplar" yalnızca Finans'ın defter hesapları için ayrılmış durumda.

Kişi Kaydı

Hangi modülde bulduğunuza bakılmaksızın, her kişi veya şirket şu şekle sahip tek bir satırdır:

AlanTürAmaç
id, namestringKimlik.
parentIdstring | nullBir bireyi çalıştığı şirkete bağlar.
company, email, phonestringStandart iletişim bilgileri.
rolesboolean nesnesiBu kişinin sizinle hangi ilişkilere sahip olduğu — aşağıdaki Rol Bayrakları tablosuna bakın. Birkaçı aynı anda true olabilir.
lifecycleStageenumsuspectleadopportunitycustomer. Kişinin kendi CRM huni konumu — herhangi bir Fırsatın huni aşamasından ayrıdır.
statusenumactive / inactive / pending.
tagsstring[]Serbest metin kategori etiketleri (sektör, tedarikçi kategorisi, "call-center" gibi kaynak).
vendorProfilenesne (isteğe bağlı)Yalnızca roles.isVendor true olduğunda mevcuttur — vergi kimlik no, VAT numarası, adres/şehir/ülke, ödeme koşulları, para birimi, kategoriler ve performans metrikleri. Aşağıdaki "Tedarikçi Profili Alanları"na bakın.

Rol Bayrakları

Bir kişinin rol bayrakları serbestçe birleşebilir. Sizden de yazılım alan bir tedarikçi, tam olarak aynı kayıtta hem isVendor: true HEM DE isCustomer: true'dur — senkronda tutulacak iki ayrı satır asla değil.

BayrakAnlamıKimler Okur
isCompanyBireysel bir kişi yerine tüzel bir kuruluş.Müşteriler → Şirketler sekmesi
isCustomerSizden mal/hizmet satın alır.Müşteriler → Müşteriler filtresi
isVendorSize mal/hizmet satar (tedarikçi).Tedarikçi Yönetimi, Müşteriler → Tedarikçiler filtresi
isManufacturerParça veya ürün üretir (Üretim / MOM bağlamı).Üretim tarafı ekranları için ayrılmıştır.
isTransporterNakliye / lojistik sağlayıcısı.Depo/Lojistik ekranları için ayrılmıştır.
isLeadHenüz ödeme yapan bir müşteriye dönüşmemiş satış adayı.Müşteriler → Adaylar filtresi, Satış Hunisi
isEmployeeŞirket içi personel üyesi.Dahili görev/gider bağlamları için ayrılmıştır.

Tabloya Göre Değil, Role Göre Filtreleme

Yalnızca bir tablo olduğu için, "müşteriler" veya "tedarikçiler" gösteren her ekran aslında farklı bir filtre uygulanmış aynı dizindir. Hesaplar ekranının rol filtre çubuğu (Tümü / Müşteriler / Tedarikçiler / Şirketler / Adaylar) bunun en görünür örneğidir — filtre değiştirmek asla farklı bir veri kümesini yeniden sorgulamaz, yalnızca hangi bayrağın kontrol edildiğini değiştirir.

Yaşam Döngüsü Aşaması ve Fırsat Aşaması — Karıştırmayın

Bu, birleşik kişi dizinine karşı yeni bir modül entegre ederken en sık karşılaşılan kafa karışıklığıdır, bu yüzden kendi bölümünü hak ediyor:

Potansiyel Aday Fırsat Müşteri
  • Contact.lifecycleStage, kişinin kendisine aittir — kişinin genel ilişki hunisinde nerede olduğunu tanımlayan, her zaman güncel, tek bir değerdir.
  • Deal.stage (Nitelikli / Teklif / Pazarlık / Kazanıldı / Kaybedildi, Satış Hunisi'nde), o kişiye bağlı belirli bir fırsata aittir. Tek bir kişinin, kendi lifecycleStage'i şu an nerede olursa olsun, aynı anda farklı aşamalarda birden çok açık Fırsatı olabilir.
  • İkisi tam olarak bir otomasyonla bağlanır: bağlı bir Fırsatı Kazanıldı'ya sürüklemek, kişinin yaşam döngüsü aşamasını customer'a ilerletir (aşağıdaki "Kazanıldı Otomasyonu"na bakın). Başka hiçbir Fırsat aşaması değişikliği lifecycleStage'e dokunmaz.

Modül Entegrasyon Haritası

Şu anda dört modül birleşik dizinden okuyup ona yazıyor. Her biri, o modülün günlük olarak nasıl çalıştığına uygun farklı bir giriş noktası kullanır:

Hesaplar

Dizinin birincil arayüzü. Kişileri doğrudan listeler, role göre filtreler, oluşturur (isCustomer) ve düzenler. Şirketler sekmesi, isCompany'ye filtrelenmiş aynı veridir.

Satış Hunisi

Fırsatları bir Kişi seçici aracılığıyla kişilere bağlar. Fırsatı Kazanıldı'ya ulaştığında bir kişiyi otomatik olarak Müşteri'ye yükseltir.

Tedarikçi Yönetimi

isCompany + isVendor ile kişiler oluşturur ve düzenler; paylaşılan kayda bir vendorProfile (vergi, ödeme koşulları, performans metrikleri) ekler.

Çağrı Merkezi

Her giden çağrı, çevrilen numarayı dizine karşı çözer — mevcut bir kişiyle eşleştirir veya yeni bir Aday otomatik oluşturur (isLead, lifecycleStage: suspect), böylece hiçbir arayan hiçbir zaman kaybolmaz.

Otomasyon Olayları

İki otomasyon, dizini elle tekrar giriş yapmadan güncel tutar. İkisi de tek yönlüdür ve idempotenttir — zaten dönüştürülmüş bir kişide iki kez çalıştırmak hiçbir işlem yapmaz.

TetikleyiciNeredeKişi Üzerindeki Etkisi
Kazanıldı dönüşümü Bir kişiye bağlı bir Fırsat, Satış Hunisi'nde bir Kazanıldı sütununa sürüklenir. roles.isCustomertrue, roles.isLeadfalse, lifecycleStagecustomer. Bağlı kişisi olmayan veya kazanılmamış bir aşamaya bırakılan fırsatlar hiçbir şey yapmaz.
Çağrı Merkezi otomatik-adayı Sanal Santral → Çağrı Başlat'ta, dizinde henüz bulunmayan bir telefon numarasına giden bir çağrı başlatılır. Yeni bir kişi oluşturulur: roles.isLeadtrue, lifecycleStagesuspect, tags içinde "call-center" bulunur. Aynı numarayı tekrar aramak, çoğaltmak yerine mevcut kişiyi yeniden kullanır.

Otomasyonlar Bir Kişiyi Asla Düşürmez

Hiçbir otomasyon isCustomer'ı temizlemez veya lifecycleStage'i geriye almaz. Bir kişi otomatik olarak yalnızca hunide ileri (Müşteri'ye doğru) hareket eder; bir kişiyi düşürmek (örn. eski bir müşteriyi pasif olarak işaretlemek) her zaman elle yapılan bir düzenlemedir.

Tedarikçi Profili Alanları

roles.isVendor: true olan kişiler için ayrılmıştır — ayrı bir tedarikçi tablosu yerine aynı kayda eklenir, böylece hem müşteri hem tedarikçi olan bir kişi tek bir satır olarak kalır:

AlanAçıklama
taxId, vatNumberVergi ve KDV kayıt numaraları.
address, city, countryKayıtlı işletme konumu.
paymentTermsDays, currencySatın alma belgelerinde kullanılan ödeme koşulları ve faturalama para birimi.
categoriesTedarikçinin sağladığı şeyleri tanımlayan serbest metin etiketleri.
metricstotalOrders, onTimeDeliveries, lateDeliveries, averageLeadTimeDays, qualityScore, reliabilityScore, totalSpent, lastOrderDate — satın alma siparişi geçmişinden hesaplanır ve tedarikçinin profil panelinde gösterilir.

Sık Sorulan Sorular

Neden ayrı Müşteri/Tedarikçi/Aday tabloları yerine tek bir tablo?
Çünkü gerçek dünyadaki ilişkiler sürekli örtüşür — sizden de alan bir tedarikçi, müşteriye dönüşen bir aday, hem müşteri hem tedarikçi olan bir şirket. Ayrı tablolar sizi ya kaydı çoğaltmaya (ve kopyaların senkron dışı kalmasına izin vermeye) ya da her yerde tablolar arası birleştirmeler kurmaya zorlar. Rol bayraklarına sahip tek bir kayıt, her modülün bir kişinin kim olduğu konusunda her zaman aynı, güncel gerçeği görmesi anlamına gelir.
Tedarikçi Yönetimi'nde bir kişinin e-postasını güncellersem, her yerde değişir mi?
Evet. Tedarikçi Yönetimi, Müşteriler, Satış Hunisi ve Çağrı Merkezi'nin hepsi aynı temel kişi kaydını okur ve yazar — senkronda tutulacak modül başına bir kopya yoktur. Paylaşılan bir alanı (ad, e-posta, telefon) herhangi bir modülden düzenlemek her yerde anında günceller.
Bir kişinin lifecycleStage'i ile bir Fırsatın aşaması arasındaki fark nedir?
lifecycleStage, kişinin sizinle olan genel ilişkisini tanımlayan tek bir özelliğidir (potansiyel → aday → fırsat → müşteri). Bir Fırsatın aşaması (Nitelikli, Teklif, Pazarlık, Kazanıldı, Kaybedildi), Satış Hunisi'ndeki belirli bir fırsata aittir — bir kişinin aynı anda farklı aşamalarda birkaç Fırsatı olabilirken, kendi lifecycleStage'i bunlardan herhangi birinin (veya doğrudan bir satışın) gerçekte ne kadar ilerlediğini yansıtır.
Çağrı Merkezi'nden bir numara aramak hiç yinelenen kişi oluşturur mu?
Hayır. Çağrı Başlat, çevrilen numarayı normalize eder ve herhangi bir şey oluşturmadan önce her kişinin telefon alanına karşı kontrol eder. Tanınan bir numara mevcut kişiyi yeniden kullanır (ve adını ve rolünü gösterir); yalnızca gerçekten yeni bir numara yeni bir Aday kaydı alır.
Bir kişi Müşteri durumunu otomatik olarak kaybedebilir mi?
Hayır. Kazanıldı ve Çağrı Merkezi otomasyonları bir kişiyi yalnızca ileri (Müşteri'ye doğru) hareket ettirir. Bir kişiyi pasif olarak işaretlemek veya bir rol bayrağını kaldırmak her zaman Müşteriler veya Tedarikçi Yönetimi ekranından yapılan elle bir düzenlemedir — otomatik bir düşürme yolu yoktur.
Bu, Kişiler & Fırsatlar Kanban ekranındaki "Kişiler" ile aynı mı?
Aynı temel dizini paylaşırlar, ama farklı işlere hizmet ederler. Kişiler & Fırsatlar, aktif fırsatları yönetmek için günlük CRM Kanban'ıdır. Bu sayfa altındaki veri modelini belgeler — Kişi kaydı, rol bayrakları ve Müşteriler, Satış Hunisi, Tedarikçi Yönetimi ve Çağrı Merkezi'nin bununla nasıl entegre olduğu.