Masaüstü ana penceresinin sağ tarafında bir sohbet paneli vardır. Bu başvuru src/cluster_erp/desktop/widgets/chat/ içindeki ChatWidget, TaskCard ve görev modelini açıklar: yazılan bir iletinin nasıl bir yanıta, bir gezinmeye ya da yönlendirmeli bir kayıt oluşturmaya dönüştüğünü. Panelin kullandığı niyet motoru niyet asistanı sayfasında belgelenir. Web istemcisinin sohbet ekranları asistan ve sohbet ekranları sayfasındadır.
Kapsam ve kaynak¶
- Tanım yeri:
ChatWidget(src/cluster_erp/desktop/widgets/chat/chat_widget.py:795),TaskCard(src/cluster_erp/desktop/widgets/chat/task_card.py:33),ChatTask,TaskFieldvebuild_task_fields(src/cluster_erp/desktop/widgets/chat/chat_task.py:12-316). - Sayı: kod içeren üç Python dosyası (2.827, 1.040 ve 316 satır) ve
assets/içinde iki arka plan görseli; klasör listelenerek sayıldı.
Yerleşim ve sinyaller¶
MainWindow paneli ayırıcısının üçüncü sütunu olarak yerleştirir. Kenar çubuğunun sohbet düğmesi (anahtar sidebar.chat) ve panelin kendi kapatma düğmesi genişliğini sıfır ile son genişlik, varsayılan olarak 380 piksel, arasında değiştirir (src/cluster_erp/desktop/widgets/main_window.py:103-122, src/cluster_erp/desktop/widgets/main_window.py:217-229).
| Sinyal | Bağımsız değişkenler | Alan | Kaynak |
|---|---|---|---|
close_requested |
yok | MainWindow._toggle_chat |
src/cluster_erp/desktop/widgets/chat/chat_widget.py:796, src/cluster_erp/desktop/widgets/main_window.py:111 |
navigation_requested |
modül, bölüm | MainWindow._on_navigate |
src/cluster_erp/desktop/widgets/chat/chat_widget.py:797, src/cluster_erp/desktop/widgets/main_window.py:112 |
Niyet motoru¶
Panel cluster_erp.ai.intent_engine içinden bir IntentEngine oluşturur ve onu oluşturmadan 100 ms sonra yükler (src/cluster_erp/desktop/widgets/chat/chat_widget.py:47, src/cluster_erp/desktop/widgets/chat/chat_widget.py:818-819). IntentEngine.load, en ve tr niyet derlemlerini dosyalardan okur ve her dil için bir vektörleştirici eğitir (src/cluster_erp/ai/intent_engine.py:364-394). Bu yüzden tanıma masaüstü sürecinin içinde çalışır. Panel sunucunun sohbet rotalarını çağırmaz; klasörde /chat yolları arandığında eşleşme çıkmaz.
İleti akışı¶
_on_send kullanıcının iletisini ve seçilen dosyaları konuşmaya ekler, ardından şu sırayla karar verir (src/cluster_erp/desktop/widgets/chat/chat_widget.py:1379-1493):
- Bir görev kartı etkinken bir iptal sözcüğü onu iptal eder; başka her metin kullanıcıdan kartı kullanmasını ister (
src/cluster_erp/desktop/widgets/chat/chat_widget.py:1393-1418). - Gündelik konuşma on kategorideki sabit ifade listelerinden yanıtlanır: yardım, ad, şirket, kimlik, izinler, saat, ruh hali, teşekkür, vedalaşma ve selamlaşma (
src/cluster_erp/desktop/widgets/chat/chat_widget.py:1115-1135,src/cluster_erp/desktop/widgets/chat/chat_widget.py:1472-1476). - Birden çok istek içeren bir ileti bölünür ve parçalar art arda işlenir (
src/cluster_erp/desktop/widgets/chat/chat_widget.py:1238-1300,src/cluster_erp/desktop/widgets/chat/chat_widget.py:1479-1493). _process_intentbir yazıyor göstergesi gösterir ve tanımayı başlatır (src/cluster_erp/desktop/widgets/chat/chat_widget.py:1495-1499).
_do_recognize_inner motordan en iyi beş eşleşmeyi ister (src/cluster_erp/desktop/widgets/chat/chat_widget.py:1534-1535). Eşleşme yoksa chat.no_intent_found metniyle yanıt verir. En iyi güven 0,60'ın altındaysa en iyi üç adayı listeler ve kullanıcıdan yeniden ifade etmesini ister (src/cluster_erp/desktop/widgets/chat/chat_widget.py:1552-1576). Aksi halde en iyi eşleşmeyi yönlendirir:
| Eşleşme | Yanıt | Kaynak |
|---|---|---|
count aksiyon ipucu |
limit 1 ile liste yoluna GET, ardından total |
src/cluster_erp/desktop/widgets/chat/chat_widget.py:1590-1592, src/cluster_erp/desktop/widgets/chat/chat_widget.py:1637-1683 |
GET liste yolu ve metinde bir gezinme sözcüğü |
varlığın bölümüne gezinme | src/cluster_erp/desktop/widgets/chat/chat_widget.py:1594-1598, src/cluster_erp/desktop/widgets/chat/chat_widget.py:2222-2244 |
GET liste yolu |
limit 10, çıkarılan süzgeçler ve arama terimiyle GET, ardından satırlar |
src/cluster_erp/desktop/widgets/chat/chat_widget.py:1600-1602, src/cluster_erp/desktop/widgets/chat/chat_widget.py:1739-1760 |
niyet kimliğinde create olan POST |
varlık için bir görev kartı | src/cluster_erp/desktop/widgets/chat/chat_widget.py:1604-1606, src/cluster_erp/desktop/widgets/chat/chat_widget.py:2363-2418 |
DELETE, PUT, PATCH ya da niyet kimliğinde delete veya update |
bir kayıt gerektiğini söyleyen ileti ve bölümü açma önerisi | src/cluster_erp/desktop/widgets/chat/chat_widget.py:1608-1633 |
| diğer her şey | aksiyon ipucundan bir yanıt | src/cluster_erp/desktop/widgets/chat/chat_widget.py:1635, src/cluster_erp/desktop/widgets/chat/chat_widget.py:2246-2266 |
Zaman ifadesi içeren bir soru, aynı varlığın liste eşleşmesini tek kayıt eşleşmesine tercih eder (src/cluster_erp/desktop/widgets/chat/chat_widget.py:1583-1588). Varlıktan kenar çubuğu bölümüne eşlem metadata'dan kurulur (src/cluster_erp/desktop/widgets/chat/chat_widget.py:2189-2220).
Görev kartları¶
build_task_fields, varlığın form metadata'sını bir adım listesine dönüştürür. Salt okunur alanları, gizli kapsam alanlarını ve otomatik üretilen alanları atlar; seçenekleri, yabancı anahtar kaynaklarını, varsayılanları, sınırları, koşulları ve iç içe anahtarları tutar (src/cluster_erp/desktop/widgets/chat/chat_task.py:190-316, src/cluster_erp/desktop/widgets/chat/chat_task.py:12-30).
ChatTask adımları yürütür:
| Üye | Davranış | Kaynak |
|---|---|---|
validate_value |
Zorunluluğu, en büyük uzunluğu ve en küçük ve en büyük değeri çevrilmiş iletilerle denetler | src/cluster_erp/desktop/widgets/chat/chat_task.py:72-89 |
can_skip, skip_current |
Yalnızca zorunlu olmayan alanlar atlanabilir | src/cluster_erp/desktop/widgets/chat/chat_task.py:99-108 |
advance, go_back, go_to, enter_summary |
Adımlar ve özet arasında hareket eder | src/cluster_erp/desktop/widgets/chat/chat_task.py:110-134 |
collect_data |
İstek gövdesini kurar, koşulu sağlanmayan alanları atar, atlanan alanlar için varsayılanları kullanır ve alanları nested_key değerine göre iç içe koyar |
src/cluster_erp/desktop/widgets/chat/chat_task.py:139-164 |
TaskCard her seferinde tek bir adım gösterir. Bir yabancı anahtar adımı kaynak listesinde limit 5 ile arama yapar (src/cluster_erp/desktop/widgets/chat/task_card.py:465-480). Gönderimde gövdeyi bir EntityDescriptor ile niyetin yoluna gönderir; böylece olağan değişiklik sinyali izler (src/cluster_erp/desktop/widgets/chat/task_card.py:735-765). Başarıdan sonra panel varlığın bölümünü açar (src/cluster_erp/desktop/widgets/chat/chat_widget.py:2435-2451).
Dosyalar ve ses¶
Dosyalar seçilebilir ya da panele bırakılabilir ve kullanıcının iletisinde görünür (src/cluster_erp/desktop/widgets/chat/chat_widget.py:2461-2516, src/cluster_erp/desktop/widgets/chat/chat_widget.py:2600-2616). Klasördeki tek post( çağrısı görev kartı gönderimidir (src/cluster_erp/desktop/widgets/chat/task_card.py:758) ve hiçbir /attachments yolu geçmez; bu yüzden seçilen dosyalar yüklenmez. Kayıt düğmesi bir zamanlayıcı çalıştırır ve durdurulduğunda içeriği boş bir ses iletisi ekler. Klasör hiçbir ses modülünü içe aktarmaz (src/cluster_erp/desktop/widgets/chat/chat_widget.py:2519-2551).
Kısıtlar ve doğrulama¶
- Liste ve sayı sorguları ve görev kartı gönderimi
ApiClientnesnesini çalışan olmadan doğrudan GUI iş parçacığında çağırır (src/cluster_erp/desktop/widgets/chat/chat_widget.py:1651,src/cluster_erp/desktop/widgets/chat/chat_widget.py:1758,src/cluster_erp/desktop/widgets/chat/task_card.py:757-764). - Sunucu, panelin yaptığı her çağrıya kullanıcının izinlerini uygular; panel kullanıcının izin listesini yalnızca bir gündelik konuşma sorusuna yanıt olarak gösterir (
src/cluster_erp/desktop/widgets/chat/chat_widget.py:1206-1207). - Arka plan görseli temaya göre
assets/chat_bg_dark.pngya daassets/chat_bg_light.pngiçinden seçilir (src/cluster_erp/desktop/widgets/chat/chat_widget.py:2653-2654).
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| chat panel | ChatWidget |
Yazılan istekleri yerel niyet motoruyla yanıtlayan sağ taraftaki masaüstü paneli. | sohbet paneli | src/cluster_erp/desktop/widgets/chat/chat_widget.py:795 |
| task card | TaskCard |
Bir oluşturma niyeti için metadata'dan kurulan ve bir kayıt oluşturan, konuşmadaki adım adım form. | görev kartı | src/cluster_erp/desktop/widgets/chat/task_card.py:33 |
| chat task | ChatTask |
Bir yönlendirmeli kayıt oluşturmanın durumu: adımlar, değerler ve durum. | sohbet görevi | src/cluster_erp/desktop/widgets/chat/chat_task.py:33 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.