-- =============================================================================
-- Mavi11 Business — Başlangıç / Referans Verisi (MariaDB)
-- Sürüm: 1.0  |  Tarih: 2026-06-06
-- Not: TEMİZ veritabanına bir kez çalıştırılmak üzere tasarlanmıştır.
-- İçerik: varsayılan tenant, sistem rolleri, izinler, sektör taksonomisi,
--         6 ürün + sektör eşleşmeleri, pipeline aşamaları, kayıp nedenleri.
-- =============================================================================


-- -----------------------------------------------------------------------------
-- 1. Varsayılan Tenant
-- -----------------------------------------------------------------------------
INSERT INTO tenants (name, slug, plan, status)
VALUES ('Mavi11 Business', 'mavi11', 'enterprise', 'active');
SET @tenant_id = (SELECT id FROM tenants WHERE slug = 'mavi11');

-- -----------------------------------------------------------------------------
-- 2. Sistem Rolleri (global: tenant_id NULL, is_system = 1)
-- -----------------------------------------------------------------------------
INSERT INTO roles (tenant_id, name, slug, level, is_system, description) VALUES
  (NULL, 'Süper Admin',       'super_admin',   100, 1, 'Platform sahibi — tüm tenant ve global ayarlar'),
  (NULL, 'Admin',             'admin',          80, 1, 'Tenant yöneticisi — tüm operasyon'),
  (NULL, 'Satış Müdürü',      'sales_manager',  60, 1, 'Ekip yöneticisi'),
  (NULL, 'Satış Temsilcisi',  'sales_rep',      40, 1, 'Saha satışçısı — kendi lead’leri'),
  (NULL, 'Analist',           'analyst',        20, 1, 'Salt-okunur raporlama');

-- -----------------------------------------------------------------------------
-- 3. İzinler (permissions)
-- -----------------------------------------------------------------------------
INSERT INTO permissions (code, category, description) VALUES
  ('leads.view.own',    'leads',         'Kendi lead’lerini görüntüle'),
  ('leads.view.team',   'leads',         'Ekibinin lead’lerini görüntüle'),
  ('leads.view.all',    'leads',         'Tüm lead’leri görüntüle'),
  ('leads.create',      'leads',         'Lead oluştur'),
  ('leads.update',      'leads',         'Lead güncelle'),
  ('leads.delete',      'leads',         'Lead sil'),
  ('leads.import',      'leads',         'Toplu lead içe aktar'),
  ('leads.assign',      'leads',         'Lead ata / yeniden ata'),
  ('activities.manage', 'crm',           'Görüşme/aktivite yönet'),
  ('deals.manage',      'pipeline',      'Fırsat/pipeline yönet'),
  ('scoring.configure', 'ai',            'Skorlama kurallarını ayarla'),
  ('ai.use',            'ai',            'AI analiz/öneri kullan'),
  ('reports.view.own',  'reports',       'Kendi raporlarını gör'),
  ('reports.view.all',  'reports',       'Tüm raporları gör'),
  ('users.manage',      'admin',         'Kullanıcı/ekip yönet'),
  ('roles.manage',      'admin',         'Rol/izin yönet'),
  ('settings.manage',   'admin',         'Sistem ayarlarını yönet'),
  ('products.manage',   'admin',         'Ürün kataloğunu yönet'),
  ('audit.view',        'admin',         'Denetim kaydını gör'),
  ('notifications.view','notifications',  'Bildirimleri gör');

-- -----------------------------------------------------------------------------
-- 4. Rol-İzin Eşleştirme
-- -----------------------------------------------------------------------------
-- super_admin & admin: TÜM izinler
INSERT INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id FROM roles r CROSS JOIN permissions p
WHERE r.slug IN ('super_admin', 'admin');

-- sales_manager: ekip + operasyon (yönetim hariç)
INSERT INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id FROM roles r JOIN permissions p
  ON p.code IN ('leads.view.team','leads.view.own','leads.create','leads.update',
                'leads.import','leads.assign','activities.manage','deals.manage',
                'ai.use','reports.view.all','notifications.view')
WHERE r.slug = 'sales_manager';

-- sales_rep: yalnızca kendi kapsamı
INSERT INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id FROM roles r JOIN permissions p
  ON p.code IN ('leads.view.own','leads.update','activities.manage',
                'deals.manage','ai.use','reports.view.own','notifications.view')
WHERE r.slug = 'sales_rep';

-- analyst: salt-okunur raporlama
INSERT INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id FROM roles r JOIN permissions p
  ON p.code IN ('leads.view.all','reports.view.all','notifications.view')
WHERE r.slug = 'analyst';

