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

Açıklama

İntranet erişimi, hedef kitlesi ve saklama

İntranetin kişisel kayıtları nasıl kapsamladığı, içeriği erişim izinleriyle nasıl süzdüğü, hedef kitleleri nasıl kurduğu, kişiyi nasıl çözdüğü ve analitiği nasıl sakladığı.

Bu sayfa intranet modülünün kesişen kurallarını açıklar. src/cluster_erp/modules/intranet/access.py kişisel kayıtları kapsamlar ve içerik görüntüleyicisini çözer, src/cluster_erp/modules/intranet/context.py işlemi yapan kişiyi çözer, src/cluster_erp/modules/intranet/retention_handlers.py analitik olaylarını yaşlandırır ve src/cluster_erp/modules/intranet/validation.py form girdisini düzgünleştirir. Erişim izinleri ve hedef kitleler src/cluster_erp/modules/intranet/content/services.py içinde durur.

Kısaca

  • Erişim ve hedef kitle iki ayrı eksendir. Erişim izinleri içeriği kimin görebileceğine, hedef kitleler kimin hedeflendiğine karar verir (src/cluster_erp/modules/intranet/models.py:8-11).
  • Kişisel kayıtlar (izin, talepler, tebligat, gelen kutusu) üç katman kullanır: read_all her şeyi görür, diğerleri kendi kayıtlarını ve ekiplerininkini görür, tarafı olmayan çağıran hiçbir şey görmez (src/cluster_erp/modules/intranet/access.py:1-21).
  • İşlemi yapan kişi, oturum açan kullanıcının çalışan bağlantısının tarafıdır (src/cluster_erp/modules/intranet/context.py:1-30).
  • Bir gönderinin okuma analitiği yalnızca toplu gösterilir; asgari grup büyüklüğünün altındaki tekil sayılar gizlenir (src/cluster_erp/modules/intranet/content/services.py:1327-1355).

Nasıl çalışır

İşlemi yapan kişi

resolve_party_for_user, oturum açan kullanıcıdan employee_id okur ve tarafı GetPartyForEmployee ile sorar. Çalışan bağlantısı olmayan oturum hiçbir tarafa çözülmez (src/cluster_erp/modules/intranet/context.py:20-30). Kişisel yazmalarda effective_party_guarded çağıranın kendi tarafını kullanır; başka bir tarafı adlandırmak, ucun verdiği ayrıcalıklı izni ister, örneğin intranet_leave_request.read_all (src/cluster_erp/modules/intranet/access.py:147-170). Adı verilen taraf ayrıca aktif bir çalışan olmalıdır (src/cluster_erp/modules/intranet/access.py:124-144).

Kişisel kayıtlar için satır kapsamı

resolve_scope, çekirdek satır kapsamı yardımcılarından bir kapsam döndürür (src/cluster_erp/modules/intranet/access.py:189-220):

Çağıran Görür Kaynak
<entity>.read_all sahibi her kayıt src/cluster_erp/modules/intranet/access.py:209-210
tarafı var kendi kayıtları ve GetTeamPartyIds ile canlı okunan ekip src/cluster_erp/modules/intranet/access.py:173-186, src/cluster_erp/modules/intranet/access.py:211-218
tarafı yok hiçbir şey src/cluster_erp/modules/intranet/access.py:213-216

Çözülen kapsam ayrıca veritabanının satır düzeyi güvenlik korumasına yayımlanır (src/cluster_erp/modules/intranet/access.py:202-219). Mekanizma alan ve satır erişimi ve çoklu kiracılık sayfalarında anlatılır. Resmi tebligat bir kural ekler: gizli tebligat yalnızca alıcısına ve read_all sahiplerine görünür (src/cluster_erp/modules/intranet/delivery/services.py:40-64).

İçerik için erişim izinleri

Erişim izni (IntranetAclGrant) bir alana veya gönderiye bağlanır ve can_view, can_edit ve can_publish bayraklarıyla bir alan adlandırır: everyone, role, party veya segment (src/cluster_erp/modules/intranet/models.py:78-79, src/cluster_erp/modules/intranet/models.py:379-408).

  • Listeleme izin tablosunu bir SQL koşulu olarak birleştirir. Kendisinde veya alanında görüntüleme izni olmayan gönderi her okuyucuya görünür; aksi halde okuyucu taraf, rol veya hedef kitleyle bir izinle eşleşmelidir (src/cluster_erp/modules/intranet/content/services.py:585-626).
  • resolve_acl_viewer okuyucunun tarafını, rol kimliklerini ve hedef kitle kimliklerini toplar; intranet_content.read_all sahipleri süzmeyi atlar (src/cluster_erp/modules/intranet/access.py:78-121).
  • Yayın izinleri yayın yetkisini daraltır: alanda veya gönderide yayın izni yoksa yalnız yetki karar verir; izin varsa işlemi yapan bunlardan biriyle eşleşmelidir (src/cluster_erp/modules/intranet/content/services.py:628-660).
  • İzinler konu, alan ve kimlik başına bir güncelleme-ekleme ile konur ve deleted_at doldurularak kaldırılır (src/cluster_erp/modules/intranet/content/services.py:544-583). Uçlar GET, POST /acl/ ve DELETE /acl/{grant_id} şeklindedir (src/cluster_erp/modules/intranet/content/routes.py:515-546).

Hedef kitleler

