Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Platform

Referans

Metadata modeli

core/metadata.py içinde modülleri, varlıkları, formları, listeleri ve aksiyonları iki istemci için tanımlayan 45 Pydantic sınıfı.

Her modül ekranlarını metadata ile tanımlar: src/cluster_erp/core/metadata.py içinde tanımlanan Pydantic nesneleri. Bu sayfa bu sınıfları ve ana alanlarını sunucu tarafı sözleşme olarak listeler. Web uygulamasının onları nasıl çizdiği metadata çizimi sayfasında, masaüstü istemci masaüstü bölümünde belgelenir.

Kapsam ve kaynak

  • Tanımlandığı yer: src/cluster_erp/core/metadata.py
  • Sayı: 45 sınıf (grep -c "^class " ile sayıldı) ve LabelDict = dict[str, str] takma adı (src/cluster_erp/core/metadata.py:7). src/cluster_erp altında 186 EntityMeta( çağrısı vardır (grep -rn "EntityMeta(" ile sayıldı).

LabelDict bir dil kodunu bir metne eşler; örneğin {"en": "...", "tr": "..."}. Metadata'daki her etiket, yer tutucu, yardım metni ve açıklama onu kullanır.

Metadata nasıl sunulur

Bir modül ModuleMeta nesnesini get_metadata() ile döndürür (src/cluster_erp/core/module_base.py:73-74). GET /api/v1/_meta, kiracı alanı varlıkları eklendikten sonra yüklü her modülün metadata'sını model_dump(exclude_none=True) ile tek bir JSON belgesine {"version": "1.0", "modules": {...}} dönüştürür. Belge süreç başına bir kez kurulur, bir ETag ve gzip biçimiyle ve yalnızca oturum açmış bir çağırana sunulur (src/cluster_erp/server/app.py:1518-1556). Bu yüzden değeri None olan bir alan belgede yer almaz.

Modül ve varlık

Sınıf Amacı Ana alanlar Kaynak
ModuleMeta Bir modülün tüm tanımı name, version, description, label, icon, order, sidebar, entities, provides, assistant_starters, home_widgets src/cluster_erp/core/metadata.py:719-740
EntityMeta Bir varlık: etiketler, uçlar, form, liste, ayrıntı, aksiyonlar ve seçenekler label, label_plural, entity_type, endpoints, form, list_view, detail_view, actions, links, identity, facets, tree_view, lock, tenant_fields, photo, parent_entity, is_settings_entity src/cluster_erp/core/metadata.py:553-649
EndpointMeta Bir HTTP yöntemi ve modüle göreli yol method, path src/cluster_erp/core/metadata.py:406-408
ScopeMeta Bir varlığı üst varlığa göre kapsar entity, field, label, endpoint src/cluster_erp/core/metadata.py:411-415

EntityMeta, oluşturulurken ayrıntı görünümünün form sekmelerinin create_only olmayan her form grubunu kapsadığını ve bilinmeyen grup adlandırmadığını denetler. Uyuşmazlık, modül içe aktarılırken ValueError yükseltir (src/cluster_erp/core/metadata.py:617-649).

Formlar ve alanlar

Sınıf Amacı Ana alanlar Kaynak
FormMeta Alan grupları listesi olarak bir form field_groups src/cluster_erp/core/metadata.py:171-172
FieldGroupMeta Koşullu veya yalnızca oluşturmada olabilen alan grubu key, label, group_type, condition, nested_key, create_only, edit_only, description, fields src/cluster_erp/core/metadata.py:149-168
FieldMeta Bir alan key, label, field_type, required, choices, source, read_only, immutable_on_edit, permission, switch, autofill, weight, help, storage src/cluster_erp/core/metadata.py:79-146
ChoiceMeta Bir numaralandırmanın bir seçeneği value, label src/cluster_erp/core/metadata.py:10-12
ForeignKeySource Bir yabancı anahtar seçicisinin seçeneklerini nereden yüklediği module, endpoint, value_field, display_field, params, hierarchical, create_scope, group_field src/cluster_erp/core/metadata.py:21-33
CreateScopeMeta Bir seçiciden kayıt oluşturulduğunda bir alanı önceden doldurur target_field, source_field, source src/cluster_erp/core/metadata.py:15-18
ConditionalSourceMeta Yalnızca bir koşulda geçerli seçici kaynağı condition, source src/cluster_erp/core/metadata.py:61-63
ConditionMeta Bir alan değeri koşulu; value dikey çizgiyle ayrılmış seçenekler içerebilir, negate koşulu tersine çevirir field, value, negate src/cluster_erp/core/metadata.py:52-58
AutofillMeta Seçilen yabancı kayıttan bir değeri başka bir alana kopyalar source_fields, target_field, resolve src/cluster_erp/core/metadata.py:36-44
AutoGenerateRule Diğer alanlar eşleştiğinde bir alanı dolduran şablon when, template src/cluster_erp/core/metadata.py:47-49
DynamicFormSource Bir sürücü alanın seçili kaydından çekilen alt alanlar driver_field, module, endpoint, schema_field src/cluster_erp/core/metadata.py:66-76

FieldMeta.field_type 19 değerden birini alır: string, text, integer, float, decimal, boolean, date, datetime, enum, multi_enum, foreign_key, multi_foreign_key, json, hidden_scope_field, file_upload, suggest_combo, dynamic_form, field_list ve string_list (src/cluster_erp/core/metadata.py:82-102). FieldMeta.permission, bir alanın değerini o izin koduna sahip olmayan çağıranlardan gizler; yorum zorlayan kod olarak core/field_access.py dosyasını adlandırır (src/cluster_erp/core/metadata.py:115-119). FieldMeta.switch, bir alanı yalnızca bir kiracı görüntüleme anahtarı açıkken gösterir (src/cluster_erp/core/metadata.py:120-125). FieldMeta.storage, gelen alanlar için column, kiracı tanımlı alanlar için extra'dır (src/cluster_erp/core/metadata.py:142-146).

Listeler

Sınıf Amacı Ana alanlar Kaynak
ListViewMeta Bir liste ekranı paginated, search_enabled, columns, filters src/cluster_erp/core/metadata.py:238-242
ColumnMeta Bir sütun key, data_key, label, width, stretch, align, switch, formatter, choices, display_endpoint, display_field, value_field, legend src/cluster_erp/core/metadata.py:175-227
FilterMeta Bir liste süzgeci key, label, filter_type, choices, source src/cluster_erp/core/metadata.py:230-235
SubTableMeta Bir alt varlık tablosunun sütunları columns src/cluster_erp/core/metadata.py:380-381

ColumnMeta.formatter şunlardan birini alır: boolean, active_flag, date, datetime, decimal, enum, foreign_key, entity_type, entity_record veya i18n_message (src/cluster_erp/core/metadata.py:190-212).

Ayrıntı görünümleri

Sınıf Amacı Ana alanlar Kaynak
DetailViewMeta Bir kayıt kartı title_field, tabs src/cluster_erp/core/metadata.py:299-301
DetailTabMeta Bir kayıt kartının bir sekmesi key, label, tab_type, custom_widget, entity, entity_module, field_groups, config, condition, scope_param, read_only, completeness_endpoint src/cluster_erp/core/metadata.py:252-296
CompletenessMeta ve CompletenessTierMeta Bir kaydın tamlık katmanları tiers; key, label, fields src/cluster_erp/core/metadata.py:466-473
RecordLockMeta Bir kaydın salt okunur olduğu alan değerleri field, values src/cluster_erp/core/metadata.py:476-492
AvatarMeta Bir kaydın profil fotoğrafı field, endpoint src/cluster_erp/core/metadata.py:495-503
EmptyStateMeta Boş bir listenin metni ve simgesi icon, title, description, action_label src/cluster_erp/core/metadata.py:459-463
SemanticGroupMeta Adlandırılmış bir alan grubu key, label src/cluster_erp/core/metadata.py:454-456

DetailTabMeta.tab_type şunlardan birini alır: form, custom, sub_entity_table, sub_entity_tree, permission_checklist, role_checklist, access_summary, completeness veya read_model_panel (src/cluster_erp/core/metadata.py:255-270). RecordLockMeta belge dizgisi, values değerlerinin servisin zorladığı aynı sabitten gelmesini ister (src/cluster_erp/core/metadata.py:486-488).

Taraflar, facet'ler ve bileşik oluşturma

Sınıf Amacı Ana alanlar Kaynak
IdentityMeta Bir varlığı başka bir modüldeki kanonik kaydın facet'i olarak işaretler field, module, entity src/cluster_erp/core/metadata.py:304-313
FacetMeta Bir tarafın üstlenebileceği, taraf kartında satır içi gösterilen rol module, entity, link_field, sections, multi, list_endpoint, requires_flag src/cluster_erp/core/metadata.py:357-377
FacetSectionMeta Bir facet'in karta kattığı bir bölüm kind, label, form_groups, sub_entity, sub_module, party_scoped, columns, table, scope_param, scope_field src/cluster_erp/core/metadata.py:316-354
CompositeCreateMeta ve CompositeRoleMeta Bir kaydın rol facet'leriyle tek çağrıda yönlendirmeli oluşturulması endpoint, roles; key, flag_field, buckets src/cluster_erp/core/metadata.py:506-514

Bu sınıflar projenin yazılı mühendislik kuralları içindeki taraf birleştirme kuralını uygular. Bkz. taraf birleştirme.

Aksiyonlar ve bağlantılar

Sınıf Amacı Ana alanlar Kaynak
ActionMeta Kayıtlar üzerinde bir aksiyon key, label, endpoint, scope, icon, condition, conditions, body_fields, body_field_groups, description src/cluster_erp/core/metadata.py:418-434
ActionConditionMeta Bir aksiyonun, sekmenin veya bağlantının ne zaman sunulduğu field, value, negate src/cluster_erp/core/metadata.py:245-249
RecordLinkMeta Bir kayıt kartından bir uygulama ekranına kısayol key, label, icon, module, section, params, condition src/cluster_erp/core/metadata.py:437-451

ActionMeta.scope, global, single_record veya parent değerlerinden biridir (src/cluster_erp/core/metadata.py:422). Bkz. aksiyonlar ve aksiyon sayfası.

Ağaçlar, kenar çubuğu ve ana ekran

Sınıf Amacı Ana alanlar Kaynak
TreeViewMeta Bir ağaç ekranı display_key, children_key, parent_id_key, tree_endpoint, nested, scope, max_depth_warning src/cluster_erp/core/metadata.py:390-397
TreeScopeMeta Bir ağacın başka bir varlığa göre kapsamı entity, field, list_endpoint src/cluster_erp/core/metadata.py:384-387
DynamicComponentsMeta Bir tetikleyici alanın yüklediği seviyeler ve değerler trigger_field, levels_endpoint, values_endpoint src/cluster_erp/core/metadata.py:400-403
SidebarMeta Bir modülün gezinmesi groups src/cluster_erp/core/metadata.py:715-716
SidebarGroupMeta Bir gezinme grubu key, label, icon, sections src/cluster_erp/core/metadata.py:691-695
SidebarSectionMeta Bir modülün bir ekranı key, label, view_type, icon, entity, list_endpoint, tabs, entity_tabs, custom_widget, hidden_from_bar, required_permission, description src/cluster_erp/core/metadata.py:664-688
EntityTabRef Bir tabbed_list bölümünün bir sekmesi module, entity, label, icon, list_endpoint src/cluster_erp/core/metadata.py:652-661
HomeWidgetMeta Bir modülün sunduğu ana ekran bileşeni key, label, icon, size, custom_widget, open_section src/cluster_erp/core/metadata.py:698-712

SidebarSectionMeta.view_type, list, detail, tree, settings, custom veya tabbed_list değerlerinden biridir (src/cluster_erp/core/metadata.py:667). HomeWidgetMeta.size, NxM desenine uymalıdır (src/cluster_erp/core/metadata.py:710).

Kiracı alanları

Sınıf Amacı Ana alanlar Kaynak
TenantFieldsMeta Bir varlığın kiracı tanımlı alanları kabul ettiğini bildirir buckets src/cluster_erp/core/metadata.py:545-550
TenantBucketMeta Kiracı alanı değerleri için bir depolama kovası key, label, nested_key, group_keys, placement_group_keys, table, entity_types src/cluster_erp/core/metadata.py:517-542

Bkz. kiracı alanları.

Kısıtlar ve doğrulama

  • Metadata nesneleri Pydantic modelleridir; yanlış bir sabit değer veya eksik zorunlu alan, modül metadata'sını kurarken başarısız olur.
  • Açılışta bir sub_entity_table sekmesi sütunsuz bir varlığı gösteriyorsa sunucu başarısız olur (src/cluster_erp/server/app.py:547-589).
  • Projenin yazılı mühendislik kuralları web uygulamasını tamamen metadata güdümlü yapar: ekran, form, liste ve aksiyon davranışı metadata'dan gelir. tests/test_metadata_driven_rules.py ve tests/test_architecture_boundaries.py:75 bu kuralın parçalarını korur; bkz. mimari sınırlar.

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
metadata ModuleMeta Bir modülün ekranlarının iki istemcinin de çizdiği bildirimsel tanımı. metadata src/cluster_erp/core/metadata.py:719
entity metadata EntityMeta Bir varlığın uçlarının, formunun, listesinin, kartının ve aksiyonlarının tanımı. varlık metadata'sı src/cluster_erp/core/metadata.py:553
facet FacetMeta Bir tarafın oynayabileceği, taraf kartında bir bölüm olarak gösterilen rol. rol bölümü src/cluster_erp/core/metadata.py:357
label dictionary LabelDict Dil kodundan görünen metne eşleme. etiket sözlüğü src/cluster_erp/core/metadata.py:7

İlgili sayfalar


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

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