-- -----------------------------------------------------------------------------
-- 5. Sektör Taksonomisi (global: tenant_id NULL)
-- -----------------------------------------------------------------------------
INSERT INTO sectors (tenant_id, name, slug) VALUES
  (NULL, 'Spa & Güzellik',     'spa-guzellik'),
  (NULL, 'Fitness & Spor',     'fitness-spor'),
  (NULL, 'Turizm & Transfer',  'turizm-transfer'),
  (NULL, 'Otomotiv',           'otomotiv'),
  (NULL, 'Sağlık',             'saglik'),
  (NULL, 'Konaklama',          'konaklama'),
  (NULL, 'Emlak',              'emlak'),
  (NULL, 'Yeme-İçme',          'yeme-icme'),
  (NULL, 'Perakende',          'perakende'),
  (NULL, 'Diğer',              'diger');

-- -----------------------------------------------------------------------------
-- 6. Ürün Kataloğu (6 ürün)
-- -----------------------------------------------------------------------------
INSERT INTO products (tenant_id, name, slug, description, currency, status, sort_order) VALUES
  (@tenant_id, 'Spa Yazılımı',           'spa',          'Spa & güzellik merkezleri için rezervasyon ve yönetim yazılımı', 'TRY', 'active', 1),
  (@tenant_id, 'Fitness Yazılımı',       'fitness',      'Spor salonları için üyelik ve antrenman yönetimi',              'TRY', 'active', 2),
  (@tenant_id, 'VIP Transfer Yazılımı',  'vip-transfer', 'Transfer & turizm firmaları için rezervasyon/operasyon',        'TRY', 'active', 3),
  (@tenant_id, 'Araç Değerleme Yazılımı','arac-degerleme','Otomotiv sektörü için araç değerleme/ekspertiz',               'TRY', 'active', 4),
  (@tenant_id, 'AI Site Oluşturucu',     'ai-site',      'Yapay zeka ile otomatik web sitesi oluşturma',                  'TRY', 'active', 5),
  (@tenant_id, 'AI Blog Oluşturucu',     'ai-blog',      'Yapay zeka ile otomatik blog/içerik üretimi',                   'TRY', 'active', 6);

-- -----------------------------------------------------------------------------
-- 7. Ürün ↔ Sektör Eşleştirme (skorlama girdisi)
-- -----------------------------------------------------------------------------
-- Dikey ürünler -> birincil sektör (yüksek uyum)
INSERT INTO product_sector_map (product_id, sector_id, fit_weight) VALUES
  ((SELECT id FROM products WHERE slug='spa'           AND tenant_id=@tenant_id), (SELECT id FROM sectors WHERE slug='spa-guzellik'),    1.00),
  ((SELECT id FROM products WHERE slug='fitness'       AND tenant_id=@tenant_id), (SELECT id FROM sectors WHERE slug='fitness-spor'),    1.00),
  ((SELECT id FROM products WHERE slug='vip-transfer'  AND tenant_id=@tenant_id), (SELECT id FROM sectors WHERE slug='turizm-transfer'), 1.00),
  ((SELECT id FROM products WHERE slug='arac-degerleme'AND tenant_id=@tenant_id), (SELECT id FROM sectors WHERE slug='otomotiv'),        1.00);

-- Yatay AI ürünleri -> tüm sektörler (orta uyum)
INSERT INTO product_sector_map (product_id, sector_id, fit_weight)
SELECT p.id, s.id, 0.60
FROM products p CROSS JOIN sectors s
WHERE p.tenant_id = @tenant_id AND p.slug IN ('ai-site','ai-blog') AND s.tenant_id IS NULL;

-- -----------------------------------------------------------------------------
-- 8. Pipeline Aşamaları
-- -----------------------------------------------------------------------------
INSERT INTO pipeline_stages (tenant_id, name, slug, sort_order, probability, is_won, is_lost) VALUES
  (@tenant_id, 'Lead',        'lead',         1,  10, 0, 0),
  (@tenant_id, 'İletişim',    'contact',      2,  20, 0, 0),
  (@tenant_id, 'Nitelikli',   'qualified',    3,  35, 0, 0),
  (@tenant_id, 'Sunum/Demo',  'demo',         4,  50, 0, 0),
  (@tenant_id, 'Teklif',      'proposal',     5,  65, 0, 0),
  (@tenant_id, 'Müzakere',    'negotiation',  6,  80, 0, 0),
  (@tenant_id, 'Kazanıldı',   'won',          7, 100, 1, 0),
  (@tenant_id, 'Kaybedildi',  'lost',         8,   0, 0, 1);

-- -----------------------------------------------------------------------------
-- 9. Kayıp Nedenleri
-- -----------------------------------------------------------------------------
INSERT INTO lost_reasons (tenant_id, name, sort_order) VALUES
  (@tenant_id, 'Fiyat yüksek bulundu',     1),
  (@tenant_id, 'Rakip tercih edildi',      2),
  (@tenant_id, 'İhtiyaç yok / ilgisiz',    3),
  (@tenant_id, 'Bütçe yok',                4),
  (@tenant_id, 'Zamanlama uygun değil',    5),
  (@tenant_id, 'Ulaşılamadı',              6),
  (@tenant_id, 'Diğer',                    7);
