New World Houses: çok dilli emlak platformu ve veri kurtarma
New World Houses, yabancı yatırımcıya Türkiye'de mülk satışı ve vatandaşlık süreçleri konusunda danışmanlık veren İstanbul merkezli bir gayrimenkul şirketidir. Yeni platform uçtan uca geliştirildi: ilan modeli, arama ve filtre kurgusu, harita, çok dilli içerik yapısı, yönetim paneli ve sunucu kurulumu. İşin en zor kısmı geliştirme değil, elde kalan veriydi — eski siteden gelen dışa aktarımda fotoğraflar ilanlarla ilişkisiz bir klasörde duruyordu ve İngilizce metinler hiç yoktu.
Devraldığımız durum
- Eski siteden gelen dışa aktarım, ilan verisini içeriyordu ama fotoğraflar düz bir klasördeydi: hangi fotoğrafın hangi ilana ait olduğu bilgisi yoktu.
- Dışa aktarımda İngilizce metinler yer almıyordu; olduğu gibi yüklense site tek dilli ve görselsiz kalacaktı.
- Hedef sunucuda halihazırda on üç site barınıyordu; yeni kurulumun komşu servisleri riske atmaması gerekiyordu.
- Devralınan kod tabanında site ayarları paneli kaydediyor ama hiçbir sayfada okunmuyordu; site haritası derleme anında üretildiği için içinde tek bir ilan bile yoktu.
Hedefimiz
- Görsel–ilan bağını ve eksik dildeki metinleri, elde ne varsa onunla geri kurmak.
- Yabancı alıcının aradığı gibi arayabileceği bir vitrin kurmak: çoklu filtre, harita ve liste görünümü.
- Dört dili (TR, EN, RU, AR) tek içerik yapısında yönetilebilir hale getirmek; Arapça için sağdan sola yerleşim.
- Arama motorlarında görünürlüğü sıfırdan kurmak: gerçek sonuç döndüren açılış sayfaları ve dinamik site haritası.
- Fotoğrafları, orijinal dosyalara hiç dokunmadan markalamak.
Veri kurtarma: kopan bağın geri kurulması
- Eski sitenin site haritasından ilan adresleri toplandı; ilan kodu adreste karakter karakter kodlanmış olduğu için önce bu kodlama çözüldü.
- Her ilanın Türkçe ve İngilizce sayfası tek sırada indirildi; site eşzamanlı isteklerde başka ilanın sayfasını döndürdüğü için her yanıt kendi ilan kimliğiyle doğrulandı.
- Görsel eşleme algısal karşılaştırmayla yapıldı: galerideki her fotoğrafın küçük hâli, elimizdeki dosyaların aynı boyuta indirilmiş hâliyle karşılaştırıldı.
- En yakın eşleşme ile ikinci sıradaki aday arasında yüz kattan fazla fark çıktı; eşleşmenin tesadüf olmadığı böyle doğrulandı.
- Doğrulama örnekleminde, önceki aktarımla ortak 87 ilanın 84'ünde dosya listesi ve sırası birebir tuttu.
- Sonuçta 259 ilan ve 4.258 fotoğraf, İngilizce metinleriyle birlikte geri kazanıldı.
İlan modeli ve yönetim paneli
- Türkiye'deki emlak alışkanlığına uygun detay alanları kuruldu: oda sayısı, brüt/net alan, kat bilgisi, ısıtma, aidat, tapu durumu, krediye uygunluk, cephe ve beş grupta 62 özellik.
- Rozet sistemi serbest metinden çıkarılıp ayarlardan yönetilen bir listeye bağlandı; her rozetin aşaması var ve proje sınıflandırması bunun üzerinden yürüyor.
- Proje ilanları için fiyat aralığı, daire tipi listesi ve teslim tarihi alanları eklendi; bu alanlar yalnızca ilgili rozet seçiliyken forma geliyor, rozet değişince temizleniyor.
- 81 il ve 973 ilçe için ek paket kullanılmadan aranabilir bir seçici yazıldı; Türkçe normalleştirme sayesinde “izmir” yazımı da doğru sonucu buluyor.
- Fotoğraf yönetimi çoklu yükleme, sürükle-bırak sıralama ve toplu işlem tablosuyla kuruldu.
- Talep (lead) yönetimi, dışa aktarım ve öne çıkan ilan işaretleme panele eklendi.
Arama, filtre ve harita
- Sol sütunda kalıcı filtre paneli: çoklu seçimli kategorik filtreler, aralık kutuları ve özellik seçimi.
- Hiçbir ilanın karşılamadığı filtre seçeneği hiç çizilmiyor; adreste duran bir değer karşılıksız kalsa bile seçenek korunuyor, böylece paylaşılan bağlantı okunabilir kalıyor.
- Liste ve harita görünümü arasında geçiş; kart üzerine gelindiğinde haritadaki pin, pin üzerine gelindiğinde karttaki ilan vurgulanıyor.
- Harita için ücretsiz ve ticari kullanıma açık karo sağlayıcıları tek tek denendi. Bir sağlayıcının karoları geçerli görüntü olarak dönüyor ama üzerinde anahtar uyarısı basılı geliyordu; bu ancak karo görüntüsü açılarak fark edildi.
- Sonuçta yol haritası vektör karolarla, uydu görünümü ve ilk açılış raster katmanla kuruldu: vektör stil yüklenene kadar raster duruyor, hiçbir anda boş pano görünmüyor.
Çok dillilik ve içerik
- Dört dil tek çeviri yapısında toplandı; dil başına 474 anahtar.
- Arapça için sağdan sola yerleşim, yalnızca yazı yönü değil bileşen hizalamaları düzeyinde ele alındı.
- İlan metinleri dile göre ayrı tutuluyor; panelde hangi dilin eksik olduğu görünür durumda.
- Site ayarları (logo, favicon, paylaşım görseli, iletişim bilgileri, sosyal hesaplar, SEO metinleri) gerçekten koda bağlandı — devralınan durumda panel kaydediyor ama hiçbir sayfa okumuyordu.
SEO altyapısı
- Site haritası ve robots.txt derleme anından çalışma anına taşındı: adresler artık her istekte güncel katalogdan üretiliyor, yayın anında 9 olan adres sayısı 265'e çıktı ve yeni ilanlar kendiliğinden ekleniyor.
- Panelden yönetilen açılış sayfaları kuruldu; filtre kaynağı doğrudan listeleme sayfasının sorgu dizesi, yani panelde üretilen sorgu vitrinde birebir aynı sonucu veriyor.
- Dokuz açılış sayfası yayına alındı (örneğin İstanbul satılık villa, vatandaşlığa uygun mülkler, belirli bütçe altındaki mülkler); her biri gerçek sonuç döndürüyor, metinleri elle yazıldı.
- Alt bilgideki sonuçsuz bölge bağlantıları bu sayfalarla değiştirildi.
- Başlık ve açıklama metinleri dört dilde panelden yönetiliyor; ölçüm ve doğrulama kodları da aynı yerden veriliyor.
Fotoğraf filigranı
- Filigranlı kopyalar, orijinallerle aynı yol yapısına sahip ayrı bir dizinde üretiliyor; orijinal dosyalara hiç dokunulmuyor.
- Sunucu önce filigranlı kopyaya bakıyor, yoksa orijinale düşüyor; filigranı kapatmak tek satırlık bir ayar değişikliği.
- Zamanlanmış bir iş yalnızca yeni ve değişmiş dosyaları üretiyor, kaynağı silinenleri temizliyor; panelden yüklenen yeni fotoğraflar otomatik kapsanıyor.
- Markanın koyu logosu karanlık fotoğraflarda kaybolduğu için logo beyaz silüete çevrildi ve altına kaydırılmış koyu bir kopya konuldu; açık ve koyu zeminde de okunuyor.
- Dört farklı yerleşim ve üç opaklık seviyesi karşılaştırmalı bir sayfada sunulup seçim müşteriyle birlikte yapıldı.
- İlk sürüm fotoğraf başına yaklaşık altı saniyeydi; filigran katmanı her görsel için yeniden üretiliyordu. Katman bir kez yüksek çözünürlükte üretilip görsel başına yalnızca yeniden ölçeklenince süre bir saniyenin altına indi — 3.849 görsel 64 dakikada, hatasız tamamlandı.
- Toplu işlem, aynı sunucudaki diğer siteleri etkilememesi için sınırlı işlemci payıyla çalıştırıldı.
Teşhis gerektiren hatalar
- Mobilde geri tuşunda boş sayfa: dinamik sayfaların yükleme iskeleti olmadığı için ön yükleme isteği boş bir ağaç alıyordu. Teşhis tekrarlanabilir hale getirildi — bozuk sayfanın ön yükleme yanıtı birkaç yüz bayt, sağlamınki onlarca kilobayt.
- Bulunamayan adresler 200 dönüyordu: yanıt akış halinde gönderildiği için durum kodu gövdeden üretilemiyordu; çözüm, bulunamadı gövdesini doğrudan basmak ve arama motorlarına kapatmak oldu.
- Özellik filtresi baştan beri hiç çalışmıyormuş: veritabanı katmanı dizi parametresini kayıt olarak açıyor, karşılaştırma reddedilince sorgu düşüyordu. Özellik başına ayrı koşula çevrildi ve sonuçlar ham sorguyla karşılaştırılarak doğrulandı.
- Tam ekran galeri sabit başlığın altında kalıyordu: sorun katman sırası değil, sayfa geçiş animasyonunun yarattığı yığılma bağlamıydı; galeri gövdeye taşınarak çözüldü.
- Galeride ilk açılışta fotoğraflar görünmüyordu: yükleme parıltısı, sunucudan erken gelen görsellerde hiç kapanmıyordu. Çözüm, davranışı betikten tamamen çıkarmak oldu.
- Gecelik yedekler diski dolduruyordu: değişmeyen fotoğraf arşivi her gece yeniden alınıyordu, 4,4 GB gereksiz veri temizlendi ve saklama düzeni gözden geçirildi.
Yayın ve dayanıklılık
- Uygulama ve veritabanı kapsayıcılarla kuruldu; sunucuya özgü tüm sapmalar tek bir yerel ayar dosyasında toplandı, böylece otomatik dağıtımla çakışmıyor.
- Fotoğraflar uygulama sürecine hiç uğramadan doğrudan diskten servis ediliyor.
- TLS sertifikaları ve otomatik yenileme kuruldu; dağıtım depoya yapılan gönderimle tetikleniyor.
- Gecelik yedekleme veritabanını ve görselleri kapsıyor; filigran aynası yedeklerin dışında tutularak 623 MB'lık tekrar önlendi.
- Hareketli geçişler azaltılmış hareket tercihine saygılı; betik hiç yüklenmezse içerik görünür kalıyor.
Sonuç
Eksik veriyle gelen bir dışa aktarımdan 259 ilan ve 4.258 fotoğraf, İngilizce metinleriyle birlikte geri kazanıldı ve dört dilli bir platform olarak yayına alındı. Katalog panelden büyütülüyor; site haritası, açılış sayfaları ve filtre seçenekleri güncel veriden üretildiği için yeni ilanlar elle bir işlem gerektirmeden vitrine ve arama motorlarına giriyor. Fotoğrafların tamamı orijinallerine dokunulmadan markalandı; yeni yüklenenler otomatik kapsanıyor. Site şu anda hazırlık adresinde yayında, müşteri onayının ardından kendi alan adına geçecek.



