Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Kimlik ve erişim

Açıklama

Operatör konsolu

Çok kiracılı bir kurulumun satıcı operatör konsolu, ayrı hesapları ve belirteçleri, ikinci doğrulama adımı, uçları ve denetim izi.

Operatör konsolu, çok kiracılı bir kurulumu işleten kişilerin ekranıdır. Operatörler kiracı kullanıcısı değildir: hesapları kontrol düzlemi veritabanındadır, kendi uçlarından giriş yaparlar ve belirteçleri her kiracı ucunda reddedilir. Sunucu tarafı server/operators.py ve server/routes/vendor.py, sayfa webapp/js/operator.js ile webapp/operator.html olur. Bu sayfa hesapları, girişi, uçları, ülkeler arası filo görünümünü ve denetim izini açıklar.

Kısaca

  • Konsol API'si yalnızca çok kiracılı kipte, /api/v1/vendor altında vardır (src/cluster_erp/server/app.py:1440-1450, src/cluster_erp/server/routes/vendor.py:68-70).
  • Operatör hesapları control_operators içindedir; hiç yoksa ilki açılışta vendor_admin_username ve vendor_admin_password ayarlarından yaratılır (src/cluster_erp/core/tenancy.py:132-154, src/cluster_erp/server/operators.py:56-75).
  • Giriş parolayı ve vendor_require_totp açıkken bir doğrulayıcı kodunu ister (src/cluster_erp/server/operators.py:114-175, src/cluster_erp/config/settings.py:131).
  • Operatör belirteçleri vendor hedef kitlesini taşır ve sabit sayıda saat geçerlidir; kiracı belirteçleri ve operatör belirteçleri birbirlerinin uçlarında reddedilir (src/cluster_erp/server/operators.py:1-12, src/cluster_erp/server/operators.py:209-235).
  • Bir operatörün bir müşteride yaptığı her değişiklik control_operator_actions tablosuna yazılır (src/cluster_erp/server/operators.py:238-257).

Nasıl çalışır

Hesaplar

Komut Etki Kaynak
python -m cluster_erp.server.operators add <username> Bir operatör yaratır src/cluster_erp/server/operators.py:78-90
python -m cluster_erp.server.operators list Operatörleri listeler src/cluster_erp/server/operators.py:323-366
python -m cluster_erp.server.operators disable <username> Bir operatörü pasifleştirir src/cluster_erp/server/operators.py:93-103
python -m cluster_erp.server.operators totp-enroll <username> Doğrulayıcı tohumunu verir src/cluster_erp/server/operators.py:178-195, src/cluster_erp/server/operators.py:352-353

Tohum mühürlü saklanır; bkz. ikinci doğrulama adımı ve gizli değer saklama.

Giriş ve istekler

POST /api/v1/vendor/login, username, password ve isteğe bağlı bir otp_code alır (src/cluster_erp/server/routes/vendor.py:101-138). authenticate beş sonuçtan birini döndürür: ok, invalid, locked, totp_required veya totp_not_enrolled; bilinmeyen bir ad ve yanlış bir parola aynı yanıtı verir (src/cluster_erp/server/operators.py:104-128). Yanlış kod hatalı deneme sayılır ve tekrarlanan hatalar hesabı bir süre kilitler (src/cluster_erp/server/operators.py:110-111, src/cluster_erp/server/operators.py:147-152). Diğer her uç, vendor hedef kitleli bir Bearer belirteci okuyan ve etkin operatörü yükleyen require_operator bağımlılığına dayanır (src/cluster_erp/server/routes/vendor.py:84-96).

vendor_allowed_ips ayarı konsol API'sini listelenen adreslere veya ağlara sınırlar; girişten önce uygulanır (src/cluster_erp/server/routes/vendor.py:38-70, src/cluster_erp/config/settings.py:134). Boşsa sunucu açılışta bir uyarı yazar (src/cluster_erp/server/app.py:129-134).

Uçlar

server/routes/vendor.py içindeki @router dekoratörlerinden sayılan on beş uç:

Uç Amaç Kaynak
POST /login Operatör girişi src/cluster_erp/server/routes/vendor.py:113
GET /me Oturum açmış operatör src/cluster_erp/server/routes/vendor.py:141
GET /_meta Sayfa için sütun ve aksiyon metadata'sı src/cluster_erp/server/routes/vendor.py:149
GET /overview Kiracılar genelinde sayılar src/cluster_erp/server/routes/vendor.py:332
GET /tenants Üyelik, kurulum durumu, bölge ve şema sürümüyle kiracılar src/cluster_erp/server/routes/vendor.py:394
GET /fleet Ülkeler arası görünüm için küçültülmüş kiracı listesi src/cluster_erp/server/routes/vendor.py:456
GET /tenants/{key} Veritabanı boyutu ve son yedekle tek bir kiracı src/cluster_erp/server/routes/vendor.py:497
GET /signups Kayıt kuyruğu src/cluster_erp/server/routes/vendor.py:540
GET /actions Denetim izi src/cluster_erp/server/routes/vendor.py:570
POST /tenants/{key}/membership/extend Ödenmiş dönemi uzatır src/cluster_erp/server/routes/vendor.py:607
POST /tenants/{key}/membership/suspend Üyeliği ve kiracıyı askıya alır src/cluster_erp/server/routes/vendor.py:626
POST /tenants/{key}/membership/activate Yeniden etkinleştirir src/cluster_erp/server/routes/vendor.py:639
POST /tenants/{key}/refresh-seeds Kiracının tohum kataloğunu arka planda yeniler src/cluster_erp/server/routes/vendor.py:652
POST /tenants/{key}/backup Arka planda yedek alır src/cluster_erp/server/routes/vendor.py:690
GET /tenants/{key}/backups Kiracının yedeklerini listeler src/cluster_erp/server/routes/vendor.py:740

