TotalApp Docs

Veri Toplama Motoru

Herhangi bir URL'yi temiz markdown'a veya yapılandırılmış JSON'a dönüştüren backend motoru — TotalApp'in web kazıma (scraping), site tarama ve yapılandırılmış veri çıkarma servisi.

Veri Toplama Motoru Nedir?

Veri Toplama Motoru, TotalApp'in backend motorlarından biridir. Görevi, ham bir URL'yi — bir şirket web sitesi, bir dokümantasyon sitesi, bir blog, bir teklif isteği (RFP) sayfası — platformun geri kalanının fiilen kullanabileceği bir şeye dönüştürmektir: temiz markdown veya sizin tanımladığınız bir şemayla eşleşen yapılandırılmış JSON.

Doğrudan bir web kazıma REST API'sini sarmalar; böylece canlı web verisine ihtiyaç duyan her modül (CRM, Proje Yönetimi, Yapay Zeka Asistanı) her ekranın kendi kazıyıcısını yeniden uygulaması yerine aynı üç işlemi çağırır. Her istek, isteği yapan tenant'ın kendi kapsamı altında çalışır; böylece kazınan veri tenant'lar arasında asla karışmaz.

Tek cümlede

Veri Toplama Motoruna bir URL verin — tek bir sayfa için temiz markdown, sayfa/derinlik sınırı içinde bir sitenin tam taraması veya sağladığınız bir şemayla eşleşen, canlı sayfadan doğrudan bir LLM tarafından çıkarılan bir JSON nesnesi döner.

Temel İşlemler

Her Veri Toplama Motoru çağrısı üç temel işlemden biridir. Tüm üst seviye modül entegrasyonları (CRM lead zenginleştirme, proje belgesi içe aktarma) bu aynı üç fonksiyonun üzerine inşa edilmiştir.

scrapeToMarkdown(url)

Gezinme çubukları, reklamlar, çerez banner'ları gibi gereksiz içerikler ayıklanmış temiz markdown döndüren tek sayfa kazıma işlemi. Bir belgeye, bir prompt'a veya bir iş akışı düğümüne doğrudan eklenmeye hazırdır. Çözümlenen kaynak URL'yi, markdown gövdesini ve sayfa başlığını döndürür.

crawlSite(url, options)

Bir URL'den başlayan tüm alan adı taraması. Bir dokümantasyon sitesinin veya kataloğun kontrolsüz bir maliyetle taranmaması için bir limit (maksimum sayfa, varsayılan 25) ve bir maxDepth (maksimum bağlantı keşif derinliği, varsayılan 2) alır. Keşfedilen her URL için bir markdown sayfası döndürür.

extractStructuredData(url, jsonSchema)

İstediğiniz alanları tam olarak tanımlayan bir JSON şeması tanımlayın; LLM tabanlı çıkarım bu alanları, sayfanın HTML düzeninden bağımsız olarak doğrudan canlı sayfadan çeker. Bu, CRM lead zenginleştirme ve teknik belge içe aktarmanın arkasındaki temel işlemdir.

Neden üç ayrı temel işlem?

Her biri farklı bir soruyu yanıtlar. "Bana bu tek sayfayı metin olarak ver" scrapeToMarkdown'dır. "Bana tüm bir siteyi metin olarak ver" crawlSite'tır. "Bana sayfanın nasıl düzenlendiğinden bağımsız olarak belirli alanları, yapılandırılmış şekilde ver" extractStructuredData'dır. Modül entegrasyonları işe uygun olan temel işlemi seçer — lead zenginleştirme yapılandırılmış alanlara ihtiyaç duyar, bu yüzden çıkarımı kullanır; teknik belge içe aktarma birçok sayfada tam sayfa içeriğine ihtiyaç duyar, bu yüzden taramayı kullanır.

Modül Entegrasyonları

Tenant tarafında herhangi bir kurulum gerektirmeden, iki modül zaten Veri Toplama Motorunu doğrudan çağırıyor.

EntegrasyonGiriş noktasıNe yapar
CRM Lead Zenginleştirme
enrichCRMLead(companyUrl)
Satış İstihbaratı → Lead Ekle formu Bir şirket URL'si yapıştırın, form çıkarılan şemadan otomatik olarak doldurulur — manuel veri girişi gerekmez.
Teknik Belge İçe Aktarma
ingestTechnicalDoc(docUrl, moduleType)
Proje Varlıkları → URL'den İçe Aktar Bir şartname, RFP veya dokümantasyon sitesini tarar (en fazla 40 sayfa, 3 derinlik) ve MES veya PM modülü için etiketlenmiş yapılandırılmış markdown bölümleri döndürür.

CRM lead zenginleştirme şeması

Çıkarım, yapıştırılan şirket URL'sinden tam olarak beş alan çeker:

MES / PM belge içe aktarma

Üretim ve proje şartname belgelerini içe aktarmak için kullanılır (MES = üretim yürütme içeriği, PM = proje yönetimi içeriği). Tarama, bir şartname sitesinin bağlantılı yapısını dolaşır ve her sayfayı kendi kaynak URL'siyle birlikte başlıklı bir markdown bölümü olarak geri verir; böylece içe aktaran ekran her bölümü ayrı ayrı işleyebilir veya dosyalayabilir.

