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

Açıklama

Analitik olgular

Her modülün analiz edilebilir verisini analytics_facts.py ile nasıl bildirdiği ve analytics modülünün bu olgu kümelerini EventBus üzerinden nasıl toplayıp doğruladığı ve izinle süzdüğü.

Bu sayfa verinin analytics modülüne nasıl ulaştığını açıklar. Dokuz modülün her biri, bir veya daha fazla olgu kümesi bildiren bir analytics_facts.py dosyası tutar. Analytics modülü EventBus üzerinde DescribeAnalyticsFacts yayar, yanıtları src/cluster_erp/modules/analytics/registry.py içinde toplar, doğrular ve her analizin okuduğu kataloğu kurar. Hiçbir modül analytics modülünü içe aktarmaz; analytics modülü de hiçbir modülü içe aktarmaz (src/cluster_erp/core/contracts.py:2055-2057).

Kısaca

  • Olgu kümesi (AnalyticsFactSet) modülünü, bir anahtarı, bir etiketi, taneciğini, fiziksel kaynak tabloyu, boyutlarını ve ölçülerini, bir okuma iznini ve bir canlı süzgeci adlandırır (src/cluster_erp/core/contracts.py:2126-2154).
  • Katkı veren her modül, DescribeAnalyticsFacts olayına olgu kümelerini döndüren bir işleyiciyle abone olur (src/cluster_erp/modules/fleet/module.py:338-346).
  • registry.collect olayı yayar, her yanıtı tür denetiminden ve doğrulamadan geçirir, yinelenenleri reddeder ve bir FactCatalogue döndürür (src/cluster_erp/modules/analytics/registry.py:242-283).
  • Çağıran yalnızca read_permission iznine sahip olduğu olgu kümelerini görür (src/cluster_erp/modules/analytics/registry.py:100-109).

Nasıl çalışır

Toplama yolu

sequenceDiagram
 participant S as AnalyticsService
 participant R as registry.collect
 participant B as EventBus
 participant M as modülün analytics_facts.py dosyası
 S->>R: catalogue(permission_codes, locale)
 R->>B: DescribeAnalyticsFacts yayar
 B->>M: describe_analytics_facts(event)
 M-->>B: AnalyticsFactSet veya liste
 B-->>R: tüm işleyicilerin sonuçları
 R->>R: tür denetimi, validate_fact, yinelenen anahtar denetimi
 R-->>S: FactCatalogue
 S->>S: visible_to(permission_codes)

Düz anlatımla:

  1. AnalyticsService.catalogue, çağıranın diliyle registry.collect çağırır (src/cluster_erp/modules/analytics/service.py:55-62).
  2. collect, DescribeAnalyticsFacts(source_module="analytics", locale=...) yayar. Dil yalnızca etiketleri seçer; anahtarlar dilden bağımsız kalır (src/cluster_erp/modules/analytics/registry.py:253, src/cluster_erp/core/contracts.py:2060-2073).
  3. EventBus abone her işleyiciyi çağırır ve sonuçlarını döndürür. Hata fırlatan işleyici günlüğe yazılır ve hiçbir katkı vermez (src/cluster_erp/core/event_bus.py:83-96).
  4. collect, işleyici başına bir olgu kümesi veya bir liste kabul eder. Başka her şey ANALYTICS_INVALID_CONTRIBUTION ile başarısız olur (src/cluster_erp/modules/analytics/registry.py:254-266).
  5. validate_fact her kümeyi denetler; aynı anahtarlı ikinci bir küme üzerine yazmak yerine başarısız olur (src/cluster_erp/modules/analytics/registry.py:267-277).
  6. visible_to, read_permission değeri çağıranın izin kodları arasında olan kümeleri tutar (src/cluster_erp/modules/analytics/registry.py:100-109).

Bir katkının bildirdikleri

Bölüm Kayıt defterinin denetlediği kural Kaynak
key, label, grain anahtar basit bir kalıba uyar; etiket ve tanecik zorunludur src/cluster_erp/modules/analytics/registry.py:183-190
source katı bir kalıba uyan tablo veya şema nitelikli ilişki adı src/cluster_erp/modules/analytics/registry.py:45, src/cluster_erp/modules/analytics/registry.py:191-192
read_permission zorunlu src/cluster_erp/modules/analytics/registry.py:193-194
live_filter bir sütun ve is_null veya is_false; varsayılan deleted_at ile is_null src/cluster_erp/modules/analytics/registry.py:198-201, src/cluster_erp/core/contracts.py:2154
Boyutlar data_type değeri text, date, number, boolean, reference arasından; referans hedefini adlandırır; tarih tanecikleri bildirir; rollup yalnızca referanslarda src/cluster_erp/modules/analytics/registry.py:121-147
Ölçüler toplama sum, avg, min, max, count, count_distinct, median arasından; toplanabilirlik additive, semi_additive, non_additive arasından; semi_additive ölçü var olan bir ekseni adlandırır src/cluster_erp/modules/analytics/registry.py:50-51, src/cluster_erp/modules/analytics/registry.py:150-180, src/cluster_erp/modules/analytics/registry.py:222-230
Para boş olmayan currency_field ölçüyü parasal yapar ve ayrıca bir boyut olarak sunulmalıdır src/cluster_erp/core/contracts.py:2110-2113, src/cluster_erp/modules/analytics/registry.py:231-240

Modüllere göre katkılar

grep -rl analytics_facts src/cluster_erp/modules ile bulundu: dokuz modül, 13 olgu kümesi.

