Skip to main content

Plan ve Abonelik Yönetimi

COS platformunda plan yönetimi, organizasyonların hangi özelliklere ve limitlere sahip olacağını belirler. Planlar TenantGroup (holding) seviyesinde tanımlanır; bir TenantGroup'a bağlı tüm tenant'lar aynı plan limitlerinden etkilenir.


Temel Kavramlar

Plan Hiyerarşisi

PlanTemplate (Şablon)
└─ PlanFeature (Plan Özellikleri — her feature için enabled/limit/tier)
└─ PlanFeatureOverride (Grup Bazında İstisna)
└─ FeatureDefinition (Platform Geneli Özellik Tanımı)

Terminoloji

TerimAçıklama
PlanTemplatePlan şablonu (Free, Business, Enterprise vb.)
FeatureDefinitionPlatform genelinde tanımlı özellik (ör. max_users, swot_analysis)
PlanFeatureBir planın belirli bir özellik için değerleri (açık/kapalı, limit, seviye)
PlanFeatureOverrideBelirli bir TenantGroup için plan değerini ezen istisna tanımı
TenantGroupBir veya birden fazla tenant'ı barındıran holding/grup yapısı

Varsayılan Planlar

COS platformu 3 varsayılan plan ile gelir:

Free (Ücretsiz)

Küçük takımlar için temel plan.

  • Kullanıcı: 3
  • Tenant: 1
  • OKR: 5 hedef, 15 anahtar sonuç, 10 inisiyatif
  • KPI: 10
  • Strateji modülleri: Kapalı (SWOT, BSC, Tema vb.)
  • RBAC: BASIC (Admin + Member)
  • Dashboard: BASIC
  • KPI Kütüphanesi: BASIC

Business (İş)

Orta ölçekli şirketler için gelişmiş plan.

  • Kullanıcı: 50
  • Tenant: 3
  • OKR: Sınırsız
  • KPI: Sınırsız
  • Strateji modülleri: Açık (EA ve VRIO hariç)
  • PESTLE Analizi: Açık
  • Birim Seviyesi Strateji: Kapalı (TL oluşturma/düzenleme/silme yapamaz)
  • RBAC: FULL (4 rol: ADMIN/SM/TL/MEMBER)
  • Dashboard: STANDARD
  • KPI Kütüphanesi: FULL
  • Ek: API erişimi, denetim günlüğü, gap yönetimi, performans raporları

Enterprise (Kurumsal)

Büyük kurumlar ve holdingler için tam özellikli plan.

  • Kullanıcı: Sınırsız
  • Tenant: Sınırsız
  • OKR: Sınırsız
  • KPI: Sınırsız
  • Strateji modülleri: Tümü açık (EA, VRIO, Olgunluk Değerlendirmesi, PESTLE dahil)
  • Birim Seviyesi Strateji: Açık (TL kendi birimi için analiz oluşturabilir)
  • RBAC: FULL
  • Dashboard: FULL
  • Ek: SSO, white-label, çapraz tenant görünüm, öncelikli destek, tam entegrasyon

Özellik Kategorileri

Platform özellikleri 7 kategoride gruplandırılmıştır:

Kullanıcı ve Organizasyon (USERS_ORG)

ÖzellikAçıklamaDeğer Tipi
max_usersMaksimum kullanıcı sayısıSayısal
max_tenantsMaksimum tenant sayısıSayısal
max_org_depthOrganizasyon derinliğiSayısal
org_versioningOrganizasyon versiyonlamaAçık/Kapalı

Strateji (STRATEGY)

Alt kategorilere ayrılmıştır: general, swot, pestle, porter, bcg, bsc, asis, resource, dma, excellence, findings.

