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/vendoraltında vardır (src/cluster_erp/server/app.py:1440-1450,src/cluster_erp/server/routes/vendor.py:68-70). - Operatör hesapları
control_operatorsiçindedir; hiç yoksa ilki açılıştavendor_admin_usernamevevendor_admin_passwordayarları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_totpaçı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
vendorhedef 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_actionstablosuna 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.pyiç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_yearssonrasında anonimleştirir (src/cluster_erp/server/control_retention.py:137-159). - Uçtan uca süit
web-client/_e2e_operator_console.mjsdosyasıdır.
Diğer parçalarla etkileşim¶
- Kayıt kayıt kuyruğunu doldurur.
- Yedekler ve geri yükleme ve kiracı yaşam döngüsü konsolun başlattığı arka plan işini anlatır.
Sınırlar ve açık noktalar¶
- Operatör belirteçlerinin kodda bir iptal listesi yoktur;
read_tokenimzayı, hedef kitleyi, türü ve süreyi,require_operatorhesabı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¶
- Kimlik, erişim, kiracılık, gizlilik ve lisans
- Çok kiracılılık
- İkinci doğrulama adımı ve gizli değer saklama
- Sistem uçları
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.