flowchart LR
 F["hedef kitle oluşturucu alanları"] --> A["_assemble_rule"]
 A --> R["include ve exclude kuralı"]
 R --> B["rebuild_members"]
 P["DirectoryService._live_people"] --> B
 Q["GetProjectMemberPartyIds"] --> B
 B --> M["IntranetSegmentMember satırları"]
 M --> U["yayın alıcıları, ACL segment alanı, etkinlik hedef kitlesi"]

Düz anlatımla: hedef kitle oluşturucu departmanlar, kuruluşlar, adı verilen taraflar, projeler, unvanlar ve konumlar üzerinde include ve exclude bölümlü bir kural saklar (src/cluster_erp/modules/intranet/content/services.py:185-205). Dolu herhangi bir ölçüt eşleştiğinde kişi eşleşir; unvanlar ve konumlar büyük-küçük harf ve çevre boşluklarından bağımsız karşılaştırılır; boş kural hiç kimseyle eşleşmez (src/cluster_erp/modules/intranet/content/services.py:135-179). rebuild_members dinamik üyeleri emekliye ayırır, canlı çalışanları okur, proje ekiplerini GetProjectMemberPartyIds ile çözer ve her eşleşme için bir üye satırı ekler. Elle eklenen üyeler korunur (src/cluster_erp/modules/intranet/content/services.py:426-506). Bir gönderiyi yayımlamak önce hedef kitlesini yeniden kurar (src/cluster_erp/modules/intranet/content/services.py:1022-1035). POST /segments/{id}/rebuild ve POST /segments/rebuild-all istek üzerine yeniden kurar (src/cluster_erp/modules/intranet/content/routes.py:604-633).

Analitik tabanı ve saklama

  • IntranetSettings.min_group_size (varsayılan 5), altında tekil okuyucu sayılarının gizlendiği tabandır; toplamlar her zaman gösterilir (src/cluster_erp/modules/intranet/models.py:155-200, src/cluster_erp/modules/intranet/content/services.py:1327-1355).
  • Her RetentionSweep olayında sweep_retention, analytics_retention_days (varsayılan 730) değerinden eski intranet_analytics_events satırlarını siler. Sıfır veya daha küçük bir pencere her şeyi tutar (src/cluster_erp/modules/intranet/retention_handlers.py:1-55). Genel saklama mekanizması records modülü sayfasındadır.

Girdi düzgünleştirme

scrub_blank_strings, dokunulmamış form alanları canlı satır benzersiz indeksleriyle çakışmasın diye boş dizeleri doğrulamadan önce değersiz yapar (src/cluster_erp/modules/intranet/validation.py:1-25).

Neden böyle kurulmuş

  • Model belge dizesi erişim ile hedeflemenin birleştirilmesini alanın en çok tekrarlanan hatası olarak adlandırır ve onay deposunun analitikten ayrı tutulduğunu belirtir (src/cluster_erp/modules/intranet/models.py:8-19).
  • access.py belge dizesi, kaba bir okuma yetkisinin tek başına herkesin her bordroyu okumasına izin vereceğini belirtir (src/cluster_erp/modules/intranet/access.py:3-5).
  • Saklama belge dizesi, analitik olaylarında deleted_at olmadığını, bu yüzden genel temizliğin onları hiç görmediğini belirtir (src/cluster_erp/modules/intranet/retention_handlers.py:1-8).

Kurallar ve sınırlar

  • Bu modülde fiziksel silme, penceresini aşmış analitik olaylarıyla sınırlıdır (src/cluster_erp/modules/intranet/retention_handlers.py:44-52). Projenin yazılı mühendislik kuralları, saklama süresi dolan olay satırlarının saklama temizliğine izin verir.
  • Karar aksiyonları .update üzerine yükseltilmiş izinler ister (src/cluster_erp/modules/intranet/access.py:66-75).

Diğer parçalarla etkileşim

Sözleşme Amaç Kaynak
GetPartyForEmployee işlemi yapan kişi src/cluster_erp/modules/intranet/context.py:25-27
GetTeamPartyIds kapsam için canlı ekip kapanışı src/cluster_erp/modules/intranet/access.py:181-186
GetProjectMemberPartyIds hedef kitle kurallarındaki proje ekipleri src/cluster_erp/modules/intranet/content/services.py:494-502
RetentionSweep günlük saklama geçişi src/cluster_erp/modules/intranet/module.py:224-229

Sınırlar ve açık noktalar

  • Hedef kitle üyeliği bir anlık görüntüdür; her çalışan değişikliğinde değil, yeniden kurmada veya yayında değişir (src/cluster_erp/modules/intranet/content/services.py:426-433, src/cluster_erp/modules/intranet/content/services.py:1027-1035).
  • Rehber adları 10000 sınırlı tek bir taraf aramasından gelir (src/cluster_erp/modules/intranet/directory/services.py:74-80).

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
access grant IntranetAclGrant Bir alanda veya gönderide herkes, bir rol, bir taraf veya bir hedef kitle için görüntüleme, düzenleme veya yayın hakkı. Erişim izni src/cluster_erp/modules/intranet/models.py:379
row scope resolve_scope Bir çağıranın kayıtlarını görebileceği taraflar kümesi. satır kapsamı src/cluster_erp/modules/intranet/access.py:189
minimum group size min_group_size Altında tekil okuyucu sayılarının gizlendiği taban. Asgari grup büyüklüğü src/cluster_erp/modules/intranet/models.py:155-200

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

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