ÖzellikAlt KategoriAçıklamaDeğer Tipi
max_strategic_cyclesgeneralMaksimum stratejik döngüSayısal
max_okr_cyclesgeneralMaksimum OKR döngüsüSayısal
strategic_themesgeneralStratejik TemalarAçık/Kapalı
max_strategic_themesgeneralMaks stratejik tema sayısıSayısal
strategy_roadmapgeneralStrateji Yol HaritasıAçık/Kapalı
unit_level_strategygeneralBirim Seviyesi StratejiAçık/Kapalı
ea_modulegeneralKurumsal Mimari (EA)Açık/Kapalı
maturity_assessmentgeneralOlgunluk DeğerlendirmesiAçık/Kapalı
swot_analysisswotSWOT AnaliziAçık/Kapalı
max_swot_per_unitswotBirim başına maks SWOTSayısal
pestle_analysispestlePESTLE AnaliziAçık/Kapalı
max_pestle_per_unitpestleBirim başına maks PESTLESayısal
porter_analysisporterPorter 5 Güç AnaliziAçık/Kapalı
max_porter_per_unitporterBirim başına maks PorterSayısal
bcg_matrixbcgBCG Büyüme-Pay MatrisiAçık/Kapalı
max_bcg_per_unitbcgBirim başına maks BCGSayısal
bsc_modulebscBalanced ScorecardAçık/Kapalı
max_bsc_per_unitbscBirim başına maks BSCSayısal
current_state_analysisasisMevcut Durum AnaliziAçık/Kapalı
max_asis_per_unitasisBirim başına maks As-IsSayısal
resource_inventory_vrioresourceKaynak Envanteri & VRIOAçık/Kapalı
max_resource_per_unitresourceBirim başına maks kaynak analiziSayısal
digital_maturity_assessment_coredmaDMA Temel (60 soru)Açık/Kapalı
digital_maturity_assessment_extendeddmaDMA Genişletilmiş (150 soru)Açık/Kapalı
digital_maturity_assessment_multi_raterdmaDMA Çoklu DeğerlendiriciAçık/Kapalı
max_digital_maturity_per_unitdmaBirim başına maks DMASayısal
max_digital_maturity_raters_per_assessmentdmaDeğerlendirme başına maks değerlendiriciSayısal
max_digital_maturity_raters_per_questiondmaSoru başına maks değerlendiriciSayısal
excellence_assessment_coreexcellenceMükemmellik Değerlendirmesi (Temel)Açık/Kapalı
excellence_assessment_advancedexcellenceMükemmellik Değerlendirmesi (Genişletilmiş)Açık/Kapalı
excellence_assessment_multi_raterexcellenceMükemmellik Çoklu DeğerlendiriciAçık/Kapalı
max_excellence_assessment_per_unitexcellenceBirim başına maks mükemmellikSayısal
max_excellence_raters_per_assessmentexcellenceDeğerlendirme başına maks değerlendiriciSayısal
max_excellence_raters_per_questionexcellenceSoru başına maks değerlendiriciSayısal
findings_modulefindingsBulgular ModülüAçık/Kapalı

OKR

ÖzellikAçıklamaDeğer Tipi
max_objectivesMaksimum hedefSayısal
max_key_resultsMaksimum anahtar sonuçSayısal
max_initiativesMaksimum inisiyatifSayısal
okr_hierarchyOKR hiyerarşisiAçık/Kapalı
okr_approval_workflowOnay iş akışıAçık/Kapalı
okr_confidentialityGizlilik kontrolüAçık/Kapalı
okr_multi_alignmentÇoklu hizalamaAçık/Kapalı
okr_snapshotsAnlık görüntüAçık/Kapalı

KPI ve Raporlama (KPI_REPORT)

ÖzellikAçıklamaDeğer Tipi
max_kpisMaksimum KPI sayısıSayısal
kpi_library_tierKPI Kütüphanesi seviyesiSeviye (BASIC/FULL)
dashboards_tierDashboard erişimiAçık/Kapalı
reports_tierRaporlama erişimiAçık/Kapalı
gap_managementGap yönetimiAçık/Kapalı
performance_reportsPerformans raporlarıAçık/Kapalı

Ürün Yönetimi (PRODUCT)

Alt kategorilere ayrılmıştır: general, product_swot, product_scorecard, product_kpi.

ÖzellikAlt KategoriAçıklamaDeğer Tipi
max_productsgeneralMaksimum ürün sayısıSayısal
product_ownershipgeneralÜrün sahipliği atamaAçık/Kapalı
product_swotproduct_swotÜrün SWOT AnaliziAçık/Kapalı
product_scorecardproduct_scorecardÜrün ScorecardAçık/Kapalı
max_product_scorecard_kpisproduct_scorecardMaks ürün scorecard KPISayısal
product_kpi_libraryproduct_kpiÜrün KPI KütüphanesiAçık/Kapalı

Yönetim ve Güvenlik (ADMIN_SECURITY)

