{
  "date": "2026-08-13",
  "entries": [
    {
      "title": "Açılan takvim ve listeler kartın içinde kırpılıyordu",
      "tickets": [
        "EGT-119"
      ],
      "changes": {
        "musteri": {
          "fixed": [
            "Teklif isteği ekranında «Başlangıç» tarihine basınca açılan takvim, grup kartının kenarında kesiliyordu: bir ay açılıyor, iki hafta görünüyordu. Ekranda hiçbir şey bozuk görünmüyordu — takvim çiziliyordu, sadece alt yarısı yoktu.",
            "Aynı kartta duran «Kişiler» ve «Bu grubun alacağı eğitimler» listeleri de aynı sebeple kırpılıyordu.",
            "«Kişiler» alanının etiketi hiçbir kontrole bağlı değildi (iki grup aynı kimliği taşıyordu); etikete tıklamak artık alanı açıyor."
          ]
        },
        "altyapi": {
          "fixed": [
            "Sebep tek ve ortaktı: açılan katman alanın İÇİNDE konumlanıyordu, dolayısıyla üstündeki her kutu (kart, tablo, kaydırma alanı) onu kırpabiliyordu. EGT-106'da satır menüsü için çözülmüş, kural o zaman «bir satırdan açılan her katman aynı şeyi yapmak zorunda» diye yazılmıştı — ama yalnız menüye uygulanmıştı.",
            "Katman artık sayfanın en dışına taşınıyor ve alanın kendi dikdörtgeninden konumlanıyor: altta yer yoksa yukarı açılıyor, iki tarafa da sığmıyorsa kendi içinde kayıyor, ekranın kenarını hiç geçmiyor. Sayfa ya da tablo kaydıkça konum yeniden hesaplanıyor.",
            "Altı kontrolün hepsi tek bir ortak parçaya bağlandı: tarih seçici, tarih aralığı, aranabilir seçim, çoklu seçim, telefon ülke/alan kodu ve yetki kapsamı. Yedinci bir kopya yazılmasın diye aritmetik tek yerde."
          ],
          "added": [
            "Tarayıcı testi: takvim ve çoklu seçim listesi, arızanın bildirildiği ekranda, dört ekran genişliğinde ölçülüyor — katmanın sayfanın dışına taşındığı VE son satırının gerçekten ekranda olduğu ayrı ayrı doğrulanıyor."
          ]
        }
      }
    },
    {
      "title": "Teklifi onaylayamayan kişiye ekran nedenini söylüyor",
      "tickets": [
        "EGT-124"
      ],
      "changes": {
        "musteri": {
          "fixed": [
            "Onay panelinde hiçbir düğme yoktu ve neden olmadığı da yazmıyordu: teklif onayı hesapta ikinci doğrulama kurulu olmadan yapılamıyor, ekran bunu söylemiyordu. Artık sebebi yazıyor ve «Güvenlik ayarlarına git» diyor.",
            "Yetkisi olmayan kişiye farklı bir cümle çıkıyor — onu ikinci doğrulama ekranına yollamak işine yaramazdı; yetkiyi firmanın panel yöneticisinin tanımladığı yazıyor."
          ]
        }
      }
    },
    {
      "title": "Planlama kuyruğunda hangi talebin ne olduğu görünüyor",
      "tickets": [
        "EGT-120"
      ],
      "changes": {
        "planlama": {
          "fixed": [
            "Üç talep birbirinin aynısı görünüyordu: aynı eğitim adı, bir referans kodu ve «1 kişi». Kart artık FİRMA adıyla başlıyor; altında eğitim, kod, kişi sayısı, talebi açan kişi ve tercih edilen tarihler var.",
            "Açık eğitim kontenjanı istendiyse hangi açık eğitim için istendiği yazıyor — eskiden hiçbir yerde yoktu.",
            "«Detay» düğmesi kartı yerinde açıp talep notunu ve yer notunu gösteriyor; ayrı ekrana gidilmiyor, sırayla üç talebe bakan kişi yerini kaybetmiyor."
          ]
        },
        "satis": {
          "fixed": [
            "Planlama talepleri listesi de artık firmayı, talebi açanı ve hangi açık eğitim için olduğunu yazıyor."
          ]
        }
      }
    },
    {
      "title": "Sertifikası olan personel teklife sessizce girmiyor",
      "tickets": [
        "EGT-116"
      ],
      "changes": {
        "musteri": {
          "added": [
            "Teklif isteğinde bir kişiyi seçtiğinizde, o kişinin istediğiniz eğitimde geçerli sertifikası varsa ekran uyarıyor: kimin, hangi eğitimde, hangi tarihe kadar geçerli olduğunu yazıyor ve «Listeden çıkar» sunuyor.",
            "⚠ Engellemiyor: tazeleme ya da ikinci bir saha için aynı kişiyi bilerek göndermek isteyebilirsiniz. Karar sizin, bu yalnız bir hatırlatma.",
            "Sertifikası yenileme penceresine girmiş kişiler için uyarı ÇIKMIYOR — onlar zaten talebin sebebi. Pencerenin kaç gün olduğu firmanızın kendi ayarı."
          ]
        }
      }
    },
    {
      "title": "Planlamacı sorgulama ekranı telefonda yana kaymıyor",
      "tickets": [
        "EGT-126"
      ],
      "changes": {
        "planlama": {
          "fixed": [
            "Sorgulama ekranı 375 piksel genişlikte 462 piksellik içerik üretiyordu: sayfa yana kayıyor, süzgeçlerin sağ kenarı ekranın dışında kalıyordu. Sebep süzgeç ızgarasına telefon genişliğinde sütun tanımlanmamış olmasıydı — tarayıcı içeriğe bakıp 429 piksellik bir sütun uyduruyordu, oysa kap 309 piksel.",
            "«İşe giriş tarihi (arası)» altındaki iki tarih alanı telefonda alt alta geliyor; yan yana 429 piksel istiyorlardı. Tabletten itibaren yine yan yana."
          ]
        },
        "altyapi": {
          "fixed": [
            "Çoklu seçim kutusunda uzun bir seçim (örneğin «Deniz gözetim işletme yetki belgesi») kutuyu şişirip sütunu taşırıyordu; artık kutu daralabiliyor ve uzun etiket üç noktayla kesiliyor. Seçimin tamamı açılan listede ve etiketin kendisinde okunmaya devam ediyor.",
            "«Başkası bu kayıtta» rozetinin tarayıcı testi tam koşuda düşüyordu: rozet 90 saniye yaşıyor, bir önceki tur aynı teklifi açtıysa «yalnızım» iddiası doğru olmuyordu. Test artık bu durumu atlıyor ve sebebini yazıyor."
          ]
        }
      }
    },
    {
      "title": "Yetki belgeleriniz kapsamındaki eğitimler personel ekranında öneriliyor",
      "tickets": [
        "EGT-114"
      ],
      "changes": {
        "musteri": {
          "added": [
            "Personelin sertifika panelinde yeni bir kart: «Yetki belgeleriniz kapsamında alabileceği eğitimler». Firmanın yüklediği yetki belgelerine bağlı eğitimleri listeler, her birinin yanında hangi belgeniz sayesinde kapsamda olduğunu yazar.",
            "Seçtiklerinizi işaretleyip «Seçilenler için teklif isteği oluştur» diyebilirsiniz: teklif isteği ekranı o personel ve o eğitimlerle dolu açılır. Yine siz gözden geçirip gönderirsiniz.",
            "⚠ Hiçbiri işaretli GELMEZ ve hiçbir şey kendiliğinden kaydedilmez. Kimin hangi eğitimi alacağına firma karar verir; sistem yalnız seçenekleri gösterir.",
            "Kişinin geçerli sertifikası olan eğitim kartta çıkmaz. Firma hiç yetki belgesi yüklememişse kart hiç görünmez.",
            "⚠ Süresi dolmuş bir yetki belgesi kapsam açmaz — dolmuş belgeye dayanarak eğitim önerilmez."
          ]
        },
        "altyapi": {
          "changed": [
            "Öneri, yeni bir tablo kurmadan mevcut tanımdan okunuyor: backoffice'te eğitim tanımında zaten «bu eğitim firmadan şu belgeyi bekler» diye işaretleniyordu; aynı satır ters yönden okunuyor. Kodda sabit eğitim listesi yok."
          ]
        }
      }
    },
    {
      "title": "Planlamacı, firmanın yetki belgesinin kapsamadığı eğitimi seçerken uyarılıyor",
      "tickets": [
        "EGT-112"
      ],
      "changes": {
        "planlama": {
          "added": [
            "Eğitim planlarken seçilen firmanın yetki belgeleri o eğitimi kapsamıyorsa, satırın altında hangi firmada hangi belgenin eksik olduğu yazıyor.",
            "⚠ Eğitim listeden GİZLENMİYOR ve seçim engellenmiyor. Belge çekmecede olabilir, yarın gelebilir ya da o iş için gerçekten gerekmiyor olabilir; listede olmayan bir eğitim ise satışın önünü sebebi görünmeden kapatır — planlamacı arar, bulamaz, nedenini de göremez.",
            "Süresi dolmuş yetki belgesi kapsam saymıyor: uyarı tam da orada susmamalı."
          ]
        }
      }
    },
    {
      "title": "Ofis personeli artık eğitim sayacına takılmıyor",
      "tickets": [
        "EGT-113"
      ],
      "changes": {
        "musteri": {
          "added": [
            "Personel eklerken artık «ofis personeli» mi «saha personeli» mi olduğu soruluyor. Soru işin cinsi değil, panel erişimi: «Panelinize erişecekse ofis personeli seçin ve yetkilerini düzenleyin. Yalnız eğitim takibi yapacaksanız saha personeli seçebilirsiniz.»",
            "Ofis personelinde «Eğitimlere katılacak» kutusu var — ofis çalışanınıza da eğitim aldırıyorsanız işaretleyin. Saha personelinde eğitim takibi her zaman açıktır.",
            "Uyum ekranında beşinci bir kutucuk: «Kapsam dışı». Eğitim takibi yapılmayan kişiler orada sayılır; dört durumun (uyumlu, süresi yaklaşıyor, süresi geçmiş, eğitim bekliyor) hiçbirine karışmazlar."
          ],
          "fixed": [
            "Eğitim alması beklenmeyen bir ofis çalışanı, işe girişinden üç ay sonra «süresi geçmiş» olarak görünüyordu — hiç planlanmamış bir eğitim yüzünden. Artık görünmüyor."
          ],
          "changed": [
            "⚠ Kapsam dışı kişiler GİZLENMİYOR: listede duruyorlar, kutucuktan süzülüp seçilebiliyorlar ve oradan doğrudan teklif isteğine taşınabiliyorlar. Bugün ofis personeli olarak eklenen biri, yarın bir eğitime gönderilmek istenirse akış kilitlenmiyor.",
            "Mevcut personelin hepsi eğitim takibine tabi olarak başlar; kimse bir gecede kapsam dışına düşmez, hiçbir firmanın oranı kendiliğinden değişmez."
          ]
        }
      }
    },
    {
      "title": "Backoffice panosunda «yapılacak işler»: eksikler artık görünüyor",
      "tickets": [
        "EGT-123"
      ],
      "changes": {
        "backoffice": {
          "added": [
            "Backoffice panosunun en üstünde yeni bir panel: sistemin çalışması için tanımlanması gerekenler, her biri kendi kartında ve «kaçı tamam / kaç tane» şeklinde. Kart tamamlanınca yeşile döner ve altında «Hepsi tanımlı.» yazar.",
            "Beş kart var, satırda ikişer: bildirim metinleri, eğitim saatine karşılık gelen fiyat bandı, 3E'nin kendi yetki belgeleri, eğitimlerde yenileme süresi, eğitimlerin firmadan beklediği belge. Her birinin kendi ikonu ve iri rakamı var.",
            "⚠ Kart yalnız saymıyor, EKSİK OLANLARI ADIYLA ve MADDE MADDE yazıyor. «30/32» diyen kartın altında eksik olan iki eğitimin adı durur; «0/9» diyen kartın altında metni yazılmamış dokuz bildirimin adı. Sebebi ölçüldü: sayıyı görüp ekrana giren kişi orada var olanları görüyor, olmayanı göremiyordu — neyi düzelteceğini anlamadan geri dönüyordu. Liste altı maddeden sonra «N kayıt daha göster» ile açılıyor.",
            "Kartın başlığının altında eksiğin bedeli tam hâliyle yazıyor — örneğin «metni olmayan bildirimin e-postası hiç gönderilmiyor; panel bildirimi düşüyor, mail yola çıkmıyor ve hiçbir ekran bunu söylemiyor». Bu metin gri, eksiklerin listesi normal renkte, rakam turuncu ya da yeşil: üçü birbirinden ayırt edilebiliyor.",
            "Kartın sağ üstündeki «Düzelt» o eksiğin giderileceği ekrana götürüyor. 3E'nin kendi yetki belgeleri ofis panelinden dosyalandığı için o kartta düğme yok — eksik yine yazıyor.",
            "⚠ Bugünkü canlı durum: bildirim metinleri 0/9. 183 e-postanın neden gitmediğinin cevabı bu karttır."
          ]
        },
        "altyapi": {
          "changed": [
            "Bu panel bir hata günlüğü değil: yalnız bir yöneticinin oturup düzeltebileceği eksikler listeleniyor. Günlükler tam da içindekilerin çoğu için yapılacak bir şey olmadığı için okunmuyor."
          ]
        }
      }
    },
    {
      "title": "Fiyat listesi oluşturulamıyordu; matristeki yüzdeler tutarsızdı",
      "tickets": [
        "EGT-131",
        "EGT-132"
      ],
      "changes": {
        "backoffice": {
          "fixed": [
            "Aynı türden ikinci bir fiyat listesi oluşturmak hep hata veriyordu: form sürüm numarasını hiç sormuyor, kolon varsayılan olarak 1 yazıyor ve ilk listeyle çakışıyordu. Ekran «Sayfa yüklenirken hata oluştu» diyordu, sebebini söylemiyordu. Artık yeni liste o türün bir sonraki sürümü olarak numaralanıyor.",
            "Fiyat matrisinde elle girilmemiş hücreler artık grubun BUGÜNKÜ yüzdesini gösteriyor. Eskiden tutar kaydedildiği an hesaplanıp saklanıyordu; oran sonradan değiştirilince sayı yerinde kalıyor, sütun başlığı yeni oranı yazıyordu — tablo kendi açıklamasıyla çelişiyordu (başlık −%5 derken tutarlar %15 indirimliydi).",
            "⚠ Yayınlanmış liste değişmiyor: o rakamlar teklifleri fiyatladı ve teklif hangi sürümle fiyatlandığını kaydediyor. Sonradan değişen bir sayı, gönderilmiş bir teklifi açıklanamaz hâle getirirdi. Yalnız taslak listeler bugünkü oranı takip eder.",
            "⚠ Elle yazılmış hücre de değişmiyor: o birinin kararıdır, yüzde onu ezmez."
          ]
        }
      }
    },
    {
      "title": "İşlem ve erişim günlüğü artık süzülebilen bir tablo",
      "tickets": [
        "EGT-133"
      ],
      "changes": {
        "backoffice": {
          "fixed": [
            "İki günlük ekranı da en yeni 200 kaydı alt alta basıp duruyordu: 201. satıra ulaşmanın yolu yoktu, listeyi daraltmanın yolu da yoktu. Artık gerçek bir tablo — sayfalama, sayfa başına kayıt sayısı, zamana göre sıralama.",
            "Süzgeçler geldi: tarih aralığı (başlangıç/bitiş), aktör (ofis · backoffice · müşteri · sistem), firma numarası, işlem günlüğünde işlem adı (örn. quote.approved), erişim günlüğünde veri sınıfı (örn. national_id).",
            "⚠ «Bitiş» tarihi seçilen günün SONUNU kapsıyor. Aksi hâlde «13.08'e kadar» demek 13 Ağustos'ta olan hiçbir şeyi göstermezdi ve süzen kişi o günü sakin sanırdı.",
            "Değerler artık okunabilir: «App\\Models\\Quote» yerine «Teklif #5», «backoffice_user» yerine renkli «Backoffice kullanıcısı» rozeti, ISO tarih yerine «13.08.2026 12:01:22». Aktör rozeti alana göre renkleniyor — göz «bu satır müşteri mi» sorusunu tarıyor.",
            "Erişim günlüğünde «Bağlam» sütunu JSON'u satır satır parçalayıp «10,» gibi anlamsız bir değer yazıyordu; artık kaydın tamamı tek metin olarak, uzunu kısaltılıp üzerine gelince tamamı görünüyor.",
            "İşlem günlüğünde IP adresi sütunu eklendi ama varsayılan olarak kapalı: soruşturmada gerekiyor, diğer günler gürültü."
          ],
          "changed": [
            "⚠ Süzgeçler kendi sorgularını KURMUYOR. İki tablo da denetim akışı üzerinden okuyor — çapraz firma kapsamının açılıp kapandığı ve okumanın erişim günlüğüne yazıldığı tek yer orası. Kendi sorgusunu kuran bir süzgeç ikinci bir okuma yolu olurdu ve erişim günlüğü ondan habersiz kalırdı.",
            "Sayfalama artık veritabanında yapılıyor; erişim kaydına yazılan sayı da o sayfada gerçekten görülen satır sayısı. Toplamı yazmak, yirmi beş kayıt okuyan bir yöneticiyi on bin kayıt okumuş gibi göstermek olurdu."
          ]
        }
      }
    },
    {
      "title": "Fiyat listesi sürüm numarası tek yerden veriliyor",
      "tickets": [
        "OPS-11"
      ],
      "changes": {
        "backoffice": {
          "fixed": [
            "Aynı sürüm çakışması hatası bu ay ikinci kez canlıda görüldü. Sebep aynıydı ama yeri farklıydı: sürüm numarası hem «yeni liste oluştur» ekranında hem «yeni sürüm aç» eyleminde ayrı ayrı hesaplanıyordu. Biri düzeltiliyor, diğeri unutuluyordu. Artık numarayı tek bir yer veriyor ve iki ekran da oraya soruyor.",
            "İki yönetici aynı anda aynı türde liste açarsa da çakışma olmuyor: numara verilirken o tür kilitleniyor, ikinci kişi bekleyip bir sonraki numarayı alıyor. Önceki koruma yalnız mevcut satırları kilitliyordu, dolayısıyla bir türün İLK listesinde — kilitlenecek satır olmadığı için — hiç çalışmıyordu."
          ]
        }
      }
    },
    {
      "title": "Bildirim metni yazarken hangi değişkenleri kullanabileceğiniz ekranda yazıyor",
      "tickets": [
        "EGT-122"
      ],
      "changes": {
        "backoffice": {
          "added": [
            "Bildirim şablonu ekranında olayı seçince, metin kutusunun hemen üstünde o bildirimde kullanabileceğiniz değişkenler listeleniyor — örneğin eğitim hatırlatması için «{{ training }} {{ code }} {{ starts_on }} {{ address }} {{ instructor }}». Metne olduğu gibi yazarsınız, gönderim anında gerçek değere dönüşür.",
            "⚠ Liste olaya göre değişir: teklifte başlangıç tarihi yoktur, eğitimde tutar yoktur.",
            "⚠ Tanımadığı bir ad yazarsanız alıcıya AYNEN o şekilde gider, silinmez. Bilinçli: boş bırakmak «lütfen . tarihine kadar yanıtlayın» gibi bir mailin bir yıl boyunca gitmesi demekti; görünen bir yazım hatası ise bir dakikada düzeltilir."
          ],
          "fixed": [
            "Bugüne kadar bu değişkenlerin ne olduğunu öğrenmenin hiçbir yolu yoktu — tek kayıt kodun içindeydi. Metni yazan kişinin doğru adı bilmesi şansa kalmıştı."
          ]
        },
        "altyapi": {
          "fixed": [
            "Bildirimlerdeki tarihler artık «13.08.2026» diye yazılıyor. Önce depolama biçimiyle geçiyordu ve müşteriye giden metinde «2026-08-13» görünüyordu; metni yazan kişinin bunu düzeltmesi mümkün değildi, biçim onun elinde değil.",
            "Değişken adları tekilleşti: referans kodu için dört (code, reference_code, invoice, certificate_no), eğitimin adı için iki (training, definition), kalan gün için iki ad (days, days_left) kullanılıyordu. Her biri yazıldığı yerde makuldü; beşinci şablonu yazan kişiden hangisinin nerede geçerli olduğunu hatırlaması istenemezdi.",
            "Firma adı artık her bildirimde kullanılabiliyor: metne «{{ customer }}» yazmak yetiyor. Adı okumak firmanın kendi kapsamını gerektiriyor ve bildirim tam da o kapsam kapandıktan sonra doğuyor — bu yüzden adı, bildirimi dağıtan katman çözüyor; zaten konuyu okumak için o kapsamı açıyor. Gönderen tarafın bir şey hatırlaması gerekmiyor.",
            "Sertifika süresi uyarısı kişinin adını ve eğitimin adını da taşıyor."
          ]
        }
      }
    },
    {
      "title": "İş bildirimleri artık 3E'nin kendi mail tasarımıyla gidiyor",
      "tickets": [
        "EGT-122"
      ],
      "changes": {
        "altyapi": {
          "fixed": [
            "Teklif, fatura, eğitim, sertifika — kısacası sistemin gönderdiği bütün iş bildirimleri Laravel'in hazır mail şablonuyla çıkıyordu: Türkçe metnin etrafında İngilizce bir çerçeve ve altta İngilizce bir telif satırı. Tasarımcının mail kiti Temmuz'da kurulmuş ama yalnız üç kimlik mailine (davet, giriş bağlantısı, şifre sıfırlama) bağlanmıştı.",
            "⚠ Bunun bugüne kadar görülmemiş olmasının sebebi, hiçbir bildirimin metninin yazılmamış olmasıydı: 183 mail metin yokluğundan atlandı, dolayısıyla düzeltilmemiş tasarımı kimse görmedi. İlk metin yayınlandığı an çıkacaktı.",
            "Artık her bildirim maili aynı zarfın içinde: 600 piksel tek kolon, üstte marka, beyaz kart, referans kodu rozeti, tek bir «Panelde aç» düğmesi ve altında düğmenin düz bağlantısı, en altta bu mesajı neden aldığınızı söyleyen satır. Her mailin düz metin kopyası da var.",
            "«Panelde aç» düğmesi okuyanın KENDİ paneline gidiyor — müşteri portala, ofis çalışanı ve eğitmen ofis paneline, katılımcı kendi sayfasına. Bağlantıyı olaydan değil alıcıdan seçiyor: aynı bildirim hem satışçıya hem müşteriye gidebiliyor ve olaya göre seçilen bir adres birini açamayacağı bir kapıya götürürdü.",
            "Metnin içine yapıştırılan HTML artık kaçırılıyor; bir kelime işlemciden kopyalanan biçimlendirme müşterinin mailinde etiket olarak görünmüyor."
          ]
        }
      }
    },
    {
      "title": "Sessiz duran on beş bildirim artık gerçekten doğuyor",
      "tickets": [
        "EGT-122"
      ],
      "changes": {
        "musteri": {
          "added": [
            "Talebiniz reddedilirse sebebiyle birlikte haber veriliyor. Eskiden talep öylece durur, açan kişi panele bakıp fark ederdi.",
            "Bir eğitim planlandığında firmanıza haber gidiyor.",
            "Personeliniz bir eğitim listesine eklendiğinde kendisine haber gidiyor — önce ilk duyduğu şey bir gün önceki hatırlatmaydı.",
            "Sertifika kaydedildiğinde kişiye haber gidiyor. Katılmanın bütün sebebi o belgeydi ve öğrenmenin tek yolu bakmaktı.",
            "İçerik paketi tanımlandığında ve süresi dolmaya yaklaştığında haber veriliyor. Paket sessizce sona eriyordu; yenileyecek olan da kaçırarak öğreniyordu."
          ]
        },
        "satis": {
          "added": [
            "Müşteri teklifte revizyon isterse satışçıya haber gidiyor. Sebep teklife yazılıyordu ama kimse söylemiyordu.",
            "Teklifin geçerlilik süresi dolmaya yaklaşınca satışçıya da haber gidiyor — eskiden yalnız müşteriye mail atılıyordu, kovalayacak kişi haberdar olmuyordu.",
            "İndirim limiti onayı sonuçlandığında isteyen satışçıya haber gidiyor. İstek bildiriliyordu, cevabı bildirilmiyordu; teklifini gönderemeyen kişi durumu kontrol ederek öğreniyordu."
          ]
        },
        "egitmen": {
          "added": [
            "Eğitim size atandığında haber gidiyor. Teklif duyuruluyordu, cevabı duyurulmuyordu: kabul eden kişi işi aldığını takvime bakarak öğreniyordu.",
            "Atandığınız eğitimin tarihi ya da yeri değişip yeniden onayınız istendiğinde haber gidiyor. Sebep zaten kaydediliyordu ki boş kâğıda imza atmayasınız — ama imzalanacak bir şey olduğunu kimse söylemiyordu.",
            "Masraf talebiniz onaylandığında ya da reddedildiğinde haber gidiyor; reddedilmişse sebebiyle birlikte.",
            "Ödemeniz kaydedildiğinde haber gidiyor."
          ]
        },
        "operasyon": {
          "added": [
            "Bir görev üzerinize açıldığında haber gidiyor; görev listesi tek duyuru yeriydi.",
            "Onay bekleyen bir iş için hatırlatma yapıldığında yöneticiye haber gidiyor."
          ]
        },
        "altyapi": {
          "changed": [
            "⚠ Bunların hiçbiri kendiliğinden gönderilmeye başlamaz. Bir bildirimin gitmesi için backoffice'te o olaya bir kural tanımlı ve açık olmalı; kural yoksa hiçbir alıcı çözülmez ve hiçbir şey gönderilmez. Bu iş yalnızca ALTYAPIYI ve metinleri hazırlıyor — açma kararı yöneticinin.",
            "İçerik paketi süre uyarısı için yeni bir günlük tarama eklendi; diğer taramalarla aynı saatte koşuyor."
          ]
        }
      }
    },
    {
      "title": "Bildirim metinleri okuyan kişiye adıyla hitap edebiliyor",
      "tickets": [
        "EGT-122"
      ],
      "changes": {
        "backoffice": {
          "added": [
            "Metin yazarken artık «{{ recipient }}» kullanılabiliyor: mesajı OKUYAN kişinin adı. Her bildirimde var. Örnek: «Merhaba {{ recipient }}, firmanıza ({{ customer }}) ait {{ training }} eğitimine kaydınız alınmıştır.»",
            "⚠ «{{ person }}» bundan farklı: mesajın HAKKINDA olduğu personel. İkisi çoğu zaman aynı kişi değildir — sertifika süresi uyarısı çok kere satışçıya gider, okuyan satışçıdır ama sertifika müşterinin personelinindir. Tek bir kelimeyle ikisini birden anlatmak, satışçıya başka birinin adıyla «Merhaba» diyen bir mail demekti."
          ]
        }
      }
    },
    {
      "title": "Bütün bildirimlerin metni yazıldı — 65 metin",
      "tickets": [
        "EGT-122"
      ],
      "changes": {
        "backoffice": {
          "added": [
            "33 bildirim olayının hepsi için başlangıç metni yazıldı ve sisteme kondu: 32 e-posta metni, 33 uygulama içi metin. Bildirim şablonları ekranında hepsi yayınlanmış olarak duruyor; beğenmediğinizi düzenlersiniz, düzenlemek yeni bir sürüm açar ve eski metin olduğu gibi kalır.",
            "⚠ HİÇBİRİ kendiliğinden gönderilmeye başlamaz. Bir bildirimin gitmesi için o olaya ait bildirim KURALININ tanımlı ve açık olması gerekir. Metinlerin hazır olması yalnız şu demek: bir olayı açmak artık tek bir karar, karar artı bir öğleden sonralık yazı işi değil.",
            "⚠ Yeni kurulumda metinler kendiliğinden gelir. Var olan bir metnin üzerine ASLA yazılmaz — taslak hâlindeki yarım bir düzeltme bile korunur; «varsayılana döndürmek» birinin yazdığını sessizce silmenin en kolay yoludur."
          ],
          "fixed": [
            "Panodaki «Bildirim metinleri 0/9» kaydı bu metinlerle birlikte kapanır: 183 e-postanın gitmemesinin sebebi tam olarak bu metinlerin yokluğuydu."
          ]
        },
        "altyapi": {
          "added": [
            "Metinlerin yalnız kendi olayının taşıdığı değişkenleri kullandığı testle doğrulanıyor. Sebebi görünür bir arıza: tanımadığı bir yer tutucu silinmez, alıcıya AYNEN gider — yani bir yazım hatası derlemeyi kırmaz, müşteriye bozuk görünen bir mail gönderir."
          ]
        }
      }
    }
  ]
}