Mantık ve Yapı

  1. Veritabanı Yapısı:
    • Müşteri Formları Tablosu (CustomerForms):
      • FormID (birincil anahtar)
      • FormContent (formun içeriği)
      • Language (formun dili)
      • AssignedTo (formun atandığı satış danışmanı)
    • Satış Danışmanları Tablosu (SalesAgents):
      • AgentID (birincil anahtar)
      • Name (danışmanın adı)
      • Languages (danışmanın konuştuğu diller)
      • LastAssignedTime (son form atama zamanı)
  2. Algoritma:
    • Yeni Form Geldiğinde:
      1. Yeni formun dilini belirle.
      2. Belirtilen dili konuşan satış danışmanlarını seç.
      3. Seçilen satış danışmanları arasında, en son form alan kişiyi sona alacak şekilde sırala.
      4. İlk sıradaki satış danışmanına formu ata.
      5. Atamanın ardından, atama zamanını ve formun atandığı kişiyi güncelle.
  3. Algoritmanın Adımları:
  4. import datetime
    
    # Örnek veri yapıları
    customer_forms = [
        {"FormID": 1, "FormContent": "İçerik 1", "Language": "Türkçe", "AssignedTo": None},
        {"FormID": 2, "FormContent": "İçerik 2", "Language": "İngilizce", "AssignedTo": None},
        # Diğer formlar
    ]
    
    sales_agents = [
        {"AgentID": 1, "Name": "Ahmet", "Languages": ["Türkçe"], "LastAssignedTime": None},
        {"AgentID": 2, "Name": "John", "Languages": ["İngilizce"], "LastAssignedTime": None},
        {"AgentID": 3, "Name": "Mehmet", "Languages": ["Türkçe", "İngilizce"], "LastAssignedTime": None},
        # Diğer danışmanlar
    ]
    
    def assign_form_to_agent(form):
        # Formun dilini al
        form_language = form["Language"]
    
        # Belirtilen dili konuşan danışmanları filtrele
        available_agents = [agent for agent in sales_agents if form_language in agent["Languages"]]
    
        # Danışmanları en son atama zamanına göre sırala
        available_agents.sort(key=lambda x: (x["LastAssignedTime"] is not None, x["LastAssignedTime"]))
    
        # İlk sıradaki danışmana formu ata
        assigned_agent = available_agents[0]
        form["AssignedTo"] = assigned_agent["AgentID"]
        assigned_agent["LastAssignedTime"] = datetime.datetime.now()
    
        return assigned_agent["AgentID"]
    
    # Örnek kullanım
    for form in customer_forms:
        assigned_agent_id = assign_form_to_agent(form)
        print(f"Form ID {form['FormID']} assigned to Agent ID {assigned_agent_id}")
  5. 4.Sistem Akışı:
    • Sistem, yeni bir müşteri formu geldiğinde assign_form_to_agent fonksiyonunu çağırır.
    • Formun diline uygun danışmanlar bulunur ve en son form alan danışman en sona alınarak sıraya konur.
    • En üstteki danışmana form atanır ve atama zamanı güncellenir.
  6. Dikkat Edilmesi Gerekenler

    • Veritabanı işlemlerinde veri bütünlüğünü sağlamak için transaction kullanımı önemlidir.
    • Yük dengelemesi için danışmanların meşguliyet durumu ve iş yoğunluğu gibi ek kriterler eklenebilir.
    • Kod, gerçek veri yapıları ve hata kontrolü ile genişletilmelidir.