ÖzellikAçıklamaDeğer Tipi
rbac_tierYetki yönetimiAçık/Kapalı
cross_tenant_viewÇapraz tenant görünümAçık/Kapalı
white_labelÖzel markaAçık/Kapalı
ssoTek oturum açma (SSO)Açık/Kapalı
api_accessAPI erişimiAçık/Kapalı
integrations_tierEntegrasyon erişimiAçık/Kapalı
kpi_api_integrationKPI API EntegrasyonuAçık/Kapalı
max_api_integrationsMaks API entegrasyon sayısıSayısal
min_cron_interval_minutesMin cron aralığı (dakika)Sayısal
notification_tierBildirim seviyesiSeviye (BASIC/FULL)
audit_logDenetim günlüğüAçık/Kapalı
priority_supportÖncelikli destekAçık/Kapalı

Yapay Zeka (AI)

ÖzellikAçıklamaDeğer Tipi
ai_assistantAI AsistanAçık/Kapalı
ai_daily_messagesGünlük AI mesaj limitiSayısal
ai_max_conversationsMaks aktif konuşmaSayısal
ai_history_retention_daysChat saklama süresi (gün)Sayısal
ai_web_researchWeb araştırmaAçık/Kapalı
ai_daily_web_searchesGünlük web araştırma limitiSayısal
ai_data_generationÖrnek veri üretimiAçık/Kapalı
ai_rate_limit_per_minuteDakikalık AI istek limitiSayısal

Plan Yönetimi (SuperAdmin)

Plan yönetimi sadece SUPER_ADMIN rolüne sahip kullanıcılar tarafından yapılabilir.

Plan Oluşturma

  1. Planlar sayfasına gidin
  2. Yeni Plan butonuna tıklayın
  3. Plan bilgilerini doldurun:
    • Kod: Benzersiz tanımlayıcı (ör. premium)
    • Ad: Görüntülenen ad
    • Açıklama: Plan açıklaması
    • Maks Tenant: Bu planla oluşturulabilecek tenant sayısı (0 = sınırsız)
    • Sıralama: Listede görünme sırası
  4. Her özellik için değerleri belirleyin (açık/kapalı, limit, seviye)
  5. Kaydet butonuna tıklayın

Plan Düzenleme

  • Mevcut bir planın özellik değerleri değiştirilebilir
  • Plan kodu değiştirilebilir (benzersiz olmalı)
  • Aktif/pasif durumu değiştirilebilir

Plan Atama

  1. Planı atamak istediğiniz TenantGroup'u belirleyin
  2. POST /plans/:planId/assign endpoint'ini kullanarak planı gruba atayın
  3. Değişiklik anında tüm grup tenant'larını etkiler

Grup Override (İstisna Tanımlama)

Belirli bir TenantGroup için plan değerlerinden farklı değerler tanımlamak istediğinizde override kullanılır:

  1. Override tanımlamak istediğiniz grubun override sayfasına gidin
  2. Değiştirmek istediğiniz özelliği seçin
  3. Yeni değeri girin
  4. İsteğe bağlı olarak bir sebep ekleyin
  5. Kaydet butonuna tıklayın

Not: Override yalnızca ilgili feature için plan değerinin üzerine yazar. Override tanımlanmayan özellikler plandaki değerleri kullanır.


Değer Çözümleme Sırası

Bir feature'ın efektif değeri şu sıra ile belirlenir (aktif abonelik olduğunda):

  1. PlanFeatureOverride — Grup bazında override tanımlıysa bu değer kullanılır
  2. PlanFeature — Override yoksa, plandaki değer kullanılır
  3. FeatureDefinition — Planda da tanımlı değilse, platform varsayılanı kullanılır

Dikkat: Override'lar yalnızca aktif bir abonelik (subscription) olduğunda geçerlidir. Abonelik sona erdiğinde veya iptal edildiğinde override'lar devre dışı kalır ve Free plan değerleri uygulanır.


Abonelik (Subscription) Yönetimi

Abonelik sistemi, planlara zaman bazlı erişim sağlar. Bir TenantGroup'un ücretli bir plana erişebilmesi için o plana ait aktif bir aboneliğe sahip olması gerekir.

Abonelik Modeli

