# 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.