Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İş modülleri

Açıklama

İntranet bildirimleri ve tebligat

İntranet gelen kutusunun bildirimleri nasıl sakladığı, e-posta dahil kanallara nasıl dağıttığı ve resmi belge tebliğinin alındıyı nasıl kaydettiği.

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_at ve read_at olarak 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 pending durumundan delivered durumuna, oradan acknowledged veya refused durumuna 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:

  1. Bir intranet servisi notify_party yardı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).
  2. Başka bir modül EventBus üzerinde IntranetNotify yayı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).
  3. 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).
  4. E-posta kanalında fan_out_email, parties modülüne kişinin adreslerini ResolveEntityEmails ile sorar, birincil olanı alır ve mail modülünden SendTransactionalEmail ile göndermesini ister (src/cluster_erp/modules/intranet/notify.py:20-65).
  5. E-posta gönderimi, sistem posta kutusu mesajı kabul ettiğinde sent, aksi halde adres yok veya işleyici yok gibi nedenle skipped olarak işaretlenir. sent bir 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.py belge 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, disciplinary ve contract kategorileri, 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_all sahiplerine 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ı .read ister (src/cluster_erp/modules/intranet/delivery/routes.py:84-239).
  • Tebligatı silmek deleted_at alanı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çinde src/cluster_erp/core/contracts.py dışında bir IntranetNotify oluşturma bulunamadı; modül içinde bildirimler notify_party ile oluşturulur.
  • Push ve SMS gönderimleri channel not configured hatasıyla skipped olarak kaydedilir (src/cluster_erp/modules/intranet/notifications/services.py:90-96).
  • Gönderim satırında next_retry_at ve attempt_no vardır, ancak src/ veya deploy/ 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ı.

Doğrulanan commit 92f8051 · 2026-11-13