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

Modül

App store modülü (app_store)

Uygulama kataloğunu, lisansı, rol koltuk atamalarını, uygulama isteklerini ve kurulumun yükleme durumunu tutan app_store modülünün sayfası.

src/cluster_erp/modules/app_store/ içindeki app_store modülü bir platform modülüdür. Satılabilir uygulamaların kataloğunu, yüklenen lisansı, hangi rollerin hangi uygulamayı kullanabileceğini, kullanıcıların uygulama isteklerini ve kurulumun hangi uygulamaları yüklediğini tutar. Yöneticiler onu mağaza ve uygulama yöneticisi uygulamalarıyla yönetir; her kullanıcının başlatıcısı onun kayıt defterinden çizilir. Diğer modüllerin API'leri üzerindeki uygulama server/entitlements.py içindedir ve uygulama mağazası lisansları ve hakları sayfasında açıklanır.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/app_store/ klasör
Modül sınıfı Module src/cluster_erp/modules/app_store/module.py:18
name / version app_store / 0.1.0 src/cluster_erp/modules/app_store/module.py:26-32
API öneki /api/v1/app_store (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/app_store/module.py:54-57
Alt modüller 0; license.py, models.py, routes.py, services.py ve catalog.json içeren düz bir modül klasör listesi
Tablolar 5: app_store_apps, app_store_licenses, app_store_assignments, app_store_requests, app_store_installs src/cluster_erp/modules/app_store/models.py:32-138
Metadata'daki varlıklar 0; kenar çubuğu içeriği yok src/cluster_erp/modules/app_store/module.py:65-79
Web uygulamasında yeri Katalogda store, app-library ve app-manager sistem uygulamaları; webapp/store/ içinde galeri klasörleri src/cluster_erp/modules/app_store/catalog.json
Masaüstünde yeri yok; src/cluster_erp/desktop/modules/ içinde klasör yok klasör

Modül ne yapar

  • Katalog tablosunu her açılışta gelen catalog.json dosyasına yakınsatır ve ilk açılışta yeni uygulamaları yükler (src/cluster_erp/modules/app_store/module.py:38-52, src/cluster_erp/modules/app_store/services.py:91-135).
  • Her kullanıcının kayıt defterini sunar: her etkin uygulama hak, kurulum, koltuk ve yeniden onay durumuyla (src/cluster_erp/modules/app_store/routes.py:18-39).
  • Lisansı saklar ve yeniden doğrular (src/cluster_erp/modules/app_store/services.py:191-265).
  • Rol koltuk kurallarını ve uygulama isteklerini tutar (src/cluster_erp/modules/app_store/services.py:267-361).
  • Uygulamaları yükler, yeniden onaylar ve kaldırır (src/cluster_erp/modules/app_store/services.py:169-189).
  • Uygulama başına JavaScript paketlerini bir katman denetiminden sonra gated_apps/ içinden sunar (src/cluster_erp/modules/app_store/routes.py:95-155).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
yok (düz modül) Katalog, lisans, koltuklar, istekler, kurulumlar StoreApp, AppLicense, AppAssignment, AppRequest, AppInstall /api/v1/app_store src/cluster_erp/modules/app_store/routes.py (router)

Veri modeli

Varlık Tablo Anahtar alanlar Notlar Kaynak
StoreApp app_store_apps app_key, enabled, sort, manifest manifest etiketleri, ekran bağlantısını ve kapsanan modülleri taşıyan JSONB'dir src/cluster_erp/modules/app_store/models.py:14-52
AppLicense app_store_licenses raw_text, licensee, status_cache, last_seen_at en yeni canlı satır geçerlidir src/cluster_erp/modules/app_store/models.py:55-75
AppAssignment app_store_assignments app_key, role_id, intent canlı satırlar arasında benzersiz (app_key, role_id) src/cluster_erp/modules/app_store/models.py:77-104
AppRequest app_store_requests app_key, requested_by, status, decided_by, decision_reason src/cluster_erp/modules/app_store/models.py:107-120
AppInstall app_store_installs app_key, status, app_version, consented_modules canlı satırlar arasında benzersiz app_key src/cluster_erp/modules/app_store/models.py:123-162

Katalog, 6'sı sistem uygulaması olmak üzere 28 uygulama tutar; catalog.json girdilerinden sayıldı.

Ekranlar ve metadata

Modül metadata varlığı bildirmez; yüzeyleri metadata ekranları değil, özel uygulamalardır (src/cluster_erp/modules/app_store/module.py:65-79). Lisans kartı Lisans Durumu (webapp/i18n/tr.json anahtarı license.status_title), mağaza ise lisanssız bir uygulama için Lisans gerekli (webapp/i18n/tr.json anahtarı store.license_needed) gösterir. İstemci kodu korunan uygulama paketleri sayfasında belgelenir.

Durumlar ve aksiyonlar

Kayıt Değerler Kaynak
Lisans durumu none, invalid, active, grace, read_only src/cluster_erp/modules/app_store/license.py:9-14
AppInstall.status installed, uninstalled src/cluster_erp/modules/app_store/services.py:169-189
AppRequest.status pending, approved, denied src/cluster_erp/modules/app_store/models.py:114-116, src/cluster_erp/modules/app_store/services.py:352
AppAssignment.intent required, available, blocked src/cluster_erp/modules/app_store/services.py:282
Aksiyon Etiket Koşul Uç İzin Kaynak
lisans yükleme Yükle ve Doğrula (license.upload) lisanslama devrede; belge doğrulanır POST /api/v1/app_store/license license.manage src/cluster_erp/modules/app_store/routes.py:71-82
lisans kaldırma metadata'da yok bir lisans var DELETE /api/v1/app_store/license license.manage src/cluster_erp/modules/app_store/routes.py:85-92
uygulama isteme metadata'da yok kimliği doğrulanmış POST /api/v1/app_store/apps/{app_key}/request yalnızca kimlik doğrulama src/cluster_erp/modules/app_store/routes.py:184-191
isteğe karar metadata'da yok istek pending POST /api/v1/app_store/requests/{request_id}/decide store_app.assign src/cluster_erp/modules/app_store/routes.py:228-264
yükleme, yeniden onay metadata'da yok bilinen uygulama; yeniden onay installed ister POST /api/v1/app_store/apps/{app_key}/install, /reconsent store_app.install src/cluster_erp/modules/app_store/routes.py:267-285
kaldırma metadata'da yok sistem uygulaması değil POST /api/v1/app_store/apps/{app_key}/uninstall store_app.uninstall src/cluster_erp/modules/app_store/routes.py:288-295

İş kuralları

  • Kullanıcının rollerinden birindeki blocked koltuk kuralı kazanır; herhangi bir required veya available kuralı varsa uygulamayı yalnızca o roller alır; kuralı olmayan bir uygulama açıktır (src/cluster_erp/modules/app_store/services.py:23-47).
  • Bir uygulama isteğini onaylamak, uygulamayı isteyenin her canlı rolü için available yapar (src/cluster_erp/modules/app_store/services.py:357-361, src/cluster_erp/modules/app_store/routes.py:243-252).
  • Yeniden tohumlama, bir operatörün satıştan çektiği bir uygulamayı asla yeniden etkinleştirmez (src/cluster_erp/modules/app_store/services.py:91-99).
  • Değiştirilen veya kaldırılan bir lisans pasifleştirilmiş satır olarak kalır (src/cluster_erp/modules/app_store/services.py:246-265).

Olaylar ve sorgular

Modül hiçbir EventBus işleyicisi kaydetmez (src/cluster_erp/modules/app_store/module.py:59-60). Rol kimliklerini modules/auth/guards.py içindeki role_ids_for ile okur (src/cluster_erp/modules/app_store/routes.py:250-252).

Yön Sözleşme sınıfı İşleyici veya yayan Kaynak
yok yok yok src/cluster_erp/modules/app_store/module.py:59-60

Yetkiler

İzin anahtarı Kullanan Kaynak
license.manage lisans yükleme ve kaldırma src/cluster_erp/modules/app_store/routes.py:71-92
store_app.assign atamalar, istek listesi, istek kararı src/cluster_erp/modules/app_store/routes.py:158-264
store_app.install yükleme ve yeniden onay src/cluster_erp/modules/app_store/routes.py:267-285
store_app.uninstall kaldırma src/cluster_erp/modules/app_store/routes.py:288-295

Dört kod ek kodlar olarak tohumlanır (src/cluster_erp/server/app.py:801-807). Kayıt defteri, lisans okuma, varlık ucu ve uygulama istekleri yalnızca kimlik doğrulama ister (src/cluster_erp/modules/app_store/routes.py:18-66, src/cluster_erp/modules/app_store/routes.py:103-110).

Gizlilik, saklama ve geçmiş

Modül istekler ve atamalardaki kullanıcı ve rol kimlikleri dışında kişisel veri tutmaz; privacy_handlers.py dosyası yoktur. Tüm tablolar BaseModel sınıfından türer; bu yüzden değişiklikleri değişiklik geçmişindedir; bkz. değişiklik geçmişi.

Analitik olguları

Bu modülün analytics_facts.py dosyası yoktur.

Ayarlar ve başvuru verileri

license_public_key lisanslamayı devreye alır; boşken her katalog uygulamasına hak verilir (src/cluster_erp/config/settings.py:566-569). Kataloğun kendisi catalog.json içindeki satıcı verisidir (src/cluster_erp/modules/app_store/services.py:50-63).

Testler

tests/ ve web-client/ içinde dosya adıyla bulundu.

Tür Dosya Kapsam
pytest tests/test_entitlement_stamp.py hak belleği sürüm damgası (2 test)
pytest tests/test_store_catalog_assets.py katalog ekran görüntüleri ve açıklamaları (4 test)
e2e web-client/_e2e_app_store.mjs, web-client/_e2e_store.mjs, web-client/_e2e_store_uibook.mjs mağaza ve uygulama yöneticisi
e2e web-client/_e2e_license.mjs lisans yükleme ve durumları

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
app request AppRequest Bir kullanıcının bir uygulamada koltuk verilmesi isteği. uygulama isteği src/cluster_erp/modules/app_store/models.py:107
system app manifest.system Her zaman hakkı olan ve kaldırılamayan katalog uygulaması. sistem uygulaması src/cluster_erp/modules/app_store/services.py:182-189

İlgili sayfalar


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

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