İki Farklı Yaklaşım: Tam B2B vs Minimal Değişiklik
Ana şirketleri tutar. Örnek: Starbucks, McDonalds, Koçtaş...
| Alan | Tip | Açıklama |
|---|---|---|
| id | bigint | Firma kimliği |
| company_name | string | Firma adı |
| company_code | string | Benzersiz kod (davet için) |
| owner_user_id | bigint | Firma sahibi/admin |
| max_branches | int | Maksimum şube sayısı |
| subscription_plan | enum | business, enterprise |
| payment_model | enum | central, branch, hybrid |
| is_active | boolean | Aktif mi? |
Firmanın şubelerini tutar. Örnek: Starbucks Kadıköy, Starbucks Beşiktaş...
| Alan | Tip | Açıklama |
|---|---|---|
| id | bigint | Şube kimliği |
| company_id | bigint | Hangi firmaya ait? |
| branch_name | string | Şube adı |
| branch_code | string | Benzersiz şube kodu |
| city | string | Şehir |
| address | text | Adres |
| phone | string | Telefon |
| manager_user_id | bigint | Şube yöneticisi |
| is_active | boolean | Aktif mi? |
Sistem genelinde tanımlı roller.
| Alan | Tip | Açıklama |
|---|---|---|
| id | bigint | Rol kimliği |
| name | string | company_admin, branch_manager, branch_employee |
| display_name | string | Firma Yöneticisi, Şube Müdürü... |
| permissions | json | Yetki listesi |
Kullanıcının hangi firmada/şubede hangi rolü olduğunu tutar.
| Alan | Tip | Açıklama |
|---|---|---|
| id | bigint | Kayıt kimliği |
| user_id | bigint | Kullanıcı |
| role_id | bigint | Rol |
| company_id | bigint | Hangi firma için? |
| branch_id | bigint nullable | Hangi şube için? (opsiyonel) |
companies tablosuna kayıt → company_code: "STAR2025"
branches tablosuna 3 kayıt
user_roles tablosuna kayıt (role: branch_manager)
user_roles tablosuna kayıt (role: branch_employee, branch_id: Kadıköy)
branch_id eklenir
company_id bazlı sorgular
Mevcut muzibu_corporate_accounts tablosunu kullan, sadece birkaç alan ekle!
muzibu_corporate_accounts tablosuna sadece 3 alan ekle:
| Alan | Tip | Açıklama |
|---|---|---|
| branch_name | string nullable | Şube adı (varsa) |
| role | enum | owner, manager, employee |
| settings | json | Esnek ayarlar (şehir, adres, max_members vb.) |
corporate_accountsparent_idrole enumsettings JSON| Özellik | PLAN A (Tam B2B) | PLAN B (Minimal) |
|---|---|---|
| Yeni Tablo Sayısı | 4 yeni tablo | 0 (mevcut genişletilir) |
| Kod Miktarı | ~2000 satır (model, service, view) | ~500 satır (sadece genişletme) |
| Maksimum Şube | Sınırsız (200+) | 50-100 (performans düşer) |
| Rol Sistemi | Ayrı tablo, esnek, genişletilebilir | Enum, 3 sabit rol |
| Raporlama | Firma/şube bazlı detaylı | Basit, parent-child sorguları |
| Ödeme Entegrasyonu | 3 model (merkezi, şube, hibrit) | Sadece merkezi |
| Geliştirme Süresi | 1-2 hafta | 3-4 saat |
| Bakım Maliyeti | Orta (daha fazla kod) | Düşük (az kod) |
| Ölçeklenebilirlik | Mükemmel | Sınırlı |
| Risk | Orta (yeni sistem) | Düşük (mevcut genişletme) |
PLAN B ile başla! 3-4 saat içinde kurumsal sistemi hazır hale getir. İlk 10-20 müşteriyle test et. Eğer 50+ şube talepleri gelirse veya sistem yavaşlarsa, o zaman PLAN A'ya geç.
Senin kararına göre hangi planı uygulayalım?