Bu sayfa, intranet modülünün çalışanlara mesaj taşıyan üç bölümünü açıklar. src/cluster_erp/modules/intranet/notifications/ içindeki notifications alt modülü uygulama içi gelen kutusudur. src/cluster_erp/modules/intranet/notify.py, bildirim oluşturan ve e-posta kanalını mail modülüne devreden yardımcıdır. src/cluster_erp/modules/intranet/delivery/ içindeki delivery alt modülü resmi belgeleri çalışanlara teslim eder ve alındıyı kaydeder.
Kısaca¶
- Bildirim bir kez saklanır ve kanal başına bir gönderim satırı olarak dağıtılır: uygulama içi hemen teslim edilir, e-posta sistem posta kutusundan gider, push ve SMS atlandı olarak kaydedilir (
src/cluster_erp/modules/intranet/notifications/services.py:1-9). - Okunma durumu sunucuda
seen_atveread_atolarak tutulur (src/cluster_erp/modules/intranet/notifications/services.py:193-231). - Bildirimler İngilizce bir yedek başlık ile parametreli bir i18n anahtarı taşır; böylece istemci onları okuyucunun dilinde çizer (
src/cluster_erp/modules/intranet/notifications/services.py:53-58). - Resmi tebligat
pendingdurumundandelivereddurumuna, oradanacknowledgedveyarefuseddurumuna geçer; alındı kimin, ne zaman ve hangi istemci adresinden onayladığını kaydeder (src/cluster_erp/modules/intranet/delivery/services.py:26-30,src/cluster_erp/modules/intranet/delivery/services.py:221-243).
Nasıl çalışır¶
Bildirim yolu¶
flowchart TD A["intranet aksiyonu: izin kararı, talep sonucu, tebligat, etkinlik değişikliği"] --> N["notify_party"] B["bus üzerinden IntranetNotify olayı"] --> H["Module._handle_notify"] H --> S["NotificationService.create"] N --> S S --> R["IntranetNotification satırı"] S --> D1["in_app gönderimi: delivered"] S --> D2["email gönderimi: queued"] S --> D3["push veya sms gönderimi: skipped"] D2 --> F["fan_out_email"] F --> E1["ResolveEntityEmails"] E1 --> E2["SendTransactionalEmail"] E2 --> M["mark_email_dispatch: sent veya skipped"]
Düz anlatımla:
- Bir intranet servisi
notify_partyyardımcısını kendi oturumunda çağırır; böylece bildirim, ona yol açan aksiyonla birlikte işlenir. Yardımcı satır düzeyi korumayı bu ekleme için yalnızca alıcıya açar (src/cluster_erp/modules/intranet/notify.py:1-6,src/cluster_erp/modules/intranet/notify.py:68-113). - Başka bir modül EventBus üzerinde
IntranetNotifyyayımlayabilir. İşleyici, çağıranın kiracı veritabanına yazar ve işler (src/cluster_erp/modules/intranet/module.py:305-345,src/cluster_erp/core/contracts.py:2194-2208). NotificationService.create, bildirimi ve istenen her kanal için bir gönderim satırını ekler (src/cluster_erp/modules/intranet/notifications/services.py:37-99).- E-posta kanalında
fan_out_email,partiesmodülüne kişinin adresleriniResolveEntityEmailsile sorar, birincil olanı alır ve mail modülündenSendTransactionalEmailile göndermesini ister (src/cluster_erp/modules/intranet/notify.py:20-65). - E-posta gönderimi, sistem posta kutusu mesajı kabul ettiğinde
sent, aksi halde adres yok veya işleyici yok gibi nedenleskippedolarak işaretlenir.sentbir teslim alındısı değil, bir denemedir (src/cluster_erp/modules/intranet/notifications/services.py:111-135).
Gönderim durumları queued, sent, delivered, bounced, failed ve skipped; kanallar in_app, email, push ve sms şeklindedir (src/cluster_erp/modules/intranet/models.py:82-90). Mail modülünün nasıl gönderdiği mail modülü sayfasındadır.
Gelen kutusu uçları¶
| Yöntem ve yol | Amaç | Kaynak |
|---|---|---|
GET /notifications/ |
Çağıranın kapsamında listeleme | src/cluster_erp/modules/intranet/notifications/routes.py:31-64 |
GET /notifications/mine |
Çağıranın kendi gelen kutusu | src/cluster_erp/modules/intranet/notifications/routes.py:67-89 |
GET /notifications/unread-count |
Çağıranın okunmamış sayısı | src/cluster_erp/modules/intranet/notifications/routes.py:92-110 |
POST /notifications/read-all |
Tümünü okundu işaretleme | src/cluster_erp/modules/intranet/notifications/routes.py:113-132 |
GET /notifications/{id}/dispatches |
Bir bildirimin kanal satırları | src/cluster_erp/modules/intranet/notifications/routes.py:153-164 |
GET /notifications/{id}, POST .../read, POST .../seen |
Birini okuma, okundu işaretleme, görüldü işaretleme | src/cluster_erp/modules/intranet/notifications/routes.py:167-199 |
Başka bir kişinin gelen kutusunu saymak veya işaretlemek intranet_notification.read_all ister (src/cluster_erp/modules/intranet/notifications/routes.py:99-130). Metadata tek bir aksiyon tanımlar: Okundu İşaretle (src/cluster_erp/modules/intranet/notifications/metadata.py:44-48).
Resmi tebligat¶
Tebligatın (IntranetOfficialDelivery) intranet_official_delivery dizisinden gelen bir kodu, alıcı tarafı, başlığı, kategorisi, gizlilik bayrağı, bir belge sürümüne veya eke bağlantısı, dönemi, kanalı ve imza gereksinimi vardır (src/cluster_erp/modules/intranet/models.py:936-1015, src/cluster_erp/modules/intranet/delivery/services.py:130-154). Kategoriler payslip, contract, certificate, disciplinary, commendation, notice, id_card ve other şeklindedir (src/cluster_erp/modules/intranet/models.py:125-134).
stateDiagram-v2 [*] --> pending pending --> delivered: deliver pending --> acknowledged: acknowledge delivered --> acknowledged: acknowledge pending --> refused: refuse delivered --> refused: refuse
Düz anlatımla: tebligat pending olarak başlar. Teslim Et delivered_at alanını doldurur ve çalışana intranet.notif_delivery anahtarıyla uygulama içinde ve e-postayla bildirim gönderir. Teslim Aldım zamanı, istemci adresini ve isteğe bağlı bir imza ekini kaydeder; yalnızca muhatap onaylayabilir. Reddet bir reddi kaydeder (src/cluster_erp/modules/intranet/delivery/services.py:176-244).
| Aksiyon | Etiket | Koşul | Kaynak |
|---|---|---|---|
download_document |
Belgeyi Aç | yok | src/cluster_erp/modules/intranet/delivery/metadata.py:98-106 |
deliver |
Teslim Et | status = pending |
src/cluster_erp/modules/intranet/delivery/metadata.py:107-115 |
acknowledge |
Teslim Aldım | status = delivered |
src/cluster_erp/modules/intranet/delivery/metadata.py:116-124 |
refuse |
Reddet | status = delivered |
src/cluster_erp/modules/intranet/delivery/metadata.py:125-133 |
GET /deliveries/{id}/document dosyayı yalnızca tebligatın satır düzeyi denetiminden sonra akıtır. Bağlı bir belge sürümünü EventBus üzerinden ResolveDocumentVersionFile ile dosyasına çözer (src/cluster_erp/modules/intranet/delivery/routes.py:120-164).
Neden böyle kurulmuş¶
notify.pybelge dizesi uygulama içini garantili kanal, e-posta ve push'u ise teslim iddia etmeyen en iyi çaba kanalları olarak adlandırır (src/cluster_erp/modules/intranet/notify.py:1-6).- Gönderim modeli belge dizesi, arayüzün onaylanmamış bir bildirimi teslim edilmemiş saymaması gerektiğini belirtir (
src/cluster_erp/modules/intranet/models.py:655-660). - Tebligat belge dizesi, merkezi yayımlamanın yetmediğini; çalışanın belgeyi aldığının gösterilmesi gerektiğini belirtir (
src/cluster_erp/modules/intranet/delivery/services.py:1-4).
Kurallar ve sınırlar¶
payslip,disciplinaryvecontractkategorileri, oluşturan aksini söylemedikçe gizlidir (src/cluster_erp/modules/intranet/delivery/services.py:37,src/cluster_erp/modules/intranet/delivery/services.py:130-135).- Gizli bir tebligat yalnızca alıcısına ve
intranet_official_delivery.read_allsahiplerine görünür; alıcının yöneticisine görünmez (src/cluster_erp/modules/intranet/delivery/services.py:40-64). - Tebligat oluşturmak
intranet_official_delivery.create, teslim ve ret.update, alındı onayı.readister (src/cluster_erp/modules/intranet/delivery/routes.py:84-239). - Tebligatı silmek
deleted_atalanını doldurur (src/cluster_erp/modules/intranet/delivery/services.py:246-251).
Diğer parçalarla etkileşim¶
| Sözleşme | Yön | Amaç | Kaynak |
|---|---|---|---|
IntranetNotify |
intranet abone olur | başka bir modül bir gelen kutusuna bildirim bırakır | src/cluster_erp/modules/intranet/module.py:199-203 |
ResolveEntityEmails |
intranet yayar | alıcı tarafın e-posta adresleri | src/cluster_erp/modules/intranet/notify.py:78-82 |
SendTransactionalEmail |
intranet yayar | sistem posta kutusundan gönderim | src/cluster_erp/modules/intranet/notify.py:91-99 |
ResolveDocumentVersionFile |
intranet sorgular | teslim edilen belge sürümünün arkasındaki dosya | src/cluster_erp/modules/intranet/delivery/routes.py:143-150 |
Sözleşme listesi sözleşmeler başvurusunda yer alır. Platform genelindeki bildirim kuralları bildirim kuralları sayfasındadır.
Sınırlar ve açık noktalar¶
src/içindesrc/cluster_erp/core/contracts.pydışında birIntranetNotifyoluşturma bulunamadı; modül içinde bildirimlernotify_partyile oluşturulur.- Push ve SMS gönderimleri
channel not configuredhatasıylaskippedolarak kaydedilir (src/cluster_erp/modules/intranet/notifications/services.py:90-96). - Gönderim satırında
next_retry_atveattempt_novardır, ancaksrc/veyadeploy/içinde bir yeniden deneme işi bulunamadı (src/cluster_erp/modules/intranet/models.py:655-686).
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| notification | IntranetNotification |
Bir kişinin uygulama içi gelen kutusundaki tek mesaj. | Bildirim | src/cluster_erp/modules/intranet/models.py:614 |
| dispatch | IntranetNotificationDispatch |
Bir kanalın bir bildirimi teslim etme denemesinin kaydı. | Gönderim kaydı | src/cluster_erp/modules/intranet/models.py:655 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.