TenantGroup
└─ Subscription (1 aktif, N geçmiş)
├─ PlanTemplate → hangi plana abone
├─ BillingPeriod → MONTHLY / YEARLY
├─ startDate, endDate → abonelik dönemi
├─ gracePeriodDays → süre bitiminde ek süre (varsayılan: 7 gün)
├─ autoRenew → otomatik yenileme flag'i
└─ status → ACTIVE / CANCELLED / EXPIRED

Abonelik Durumları

DurumAçıklama
ACTIVEAbonelik aktif, plan özellikleri ve override'lar geçerli
CANCELLEDYönetici tarafından iptal edildi, grup Free plana düştü
EXPIREDSüre + grace period doldu, otomatik olarak Free plana düşürüldü

Grace Period (Ek Süre)

Abonelik bitiş tarihi geçtiğinde 7 günlük bir ek süre tanınır. Bu süre boyunca:

  • Plan özellikleri aktif kalır
  • Override'lar geçerli kalır
  • FE'de uyarı banner'ı gösterilir

Grace period sonunda otomatik olarak:

  • Abonelik durumu EXPIRED olur
  • Grubun planı Free'ye düşürülür
  • Override'lar devre dışı kalır

İş Kuralları

  1. Bir grupta aynı anda yalnızca 1 aktif abonelik olabilir
  2. Free plana abonelik oluşturulamaz — Free varsayılan plandır
  3. Plan değişikliği: Mevcut aboneliği iptal edin → yeni abonelik oluşturun
  4. İptal: Abonelik iptal edildiğinde grup anında Free plana düşer
  5. Silme: Yalnızca CANCELLED veya EXPIRED abonelikler soft-delete edilebilir
  6. autoRenew: Şu an yalnızca flag olarak tutulur, otomatik yenileme henüz aktif değildir

FE Uyarı Banner'ı

Abonelik süresi dolmaya yaklaştığında tüm kullanıcılara uyarı banner'ı gösterilir:

Kalan GünBanner TipiMesaj
≤ 30 günBilgi (mavi)"Aboneliğiniz X gün sonra sona erecek"
≤ 7 günUyarı (turuncu)"Aboneliğiniz X gün sonra sona erecek"
≤ 1 günAcil (kırmızı)"Aboneliğiniz yarın sona erecek!"
Grace periodHata (kırmızı)"Aboneliğiniz sona erdi. Ek süre: X gün"

Abonelik API Endpoint'leri

EndpointMethodAçıklamaErişim
/subscriptionsGETTüm abonelikleri listeleSUPER_ADMIN
/subscriptions/:idGETAbonelik detayıSUPER_ADMIN
/subscriptionsPOSTYeni abonelik oluşturSUPER_ADMIN
/subscriptions/:idPATCHAbonelik güncelle (endDate/autoRenew/notes)SUPER_ADMIN
/subscriptions/:id/cancelPOSTAbonelik iptalSUPER_ADMIN
/subscriptions/:idDELETEAbonelik sil (soft)SUPER_ADMIN
/subscriptions/my-statusGETKendi grup abonelik durumuTüm Roller

Sayısal Limit Kuralları

  • 0 = Sınırsız (kullanıcı, tenant, hedef vs. için limit yok)
  • Pozitif sayı = Belirtilen miktar kadar izin verilir
  • enabled: false ise limit değeri dikkate alınmaz (özellik kapalı)

Yetki Matrisi

İşlemSUPER_ADMINGROUP_ADMINADMINDiğer
Plan listeleme
Plan oluşturma
Plan düzenleme
Plan silme
Plan atama
Feature tanımı CRUD
Override tanımlama
Efektif plan görüntüleme✅*

* GROUP_ADMIN: Yalnızca kendi grubunun efektif planını görüntüleyebilir.


API Endpoint'leri

EndpointMethodAçıklamaErişim
/plansGETTüm planları listeleSUPER_ADMIN
/plansPOSTYeni plan oluşturSUPER_ADMIN
/plans/:planIdGETPlan detayıSUPER_ADMIN
/plans/:planIdPATCHPlan güncelleSUPER_ADMIN
/plans/:planIdDELETEPlan silSUPER_ADMIN
/plans/:planId/assignPOSTPlanı TenantGroup'a ataSUPER_ADMIN
/plans/featuresGETFeature tanımları listesiSUPER_ADMIN
/plans/featuresPOSTYeni feature tanımıSUPER_ADMIN
/plans/features/:featureKeyPATCHFeature tanımı güncelleSUPER_ADMIN
/plans/effective/:groupIdGETEfektif plan (override dahil)SUPER_ADMIN, GROUP_ADMIN*
/plans/my-groupsGETKendi gruplarımın planlarıSUPER_ADMIN, GROUP_ADMIN*
/plans/overrides/:groupIdGETGrup override'larıSUPER_ADMIN
/plans/overrides/:groupIdPUTOverride tanımla/güncelleSUPER_ADMIN