Ülkeler arası tek konsol

Sayfa birkaç ülke düğümünün kiracılarını birlikte gösterebilir. Sayfanın kendisi metadata'sında listelenen her düğüme sorar; merkezi bir kopya yoktur. /fleet ucu yalnızca _FLEET_FIELDS alanlarını döndürür ve sunucu yalnızca bu uca, yalnızca console_origins içindeki kökenlerden, kimlik bilgisi olmadan çapraz köken çağrısına izin verir (src/cluster_erp/server/app.py:1354-1389, src/cluster_erp/server/routes/vendor.py:443-494, src/cluster_erp/config/settings.py:115-122). Filonun her okunuşu bir eylem olarak kaydedilir (src/cluster_erp/server/routes/vendor.py:478-488).

Sayfa

webapp/js/operator.js dört görünümü (özet, kiracılar, kayıt kuyruğu, denetim izi) GET /vendor/_meta üzerinden çizer ve yalnızca sütun türlerini bilir, belirli sütunları asla bilmez (webapp/js/operator.js:1-8). Operatörün belirteci tarayıcı sekmesinin oturum deposunda tutulur; çıkış her ülke düğümünün belirteçlerini siler (webapp/js/operator.js:17-52). Tüm sayfa metinleri dil dosyalarının operator anahtarlarından gelir; örneğin Operatör Konsolu (webapp/i18n/tr.json anahtarı operator.title). Web uygulaması klasörü /app altında sunulur (src/cluster_erp/server/app.py:1633-1643).

Neden böyle kurulmuştur

  • Operatörler ve kiracı kullanıcıları ayrı dünyalardır; böylece kazayla veya kasıtla karıştırılamazlar (src/cluster_erp/server/operators.py:1-8).
  • Her operatör eylemi kaydedilir; böylece bir müşterideki değişiklik asla anonim olmaz (src/cluster_erp/server/operators.py:10-12).
  • Ülkeler arası görünüm tarayıcıda çalışır, çünkü bir müşterinin verisi o müşterinin ülkesinde kalır ve merkezi kopya yoktur (src/cluster_erp/server/app.py:1354-1361).
  • Ekranlar metadata'dır; böylece yeni bir sütun veya aksiyon sunucu tarafında tek bir satırdır (src/cluster_erp/server/routes/vendor.py:6-8).

Kurallar ve sınırlar

  • Üyelik eylemleri server/membership.py içindeki komut satırıyla kodu paylaşır (src/cluster_erp/server/operators.py:260-320). Bkz. çok kiracılılık.
  • Kontrol düzlemi saklama geçişi eski operatör eylemlerini siler ve uzun süredir pasif operatör hesaplarını control_actions_retention_years sonrasında anonimleştirir (src/cluster_erp/server/control_retention.py:137-159).
  • Uçtan uca süit web-client/_e2e_operator_console.mjs dosyasıdır.

Diğer parçalarla etkileşim

Sınırlar ve açık noktalar

  • Operatör belirteçlerinin kodda bir iptal listesi yoktur; read_token imzayı, hedef kitleyi, türü ve süreyi, require_operator hesabın etkin olduğunu denetler (src/cluster_erp/server/operators.py:222-235, src/cluster_erp/server/routes/vendor.py:84-96).
  • Operatör rolleri veya operatör başına izinler koddan belirlenemedi; her etkin operatör her uca ulaşır.

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
operator Operator Kurulumu işleten, hesabı kontrol düzleminde olan kişi. operatör src/cluster_erp/core/tenancy.py:132
vendor audience VENDOR_AUDIENCE Operatör belirteçlerini kiracı belirteçlerinden ayıran belirteç hedef kitlesi. satıcı hedef kitlesi src/cluster_erp/server/operators.py:49
operator action OperatorAction Bir operatörün hangi kiracıda ne yaptığının tek bir denetim kaydı. operatör eylemi src/cluster_erp/core/tenancy.py:157
fleet view vendor_fleet Konsolun ülke düğümleri arasında birleştirdiği küçültülmüş kiracı listesi. filo görünümü src/cluster_erp/server/routes/vendor.py:457

İlgili sayfalar


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

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