# Teknik Spesifikasyon: Menü Microservisi **1. Giriş** Bu belge, menü microservisinin tasarımını ve gereksinimlerini tanımlar. Menü microservisi, menü item'larını dinamik olarak yönetir ve günceller, ayrıca gerçek zamanlı olarak istemcilere güncellemeler iletebilir. **2. Genel Tanım** Amaç: Menü microservisi, menü item'larını yönetir ve günceller. Menü item'larını kullanıcı rollerine ve özelliklere göre filtreler ve gerçek zamanlı güncellemeler sağlar. **Teknolojiler:** Backend: .NET Core / .NET 6 Veritabanı: PostgreSQL Gerçek Zamanlı İletişim: SignalR Workflow Yönetimi: Zeebe **3. Alanlar ve Veri Modeli** MenuItem Modeli: ```csharp public class MenuItem { public Guid Id { get; set; } // Menü item'ın benzersiz kimliği public Guid? ParentId { get; set; } // Üst menü item'ın kimliği (varsa) public string Name { get; set; } // Menü item'ın adı public List<string> Roles { get; set; } // Menü item'a erişim sağlayan roller public string Feature { get; set; } // Menü item'ın bağlı olduğu özellik public bool IsNew { get; set; } // Menü item'ın yeni olup olmadığı public DateTime PublishDate { get; set; } // Menü item'ın yayınlanma tarihi public DateTime? EndDate { get; set; } // Menü item'ın sona erme tarihi (varsa) public List<string> Tags { get; set; } // Menü item için etiketler public string State { get; set; } // Menü item için stateler public dynamic AdditionalData { get; set; } // Json veriseti public string ClientId { get; set; } // Client bilgisi } ``` **4. İşlevsellik** **4.1 Menü Item Oluşturma ve Güncelleme** API Endpoint: POST /api/menu (Oluşturma), PUT /api/menu/{id} (Güncelleme) Fonksiyonlar: * Yeni bir menü item'ı oluşturulabilir. * Var olan menü item'ları güncellenebilir. * Validasyon kuralları uygulanır ve gerekli alanların eksiksiz doldurulması sağlanır. **4.2 Menü Gösterimi ve Filtreleme** API Endpoint: GET /api/menu Fonksiyonlar: * Kullanıcı oturum açtığında, menü item'ları backend'den yüklenir. * Menü item'lar, kullanıcı rollerine ve özelliklere göre filtrelenir. **4.3 Streaming Update** Teknoloji: SignalR Fonksiyonlar: * Özellikler açıldığında veya kapandığında, workflow akışları tamamlandığında backend tarafından sinyal gönderilir. * İstemciler sinyalleri alır ve menü item'larını günceller. * Menü item'ları güncellenmiş olarak kullanıcı local depo alanında saklar. **4.4 Workflow Yönetimi** Teknoloji: Zeebe Fonksiyonlar: * Menü item'larının oluşturulması, güncellenmesi ve silinmesi Zeebe akışları üzerinden yönetilir. * Her işlem, Zeebe süreç akışlarına entegre edilerek iş akışları ve iş kuralları uygulanır. Akış Diyagramları * Menü Item Oluşturma Akışı * Menü Item Güncelleme Akışı * Menü Item Silme Akışı **5. Güvenlik** Erişim Kontrolü: Menü item'larına erişim, kullanıcı rollerine göre kontrol edilir.