YAPILAN İŞLEMLER GÜNLÜĞÜ Tarih: 30.08.2026 [BAŞLADI] Projedeki kritik iyileştirmelerin ve hata düzeltmelerinin uygulanma süreci başlatıldı. ----------------------------------------------------------------------------------------- [İŞLEM] 1. testyayin/application/controllers/CheckOutPay.php dosyasındaki saveStep1Address metodunda veritabanı kilitlenmelerini önlemek amacıyla cURL (harici ağ) çağrıları transaction bloğunun dışına çıkarıldı. Transaction sadece veritabanı yazma aşamasında (update) çalışacak şekilde optimize edildi. [İŞLEM] 2. worker/main.py dosyasında ThreadPoolExecutor entegre edilerek kontrolsüz thread üretimi engellendi ve maksimum worker limiti 10 olarak belirlendi. [İŞLEM] 3. worker/main.py üzerinde bir entegrasyon hata aldığında ana teklif (offers) kaydının kilitlenmesini engellemek için, checkAndLockOffer sayım kuralı "başarılı" yerine "işlemi tamamlanan" (responseJson IS NOT NULL) olarak güncellendi. Hata durumlarında status = 'failed' güncellenmesi sağlandı. [İŞLEM] 4. sys/application/models/Offers_model.php dosyasındaki get_offer_items metodunda yer alan "status != 'pending'" kısıtlaması kaldırıldı. Böylece yöneticiler, müşterinin satın almadığı (sepette/teklif aşamasında bıraktığı) fiyat tekliflerini de yönetim panelinde görebilecek. [İŞLEM] 5. sys/application/libraries/Personlogs.php kütüphanesindeki logLimit (yönetici işlem log limiti) değeri 20'den 1000'e çıkarıldı. [İŞLEM] 6. sys/application/libraries/Syslogs.php kütüphanesindeki maxLogCount (sistem log limiti) değeri 250'den 5000'e çıkarıldı. [İŞLEM] 7. Demir Sağlık web servis dokümanında yer alıp projede eksik olan aşağıdaki API metotları testyayin/application/libraries/Insurance/Providers/DemirHayatProvider.php entegrasyon sınıfına eklendi: - getProposalPdf() -> Teklif PDF çıktısını almak için GetProposalPdfUrl servisi - getCollectionReceiptPdf() -> Tahsilat makbuzu PDF'ini almak için GetCollectionReceiptPdf servisi - getCustomerIdentityInfo() -> KPS/Mernis doğrulama yapmak için GetCustomerIdentityInfo servisi - getPayByLink() -> Linkle Ödeme oluşturmak için GetPayByLink servisi - confirmPayByLink() -> Linkle ödeme sonucunu doğrulamak için ConfirmPayByLink servisi - createPolicyCreditCardEncrypted() -> Kart bilgilerini şifreli iletmek için CreatePolicyCreditCardEncrypted servisi - getInstitutionTypes() -> Kurum tiplerini listelemek için GetInstitutionTypes servisi - getNetworkTypes() -> Anlaşmalı network listesini almak için GetNetwokTypes servisi - getInstitutionNetwork() -> Anlaşmalı kurum hastanelerini filtrelemek için GetInstutionNetwork servisi [İŞLEM] 8. Python worker projesi için gerekli olan bağımlılık paketleri worker/requirements.txt dosyasına eklenerek tamamlandı. [İŞLEM] 9. Yönetim panelinde de bu yeni API servislerinin kullanılabilmesi için: - Entegrasyon kütüphanesi (Insurance klasörü) frontend'den sys/application/libraries/ dizinine kopyalandı. - sys/application/controllers/Offers.php içerisine `downloadProposalPdf` ve `downloadReceiptPdf` metotları eklendi. - sys/application/views/offers_view/detail/content.php detay ekranına "Teklif PDF İndir" ve "Tahsilat Makbuzu" butonları eklenerek yöneticilerin doğrudan servis üzerinden çıktıları indirebilmesi sağlandı. [İŞLEM] 10. Yönetim panelinde (sys) Acentenin manuel olarak teklif oluşturup adımları (Plan/Adres seçimi, Underwriting sağlık soruları beyanı ve Linkle Ödeme) tamamlayabileceği dinamik sihirbaz arayüzü ve entegrasyonu tamamlandı: - sys/application/helpers/global_helper.php dosyasında offers menüsüne "Manuel Poliçe Oluştur" alt menüsü bağlandı. - Ön yüzde kullanılan `OfferItemsModel`, `OfferItemUwAnswerModel`, `InsuranceServiceAreasModel` gibi veritabanı modelleri sys/application/models/ dizinine kopyalandı. - sys/application/controllers/Offers.php içerisine `createManualOffer`, `getDistrictsAjax`, `getPlansAjax`, `saveManualOfferAjax`, `checkoutManual`, `checkOfferStatusAjax`, `saveStep1AddressManual`, `saveStep2UwQuestionsManual` ve `generatePaymentLinkManual` metotları eklenerek asenkron Python kuyruğuyla entegre çalışan akış kodlandı. - sys/application/views/offers_view/create_manual/content.php altında Müşteri Bilgileri formu (Step 1) kodlandı. - sys/application/views/offers_view/checkout_manual/content.php altında asenkron AJAX polling ile worker sonucunu bekleyen, sonrasında Plan/Adres, dynamic Underwriting ve Ödeme Linki adımlarını sunan sihirbaz arayüzü kodlandı. - sys/application/views/offers_view/list/content.php listeleme ekranının sağ üst köşesine hızlı erişim için "Manuel Teklif Oluştur" butonu entegre edildi. [İŞLEM] 11. Asenkron sorgu polling işlemi (sayfa ilk yüklendiğinde anlık olarak insert edilen boş pending satırından ötürü) erkenden sonlanıyordu. Bu yarış durumunu (race condition) önlemek amacıyla: - `checkOfferStatusAjax` API'si sadece veritabanında `responseJson` hücresi dolu olduğunda (yani Python arka plan işlemi başarıyla veya hata ile bittiğinde) veri dönecek şekilde güncellendi. - `checkout_manual/content.php` arayüzündeki polling AJAX fonksiyonu, gelen yanıtı denetleyecek ve eğer durum `failed` ise Swal uyarısıyla entegrasyon hatasını yöneticiye gösterip süreci güvenli bir şekilde sonlandıracak şekilde güncellendi. [İŞLEM] 12. Yönetim panelinde (`sys/`) `InsuranceManager` kütüphanesinin Demir Hayat servisini çözebilmesi için gerekli olan `insuranceProviders` konfigürasyon eşlemesi `sys/application/config/config.php` dosyasına eklendi. [İŞLEM] 13. Sihirbazın Adım 1 ekranında (Plan seçimi dropdown'ı) plan fiyatlarının `undefined` yazması hatası düzeltildi; API çıktısına uygun olarak `plan.planPremium` değişkeni `plan.premium` ve `plan.currencyId` değerleriyle güncellendi. [İŞLEM] 14. Sihirbazın Adım 1 ekranında İl seçildiğinde "Undefined property: stdClass::$id" PHP uyarısı alınması ve ilçelerin yüklenmemesi hatası; `$c->id` yerine `$c->cityId`, `$c->title` yerine `$c->cityName` ve JS tarafında da ilçe eşleşmelerinin `d.districtId`/`d.districtName` olarak güncellenmesiyle tamamen düzeltildi. [İŞLEM] 15. Sağlık beyan soruları yanıtlanıp gönderildiğinde alınan "Sorular kaydedilemedi" API hatası; form verilerinde gönderilen "Evet" ve "Hayır" metinsel yanıtlarının, API standartlarına uygun olan kod harfleriyle ("E" ve "H") güncellenmesiyle tamamen giderildi. [İŞLEM] 16. Yarım kalmış manuel tekliflerin yönetim panelinden daha sonra tamamlanabilmesi için: - `Offers::index` listeleme metodunda her bir teklif için şifreli güvenli URL parametresi (`encryptId`) oluşturuldu. - `offers_view/list/content.php` listeleme tablosuna, durumu `completed` or `cancelled` olmayan tüm teklifler için **"Tamamla"** (`fa-magic` ikonu ile) butonu eklenerek yöneticinin yarım kalmış sihirbaz ekranına anında geri dönebilmesi sağlandı. [İŞLEM] 17. Tüm teklif listeleme ekranı (`list/content.php`), müşteri bilgileri formu (`create_manual/content.php`) ve sihirbaz tamamlama arayüzü (`checkout_manual/content.php`) görsel olarak tamamen yenilendi: - Hiçbir arayüz dosyasında inline CSS kullanılmadı; tüm özelleştirilmiş yeni modern sınıflar `sys/assets/css/siyah.css` dosyasına eklendi. - Teklif listesinde modern card yapısı, yumuşatılmış pastel durum rozetleri (badge) ve gölgeli tablo tasarımı uygulandı. - Manuel teklif oluşturma formunda premium input alanları ve form-group yapıları oluşturuldu. - Teklif tamamlama sihirbazına (checkout) interaktif adım takip çizgisi (premium stepper), dinamik ilerleme yüzdeleri, Evet/Hayır butonları için modern geçişli toggle kutucukları ve modern fiyat etiket alanı eklendi. [İŞLEM] 18. Kullanıcının talebi üzerine, Sağlık Beyanı Soruları adımında "Evet" seçildiğinde yeşil, "Hayır" seçildiğinde kırmızı olarak değişen buton renkleri; Evet için Yeşil (`#1b7a37`), Hayır için Kırmızı (`#c82333`) olacak şekilde `sys/assets/css/siyah.css` dosyası üzerinden tamamen tersine çevrildi. [İŞLEM] 19. Teklif Detay Sayfası (`detail/content.php`) baştan aşağı modernize edildi: - Inline CSS kullanılmadan, `siyah.css` üzerindeki yeni modern sınıflar uygulandı. - Müşteri Özeti tablosu ve kart yapısı premium seviyeye çekildi. - Poliçe ürün detay kartlarında renk geçişli modern başlıklar (`bg-info-grad`), modern badge ve düğme tasarımları kullanıldı. - Risk değerlendirme (underwriting) ve ödeme geçmişi tabloları gölgeli modern tablolara dönüştürülerek, satır hover efektleri ve pastel başarım etiketleri ile zenginleştirildi. Underwriting cevaplarının E/H değerleri de algılanarak yeşil/kırmızı rozetlerle sunuldu. [İŞLEM] 20. Teklif Detay sayfasında (`Offers/detail/{id}`) yer alan "Sihirbaza Git" butonu tıklandığında oluşan "Undefined property: stdClass::$encryptId" hatası; detayı yükleyen `Offers::detail` metoduna şifrelenmiş URL parametresi (`encryptId`) eklenerek tamamen çözüldü. [İŞLEM] 21. Kullanıcının isteği üzerine 5 farklı "Hesaplama Aracı" için dinamik alt sayfalar ve formlar oluşturuldu: - `application/config/routes.php` dosyasına `kasko-deger-hesaplama`, `otv-kdv-hesaplama`, `mtv-hesaplama`, `yakit-tuketimi-hesaplama` ve `arac-deger-kaybi-hesaplama` yönlendirmeleri eklendi. - `application/controllers/Sayfalar.php` kontrolörü içerisindeki `hesaplamaDetay` metodu parametreye bağlı çalışacak, her araca özel başlık belirleyecek ve bu verileri view'a taşıyacak şekilde güncellendi. - `application/views/sayfalar/hesaplamaDetay/content.php` arayüzü tamamen dinamikleştirildi. Hızlı erişim menüsü güncel sayfaya göre aktiflik durumunu renklendirecek şekilde geliştirildi. - Her bir araç için özel form girişleri (Kasko Değeri, ÖTV/KDV, MTV, Yakıt ve Değer Kaybı) ve bu formların verilerini anlık hesaplayan, animasyonlu bir sonuç kutusuyla ekranda gösteren modern jQuery hesaplama mantıkları eklendi. [İŞLEM] 22. Hızlı Erişim sidebar menüsü, kullanıcının kaydırma hareketini takip edecek şekilde yüzen (position: sticky) konuma getirildi. Menü buton boyutları küçültüldü (`height: 42px`, `padding: 12px`), yazı tipi boyutu daha okunaklı ve kibar (`font-size: 0.82rem`, `font-weight: 500`) olacak şekilde optimize edildi. [İŞLEM] 23. Üst menüde (Header) "Hesaplama Araçları" başlığı altındaki static `hesaplama-detay` yönlendirmesi; dinamik rotalar olan `kasko-deger-hesaplama`, `otv-kdv-hesaplama`, `mtv-hesaplama`, `yakit-tuketimi-hesaplama` ve `arac-deger-kaybi-hesaplama` URL yönlendirmeleriyle hem masaüstü hem de mobil menü yapısı için tamamen entegre edildi. [İŞLEM] 24. [YENİ SAYFA] Ana Hesaplama Araçları listeleme sayfası (/hesaplama) oluşturuldu: - `application/config/routes.php` dosyasına `$route['hesaplama'] = "Sayfalar/hesaplama";` rotası tanımlandı. - `application/controllers/Sayfalar.php` kontrolörüne `hesaplama` metodu eklendi. - `application/views/sayfalar/hesaplama/content.php` dosyası oluşturuldu. Sayfa içerisinde 5 hesaplayıcıyı modern kart tasarımları, gölgelendirmeler, hover yükselme animasyonları, özelleştirilmiş renk temalı ikon kutucukları ve "Detaylı Hesapla" butonları ile listeleyen premium bir listeleme arayüzü kodlandı. [TAMAMLANDI] Belirlenen tüm kritik hata gidermeleri, iyileştirme çalışmaları, dokümantasyonda eksik olan API metotlarının entegrasyonu ve yönetim paneli manuel teklif sihirbazı geliştirmeleri başarıyla tamamlandı. -----------------------------------------------------------------------------------------