Modül Olgu anahtarları Kaynak tablo Okuma izni Parasal ölçüler (currency_field) Kaynak
fleet fleet_fuel, fleet_work_order, fleet_penalty, fleet_compliance fleet_fuel_entries, fleet_work_orders, fleet_penalties, fleet_compliance_items fleet_asset.read bildirilmemiş src/cluster_erp/modules/fleet/analytics_facts.py:35-310
inventory goods_movement inventory_goods_movements goods_movement.read yok; modül para saklamaz src/cluster_erp/modules/inventory/analytics_facts.py:29-109
parties party parties_parties party.read yok; yalnızca sayı src/cluster_erp/modules/parties/analytics_facts.py:17-77
procurement purchase_order, purchase_request procurement_purchase_orders, procurement_purchase_requests purchase_order.read, purchase_request.read 4 src/cluster_erp/modules/procurement/analytics_facts.py:19-191
production production_order production_production_orders production_order.read yok src/cluster_erp/modules/production/analytics_facts.py:18-110
products_and_services product products_products product.read yok src/cluster_erp/modules/products_and_services/analytics_facts.py:21-94
purchasing_quotations purchasing_quotation purq_quotations purchasing_quotation.read 2 src/cluster_erp/modules/purchasing_quotations/analytics_facts.py:17-117
quotations sales_quote quot_quotes quote.read 3 src/cluster_erp/modules/quotations/analytics_facts.py:23-115
sales_orders sales_order so_sales_orders sales_order.read 3 src/cluster_erp/modules/sales_orders/analytics_facts.py:20-134

Her modül register_events içinde abone olur, örneğin src/cluster_erp/modules/inventory/module.py:119-124, src/cluster_erp/modules/parties/module.py:134-139 ve src/cluster_erp/modules/sales_orders/module.py:80-93. procurement her olgu kümesi için bir tane olmak üzere iki işleyiciyle abone olur (src/cluster_erp/modules/procurement/module.py:212-219). Her küme deleted_at üzerindeki varsayılan canlı süzgeci kullanır (dokuz dosyada grep live_filter).

Bazı modüller belge dizelerinde neyi dışarıda bıraktıklarını ve nedenini belirtir. inventory stok seviyelerini dışarıda bırakır (src/cluster_erp/modules/inventory/analytics_facts.py:1-8); fleet, iki toplamın oranı toplanabilir olmadığı için kilometre başına maliyeti ve CO2'yi dışarıda bırakır (src/cluster_erp/modules/fleet/analytics_facts.py:1-11).

Neden böyle kurulmuş

  • Kayıt defteri belge dizesi, bildirimin aynı zamanda güvenlik izin listesi olduğunu belirtir: bir kullanıcı sorgusu yalnızca bir anahtara başvurabilir ve fiziksel ad hiçbir zaman kullanıcı girdisinden gelmez (src/cluster_erp/modules/analytics/registry.py:1-9).
  • Sessizce atlanan bir katkı, bir modülün verisinin analize hiç girmediği ve bunun ancak yanlış bir sayıyla fark edildiği anlamına geleceği için yüksek sesle başarısız olur (src/cluster_erp/modules/analytics/registry.py:11-16).
  • Sözleşme belge dizesi live_filter alanını zorunlu sayar; çünkü onsuz bir küme devre dışı kayıtları da sayar (src/cluster_erp/core/contracts.py:2139-2142).
  • Modül belge dizesi, gelecekteki bir modülün analytics modülünde hiçbir değişiklik olmadan katkı verebileceğini belirtir (src/cluster_erp/modules/analytics/module.py:18-22).

Kurallar ve sınırlar

  • Referans boyutu, etiketler ham kimlikler yerine çözülsün diye hedefini adlandırmalıdır (src/cluster_erp/modules/analytics/registry.py:131-135).
  • rollup, özet hücreleri için düşük kardinaliteli bir referans boyutunu işaretler (src/cluster_erp/core/contracts.py:2092-2097); bkz. raporlar, özetler ve çapraz.
  • Analitik kataloğu her katalog çağrısında veriyolundan yeniden kurulur (src/cluster_erp/modules/analytics/service.py:55-62).

Diğer parçalarla etkileşim

Sözleşme Yön Amaç Kaynak
DescribeAnalyticsFacts analytics yayar, dokuz modül yanıtlar bildirimleri toplamak src/cluster_erp/core/contracts.py:2060-2073
AnalyticsFactSet, AnalyticsDimension, AnalyticsMeasure modüller oluşturur bildirim şekilleri src/cluster_erp/core/contracts.py:2076-2154

Tam sözleşme listesi sözleşmeler başvurusunda, veriyolu olay veriyolu sayfasında anlatılır.

Sınırlar ve açık noktalar

  • Filo olgu kümeleri total_cost ve amount toplar ancak currency_field bildirmez; bu yüzden karışık para birimi kapısı onlara uygulanmaz (src/cluster_erp/modules/fleet/analytics_facts.py:98-104, src/cluster_erp/modules/fleet/analytics_facts.py:240-246).
  • Hata fırlatan bir işleyici veriyolu tarafından günlüğe yazılır ve olgu kümeleri, çağırana bir hata verilmeden katalogda eksik kalır (src/cluster_erp/core/event_bus.py:94-96).

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
fact set AnalyticsFactSet Bir modülün tanecik, boyut ve ölçüleriyle analiz edilebilir tek bir konuyu bildirmesi. Olgu kümesi src/cluster_erp/core/contracts.py:2126
grain grain Bir olgu kümesinin bir satırının ne olduğu. Tanecik src/cluster_erp/core/contracts.py:2129-2131
additivity additivity Bir ölçünün tüm, bazı veya hiçbir boyut boyunca toplanıp toplanamayacağı. Toplanabilirlik src/cluster_erp/core/contracts.py:2101-2110
live filter live_filter Devre dışı satırları bir olgu kümesinden dışlayan sütun denetimi. Canlı süzgeç src/cluster_erp/core/contracts.py:2154

İlgili sayfalar


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

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