Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Karar kayıtları

Açıklama

Taraf birleşimi

Cluster ERP'de müşterilerin, tedarikçilerin, kuruluşların ve çalışanların EventBus üzerinden bağlanan rol facet'leriyle tek bir taraf kaydı olduğu kuralın karar kaydı.

Durum: Kabul edildi; projenin yazılı mühendislik kurallarında belirtilir. Bu kayıt, bir kişinin veya kuruluşun Cluster ERP'de bir kez, bir taraf (Party) olarak var olduğu ve müşteri, tedarikçi, sahip olunan kuruluş ve çalışanın o tarafın rolleri olarak tek bir kartta facet olarak gösterildiği kuralı kapsar. Modül Parties modülü (parties) sayfasında anlatılır.

Bağlam

Müşteriler, tedarikçiler, sahip olunan kuruluşlar ve çalışanlar farklı modüllerde yaşar: crm, procurement ve owned_organisations. Ortak bir kayıt olmadan aynı şirket veya kişi birkaç yerde girilir ve bakımı yapılırdı. Projenin yazılı mühendislik kuralları her şeyin bir taraf olduğunu söyler: ayrı kartlar yerine rol facet'leri olan tek bir taraf kartı, FacetMeta ile bildirilen ve PartyRoleSet ile eşitlenen roller ve parties modülünü import eden hiçbir modül. Başka bir gerekçe koddan belirlenemez.

Karar

  • Taraf kanonik kayıttır. is_customer, is_supplier ve is_employee bayrakları hangi rolleri oynadığını söyler (src/cluster_erp/modules/parties/parties/models.py:33-35).
  • Her rol kaydı bir party_id tutar. Metadata'sı IdentityMeta bildirir; böylece web uygulaması ayrı bir rol kartı yerine taraf kartını açar (src/cluster_erp/core/metadata.py:304-313). Yedi varlık metadata nesnesi bunu bildirir (grep -rn "identity=IdentityMeta" ile sayıldı).
  • Taraf kartı rolleri, her biri party_id üzerinde düz bir sorgu süzgeciyle yüklenen FacetMeta girdileri olarak listeler (src/cluster_erp/core/metadata.py:357-377, src/cluster_erp/modules/parties/parties/metadata.py:550-722).
  • Bir tarafı bağlayan veya bağını kaldıran rol modülü PartyRoleSet yayar; parties modülü ilgili bayrağı ayarlar (src/cluster_erp/core/contracts.py:47-55).

Sıra şeması bir tedarikçinin bir tarafa bağlanmasını gösterir.

sequenceDiagram
 participant Sup as procurement SupplierService
 participant Bus as EventBus
 participant Par as parties Module
 participant DB as Party satırı
 Sup->>Sup: party_id ile Supplier oluştur
 Sup->>Bus: PartyRoleSet yay (role supplier, active true)
 Bus->>Par: _handle_party_role_set
 Par->>DB: is_supplier ve updated_at ayarla

Düzyazıyla: tedarikçi satırı yazıldıktan sonra servis taraf kimliği, rol ve active=True ile PartyRoleSet yayar (src/cluster_erp/modules/procurement/suppliers/services.py:130-145). Parties modülü bu olaya abone olmuştur (src/cluster_erp/modules/parties/module.py:130). İşleyicisi rolü bayrak sütununa eşler ve tarafı kendi oturumunda günceller (src/cluster_erp/modules/parties/module.py:168-192).

Sonuçlar

  • Taraf kartı beş facet gösterir: müşteri (crm), tedarikçi (procurement), sahip olunan kuruluş, çalışan ve görevlendirme (owned_organisations). Görevlendirme facet'i yalnız is_employee ayarlıysa görünür (src/cluster_erp/modules/parties/parties/metadata.py:551, src/cluster_erp/modules/parties/parties/metadata.py:629, src/cluster_erp/modules/parties/parties/metadata.py:680, src/cluster_erp/modules/parties/parties/metadata.py:700, src/cluster_erp/modules/parties/parties/metadata.py:718-722).
  • Rolleriyle birlikte tek adımda taraf oluşturmak, server/routes/party_composite.py içindeki uygulama katmanı düzenlemesidir ve istemciye composite_create ile bildirilir (src/cluster_erp/server/routes/party_composite.py:1-10, src/cluster_erp/modules/parties/parties/metadata.py:319).
  • Var olan bir tarafa rol eklemek de uygulama katmanı düzenlemesidir (src/cluster_erp/server/routes/party_roles.py:1-10).
  • Bir açılış geçişi, kaçırılan olaylara karşı güvenlik ağı olarak bayrakları var olan facet'lerle uzlaştırır (src/cluster_erp/server/app.py:1002-1008).
  • Bayrak güncellemesi ORM üzerinden gider: işleyici tarafı yükler, bayrağı ayarlar ve commit eder; böylece değişiklik geçmişi değişikliği kaydeder ve updated_at onupdate ile yenilenir (src/cluster_erp/modules/parties/module.py:184-193).

Kodun uyguladığı yerler

Mekanizma Neyi denetler Kaynak
test_guided_party_creation_is_declared_in_metadata Rehberli oluşturma tam olarak customer, supplier ve employee rollerini, her biri bayrak alanı ve veri gruplarıyla sunar tests/test_metadata_driven_rules.py:51-60
tests/test_party_form_contract.py Taraf formunun metadata'sı, şemaları, hata kodları ve çevirileri uyuşur tests/test_party_form_contract.py:1-6
Modül sınır testi Hiçbir rol modülü parties modülünü import etmez tests/test_architecture_boundaries.py:46-57
_sync_party_role_flags Her açılıştan sonra bayraklar var olan facet'lerle eşleşir src/cluster_erp/server/app.py:1002-1008

İlgili sayfalar


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

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