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_allher ş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_viewerokuyucunun tarafını, rol kimliklerini ve hedef kitle kimliklerini toplar;intranet_content.read_allsahipleri 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_atdoldurularak kaldırılır (src/cluster_erp/modules/intranet/content/services.py:544-583). UçlarGET,POST /acl/veDELETE /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
RetentionSweepolayındasweep_retention,analytics_retention_days(varsayılan 730) değerinden eskiintranet_analytics_eventssatı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.pybelge 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_atolmadığı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ı.