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,
DescribeAnalyticsFactsolayına olgu kümelerini döndüren bir işleyiciyle abone olur (src/cluster_erp/modules/fleet/module.py:338-346). registry.collectolayı yayar, her yanıtı tür denetiminden ve doğrulamadan geçirir, yinelenenleri reddeder ve birFactCataloguedöndürür (src/cluster_erp/modules/analytics/registry.py:242-283).- Çağıran yalnızca
read_permissioniznine 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:
AnalyticsService.catalogue, çağıranın diliyleregistry.collectçağırır (src/cluster_erp/modules/analytics/service.py:55-62).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).- 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). collect, işleyici başına bir olgu kümesi veya bir liste kabul eder. Başka her şeyANALYTICS_INVALID_CONTRIBUTIONile başarısız olur (src/cluster_erp/modules/analytics/registry.py:254-266).validate_facther 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).visible_to,read_permissiondeğ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_filteralanı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_costveamounttoplar ancakcurrency_fieldbildirmez; 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¶
- Analytics modülü
- Tarifler ve sorgu kurucu
- Filo TCO, telematik ve analitik
- Inventory modülü
- Olay veriyolu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.