Canlı Bilgi — RAG Besleyici Olarak

Klasik API tabanlı bir dil modeli yalnızca eğitim verisinde olanı bilir — bir şirketin web sitesinde dün ne olduğu hakkında hiçbir fikri yoktur. Veri Toplama Motoru, TotalApp'in sohbet ve terminal arayüzlerinin arkasında canlı bir alma-artırmalı-üretim (RAG) besleyicisi olarak durabilir; bir sorgu ihtiyaç duyduğu anda bayat bir önbelleğe güvenmek yerine taze bağlam kazır.

1. Kullanıcı canlı bir sayfaya atıfta bulunan bir soru sorar 2. Motor sayfayı anında kazır 3. Taze içerik modele bağlam olarak sunulur

Örneğin, Yapay Zeka Asistanı sohbetinden veya bir terminalden "Bu şirketin en son blog yazılarını özetle" diye sormak, referans verilen sayfanın anında kazınmasını tetikler — yanıt, saklanan bir görüntüye değil, sayfada şu anda gerçekten bulunan içeriğe dayanır.

Akıllı Bekleme (Smart Wait)

Modern siteler sıklıkla JS ağırlıklıdır — içerik eşzamansız olarak yüklenir, animasyonla belirir veya ilk sayfa yüklemesinden sonra istemci tarafında render edilir. Akıllı Bekleme, yarı yüklenmiş bir DOM'u kapmak yerine, sayfa fiilen render edilmeyi bitirene kadar çıkarımı erteler. Bu sayede yoğun animasyonlu veya eşzamansız yüklenen modern web uygulamaları bile boş ilk kabukları değil, eksiksiz olarak kazınır.

Geliştirici Notları

Veri Toplama Motoru yalnızca backend'de çalışan bir servistir — kendine ait özel bir ekranı yoktur. server/server.ts içine bağlanan sunucu tarafı işleyicilerden çağrılır; her biri standart uygulama düzeyinde kimlik doğrulama (requireAppAuth) ve bir JSON POST gövdesi gerektirir.

İşleyiciGövdeÇağırdığı
handleIngestionScrape{ url }scrapeToMarkdown
handleIngestionCrawl{ url, limit?, maxDepth? }crawlSite
handleIngestionExtract{ url, jsonSchema }extractStructuredData
handleIngestionCrmLeadEnrich{ companyUrl }enrichCRMLead
handleIngestionTechnicalDoc{ docUrl, moduleType }ingestTechnicalDoc

Hatalar sessizce yutulmaz, yüzeye çıkar

Her temel işlem, altındaki isteği sarmalar ve hata durumunda kaynak URL'yi de içeren açıklayıcı bir hata fırlatır — hiç markdown döndürmeyen bir kazıma, hiç sayfa döndürmeyen bir tarama veya hiç veri döndürmeyen bir çıkarım, sessizce boş sonuç döndürmek yerine açık hatalar oluşturur. İşleyiciler bunları, mesajı içeren HTTP 502 yanıtları olarak iletir.

Sıkça Sorulan Sorular

Veri Toplama Motoru kazınan içeriği kalıcı olarak saklıyor mu?
Hayır, kendi başına saklamaz — kazınan/çıkarılan sonucu, ne yapılacağına karar veren çağıran modüle döndürür. CRM lead zenginleştirme, çıkarılan alanları yeni lead kaydına yazar; teknik belge içe aktarma, bölümleri içe aktaran ekrana dosyalaması için verir. Motorun kendisi istek bazında durumsuzdur (stateless).
Bir sayfa kazınamazsa (engellenirse, zaman aşımına uğrarsa, 404 dönerse) ne olur?
Çağrı, URL'yi ve altındaki hata nedenini tanımlayan açıklayıcı bir hatayla reddedilir ve HTTP işleyicisi bu mesajla birlikte bir 502 döndürür. Hiçbir şey sessizce boş olarak döndürülmez — çağıran ekran gerçek hatayı görür.
Tarama maliyeti nasıl kontrol ediliyor?
crawlSite her zaman bir limit (maksimum sayfa) ve maxDepth (maksimum bağlantı keşif derinliği) alır; varsayılan olarak 25 sayfa / 2 derinliktir. Daha derin bir taramaya ihtiyaç duyan çağıranlar — 40 sayfa / 3 derinlik kullanan teknik belge içe aktarma gibi — sınırsız tarama yapmak yerine açıkça daha yüksek bir limite geçer.
Bu, Matrix Agent ile aynı şey mi?
Hayır. Matris Ajanı, zaten sahip olduğunuz metni ağırlıklı kurallara göre puanlar. Veri Toplama Motorunun görevi bunun bir öncesindedir — metni (veya yapılandırılmış veriyi) ilk etapta web'den almaktır. Yaygın bir kalıp, bir sayfayı Veri Toplama Motoruyla kazımak, ardından elde edilen markdown'ı puanlama için Matrix Agent'e vermektir.
Veri Toplama Motoru verisi tenant bazlı mı?
Evet. Her kazıma, tarama ve çıkarım çağrısı kimlik doğrulamalıdır ve isteği yapan tenant'ın kendi kapsamı altında çalışır — bir tenant'ın kazınan veya çıkarılan verisi başka bir tenant'a asla görünmez.