* GROUP_ADMIN: Yalnızca kendi grubunun planını görüntüleyebilir.


Plan Enforcement (Limit Kontrolü)

Plan limitleri backend'de otomatik olarak kontrol edilir. Limit aşıldığında işlem 422 (Unprocessable Entity) hatası ile reddedilir.

Kontrol Edilen Noktalar

Entity OluşturmaFeature KeyKapsam
Tenant eklememaxTenants (PlanTemplate)Grup geneli
Kullanıcı eklememax_usersGrup geneli (tüm tenant'lar toplam)
Hedef (Objective) eklememax_objectivesTenant bazlı
Anahtar Sonuç (KR) eklememax_key_resultsTenant bazlı
İnisiyatif eklememax_initiativesTenant bazlı

Davranış Kuralları

  • 0 = Sınırsız: Limit değeri 0 ise kontrol yapılmaz
  • Mevcut veriler korunur: Limit aşıldığında mevcut veriler silinmez, sadece yeni ekleme engellenir
  • Hata mesajı: "[Entity] limiti dolmuş (mevcut/limit). Plan yükseltmesi gerekiyor."
  • Loglama: Her reddedilen işlem logger.warn ile loglanır

PlanFeature Guard (Boolean Özellik Kontrolü)

Boolean özellikler (ör. swot_analysis, bsc_module) @PlanFeature dekoratörü ile route seviyesinde kontrol edilebilir:

@UseGuards(PlanFeatureGuard)
@PlanFeature('swot_analysis')
@Get('swot')
getSwot() { ... }

Devre dışı olan feature'lara erişim 422 hatası ile reddedilir.


GROUP_ADMIN Plan Görünürlüğü

GROUP_ADMIN kullanıcılar menüde Platform → Plan Bilgileri sayfasından kendi gruplarının planını görüntüleyebilir. Bu sayfa salt okunurdur:

  • Plan adı ve özellikleri görüntülenir
  • Her özelliğin değeri ve kaynağı (Plan/Özel Ayar/Varsayılan) gösterilir
  • Limitler ve aktif özellikler kategorilere göre gruplanır
  • GROUP_ADMIN plan değişikliği yapamaz, override tanımlayamaz

Sık Sorulan Sorular

S: Bir tenant'ın planını değiştirebilir miyim? H: Hayır. Planlar tenant seviyesinde değil, TenantGroup seviyesinde tanımlanır. Tenant'ın planını değiştirmek için grubunun planını değiştirin.

S: Override ile planın tamamını değiştirebilir miyim? C: Override sadece tek tek feature'lar için tanımlanır. Tüm değerleri değiştirmek istiyorsanız yeni bir plan oluşturup gruba atayın.

S: Bir planı silerken mevcut gruplar ne olur? C: Bir plana bağlı TenantGroup varsa plan silinemez. Önce tüm grupları başka bir plana taşıyın.

S: Free plan kullanıcısı limit aşarsa ne olur? C: Yeni ekleme işlemleri engellenir. Mevcut veriler silinmez, ancak limit dahilinde olana kadar yeni kayıt oluşturulamaz.

S: Abonelik süresi dolduğunda ne olur? C: 7 günlük grace period başlar. Bu sürede plan aktif kalır. Grace period sonunda grup otomatik olarak Free plana düşer.

S: Abonelik iptal edildiğinde mevcut veriler silinir mi? C: Hayır. Grup Free plana düşer ve limitler Free değerlerini kullanır. Mevcut veriler korunur, ancak Free limitlerini aşan yeni ekleme işlemleri engellenir.

S: Bir grubun planını değiştirmek için ne yapmalıyım? C: Mevcut aboneliği iptal edin, ardından istediğiniz plana yeni bir abonelik oluşturun.

S: Override'lar abonelik olmadan çalışır mı? C: Hayır. Override'lar yalnızca aktif bir abonelik olduğunda geçerlidir. Abonelik yoksa Override değerleri dikkate alınmaz.