Projeler ve Kat Planları için XML Akışı
1. Feed Amacı
XML feed, gayrimenkul projeleri ve tipik daire tipleri hakkında yapılandırılmış verileri aktarır. Amacı, alan sistemin proje kartlarını otomatik olarak oluşturup güncellemesini; fiyatları, durumları, galeri görsellerini, olanakları, ödeme planlarını, EOI bilgilerini ve geliştiricinin pazarlama promosyon materyallerini görüntülemesini sağlamaktır.
Feed, daire tiplerini toplu formda iletir: tek bir layout kaydı, tipik bir planı ve o tipte mevcut ünite sayısını tanımlar. Bu, belirli dairelerin, ofislerin veya arsaların listesi değildir.
- realty-feed: tüm XML feed’in kök kapsayıcısı. Ana ID: —
- offers: tek bir proje veya kompleks. Ana ID: complex-id
- layouts: proje içindeki tipik plan. Ana ID: id
- payment_plans: bir proje ödeme seçeneği. Ana ID: id
- eoi_item: bir EOI koşulu. Ana ID: —
- stock: geliştiriciden gelen pazarlama kampanyası, haber veya promosyon mesajı. Ana ID: —
1.1 XML Feed Nedir
XML feed, gayrimenkul projeleri ve tipik planlar hakkında veri içeren yapılandırılmış bir dosyadır. Açıklamalar, fotoğraflar, fiyatlar, adresler, durumlar, teknik özellikler, olanaklar ve bir emlak sitesinde veya katalogda mülkleri göstermek için gereken diğer verileri içerir.
Basitçe söylemek gerekirse, XML feed gayrimenkule ilişkin bir veri akışıdır; alan sistem bunu düzenli olarak indirir, okur ve mülk kartlarını otomatik olarak güncellemek için kullanır.
Alnair verileri sağlar. Web sitesi geliştirme, katalog geliştirme, CRM entegrasyonu ve içe aktarma mantığı müşteri veya müşterinin teknik ekibi tarafından yürütülür.
1.2 Ajansın İhtiyaçları
XML feed’i kullanmak için ajansın, XML’i düzenli olarak indirebilen, yapısını ayrıştırabilen ve sistemindeki verileri güncelleyebilen kendi teknik altyapısına ihtiyacı vardır.
- Web sitesi veya mülk kataloğu: feed’den gelen proje ve planların gösterileceği yer.
- Teknik ekip veya geliştirici: XML indirme, ayrıştırma ve içe aktarma kurulumu.
- XML ayrıştırıcı: XML yapısını okur ve iç veri modeline dönüştürür.
- İçe aktarma modülü: proje ve planların oluşturulması, güncellenmesi ve devre dışı bırakılması.
- Görev zamanlayıcı: cron veya scheduler gibi araçlarla planlı ve düzenli içe aktarma.
- Hata kaydı: bilinmeyen enum değerlerinin, boş alanların ve yükleme hatalarının izlenmesi.
1.3 Ajans XML Feed’i Nasıl Kullanır
Tipik işleyiş aşağıdaki gibidir:
- Ajans sistemi, XML’i kişisel bir web bağlantısından indirir.
- XML, диагностика ve yeniden işleme için ham bir anlık kopya olarak kaydedilir.
- Ayrıştırıcı, realty-feed, offers, layouts yapısını ve iç içe blokları okur.
- İçe aktarma modülü yeni proje ve planları oluşturur veya mevcut olanları günceller.
- Yeni feed’de artık bulunmayan nesneler pasif olarak işaretlenir.
- Ajans web sitesi güncel proje kartlarını, fiyatları, galerileri ve durumları gösterir.
Başlıca entegrasyon özellikleri:
- Otomatik güncellemeler: proje ve planlar manuel müdahale olmadan güncellenir.
- Mülk sayfası oluşturma: feed verileri proje ve plan kartları için kullanılır.
- Güncel fiyatlar ve durumlar: web sitesi planlı XML güncellemelerini alır.
- Filtreler ve arama: bölge, fiyat, mülk tipi, oda sayısı ve alan alanları filtreleme için kullanılabilir.
- Medya galerileri: proje fotoğrafları, tematik galeriler ve plan görselleri arayüzde gösterilebilir.
2. Genel XML Yapısı
<realty-feed>
<generation-date>2026-06-17T12:06:39+04:00</generation-date>
<offers>...</offers>
<offers>...</offers>
</realty-feed>
- realty-feed: nesne. Kök feed bloğu.
- generation-date: datetime. XML oluşturulma tarihi ve saati. Verinin güncelliğini kontrol etmek için kullanılır.
- offers: nesne[]. Proje veya kompleks listesi. Her offers bloğu proje verilerini ve planlarını içerir.
2.1 Feed Erişimi ve İndirme Sınırları
Feed, müşteriye kişisel bir web bağlantısı üzerinden sağlanır. Bağlantı müşteriye özeldir ve alan sistem tarafından XML’i otomatik indirmek için kullanılır.
Kişisel bağlantı, Alnair hesabındaki yöneticiye açıktır. Yönetici bu bağlantıyı içe aktarma kurulumü için müşterinin teknik ekibine iletebilir.
- Erişim türü: kişisel web bağlantısı. Müşteri için özel XML feed URL’si.
- Bağlantı nereden alınır: Alnair hesabı. Bağlantı müşteri yöneticisine açıktır.
- Feed güncelleme sıklığı: her 4 saatte bir. XML verileri Alnair tarafında 4 saatte bir güncellenir.
- Minimum indirme aralığı: saatte en fazla bir kez. Alan sistem feed’e saatte birden fazla erişmemelidir.
- Sınır aşıldı: erişim engelleme. İstekler fazla sık olursa feed erişimi geçici olarak engellenebilir.
Önerilen entegrasyon mantığı: cron veya scheduler ile planlı indirme yapılandırın, alınan son XML’i kaydedin ve web sitesinin her sayfa yüklemesinde feed’i istemeyin. En uygun çalışma modu, yeni verilerin yaklaşık her 4 saatte bir geldiğini dikkate alarak feed’i saatte birden fazla indirmemektir.
3. Proje: <offers>
offers, feed’in ana varlığıdır. Proje açıklaması, geliştirici, konum, inşaat ve satış durumu, fiyatlar, medya, olanaklar, ödeme planları, EOI, pazarlama promosyonları ve tipik planları içerir.
<offers>
<complex-id>5646</complex-id>
<type>project</type>
<logo>https://...</logo>
<photo>https://...</photo>
<title>...</title>
<description>...</description>
<price_on_request>1</price_on_request>
<status>...</status>
<construction_start_at>2025-01-01T00:00:00+04:00</construction_start_at>
<construction_progress>15</construction_progress>
<planned_completion_at>2027-12-31T00:00:00+04:00</planned_completion_at>
<predicted_completion_at>2027-12-31T00:00:00+04:00</predicted_completion_at>
<amenities>...</amenities>
<developer>...</developer>
<city>Dubai</city>
<address>...</address>
<latitude>25.000000</latitude>
<longitude>55.000000</longitude>
<districts>...</districts>
<album>...</album>
<albums>...</albums>
<constructions_count>1</constructions_count>
<for_sale_count>10</for_sale_count>
<price>...</price>
<br_prices>...</br_prices>
<updated_at>2026-06-17T10:53:20+04:00</updated_at>
<is_sold_out>0</is_sold_out>
<payment_plans>...</payment_plans>
<sales_status>...</sales_status>
<stocks>...</stocks>
<eoi>...</eoi>
<service_charge>...</service_charge>
<assignment>...</assignment>
<is_limited_publication>0</is_limited_publication>
<layouts>...</layouts>
</offers>
- complex-id: tamsayı. Alnair’deki benzersiz proje ID’si. upsert için dış proje ID’si olarak kullanın.
- type: enum. Üst seviye varlık türü: project veya compound. Ham değeri saklayın ve üst seviye proje olarak içe aktarın.
- logo: url. Proje logosu. Markalaşmada gösterin, kapak olarak kullanmayın.
- photo: url. Ana proje görseli / kapak. Kapak ve hero görseli olarak kullanın.
- title: yerelleştirilmiş nesne. Proje adı en/ru/ar olarak gelir. Arayüz diline göre gösterin.
- description: yerelleştirilmiş HTML. Proje açıklaması en/ru/ar olarak gelir. Güvenli şekilde render edin; HTML CDATA içindedir.
- price_on_request: 0/1. Fiyat gizleme bayrağı. 1 ise “Fiyat için iletişime geçin” gösterin.
- status: nesne. İnşaat durumu. sales_status ile karıştırmayın.
- construction_start_at: datetime. İnşaat başlangıç tarihi. Doluysa gösterin.
- construction_progress: decimal. İnşaat tamamlama yüzdesi. Yüzde olarak gösterin.
- planned_completion_at: datetime. Planlanan proje tamamlanma tarihi. Teslim tarihi olarak kullanın.
- predicted_completion_at: datetime. Tahmini tamamlanma tarihi. Güncellenmiş tamamlanma tarihi olarak kullanılabilir.
- amenities: nesne. Proje olanakları ve özellikleri. Anahtara göre eşleyin.
- developer: nesne. Proje geliştiricisi. Adı ve logoyu saklayın.
- city / address: string. Proje şehri ve adresi. Konum verisinde kullanın.
- latitude / longitude: decimal. Koordinatlar. Harita için kullanın.
- districts: nesne. Proje bölgeleri. Filtreler ve proje kartı için kullanın.
- album: nesne. Ana sınıflandırılmamış proje galerisi. Genel galeri olarak gösterin.
- albums: nesne. Tematik proje galerileri. Başlığa göre gruplayın.
- for_sale_count: tamsayı. Projedeki satışa açık ünite sayısı. Mevcutluk olarak gösterilebilir.
- price: nesne. Genel proje fiyat aralığı. price_on_request=1 ise gizleyin.
- br_prices: nesne[]. Yatak odası sayısına veya mülk kategorisine göre fiyatlar. Filtreler ve listeler için kullanın.
- updated_at: datetime. Proje güncelleme tarihi. Senkronizasyon için kullanın.
- is_sold_out: 0/1. Tükendi bayrağı. sales_status ile birlikte kullanın.
- payment_plans: nesne[]. Geliştiricinin sunduğu ödeme seçenekleri. Ödeme seçenekleri olarak gösterin.
- sales_status: yerelleştirilmiş nesne. Projenin satış durumu. Satış aşamasını belirler.
- stocks: nesne. Geliştiriciden gelen pazarlama kampanyaları ve promosyon mesajları. Promo blokları olarak gösterin.
- eoi: nesne. Expression of Interest. Yalnızca Presale (EOI) için gösterin.
- service_charge: nesne. Aidat / hizmet bedeli. Değer doluysa gösterin.
- assignment: decimal. Devir koşulu. Boşsa belirtilmemiş demektir.
- is_limited_publication: 0/1. Yayın kısıtı. 1 ise izin olmadan kamuya açık yayınlamayın.
- layouts: nesne[]. Projenin tipik planları. Projenin alt varlıkları olarak içe aktarın.
4. Yerelleştirilmiş Alanlar
Yerelleştirilmiş alanların yapısı aynıdır: İngilizce, Rusça ve Arapça değerler etiket içinde iletilir.
<title>
<en>Project Name</en>
<ru>Название проекта</ru>
<ar>اسم المشروع</ar>
</title>
- en: İngilizce değer. Önerilen yedek.
- ru: Rusça değer.
- ar: Arapça değer.
Yedek kuralı:
- Varsa arayüz dilini kullanın.
- Gerekli dil boşsa en kullanın.
- en boşsa ru kullanın.
- ru boşsa ar kullanın.
- Tüm değerler boşsa alanı göstermeyin.
5. Durumlar
5.1 İnşaat Durumu: <status>
İnşaat durumu, projenin fiziksel durumunu gösterir. Satış uygunluğunu göstermez.
<status>
<key>development_stage_progress</key>
<en>In Progress</en>
<ru>Строится</ru>
<ar>قيد الإنشاء</ar>
</status>
- Scheduled: proje planlanmıştır.
- In Progress: inşaat devam etmektedir.
- Ready: proje tamamlanmıştır.
- Stopped: inşaat durdurulmuştur.
5.2 Satış Durumu: <sales_status>
Satış durumu, projenin ticari aşamasını gösterir: duyuru, ön satış, lansman, aktif satış veya tükendi.
- Preliminary Info: erken proje bilgileri.
- Announcement: proje duyurulmuştur.
- Presale (EOI): EOI toplama süreci devam etmektedir.
- Launch: satış lansmanı.
- On Sale: proje satın almaya açıktır.
- Sold Out: proje tükenmiştir.
- Pending: durum güncelleme beklemektedir.
6. Geliştirici ve Konum
Bu bloklar, geliştirici markasını ve projenin coğrafi konumunu göstermek için gereklidir.
<developer>
<title>
<en>Developer Name</en>
<ru>Developer Name</ru>
<ar>Developer Name</ar>
</title>
<logo>https://...</logo>
</developer>
<city>Dubai</city>
<address>Project Address, Dubai</address>
<latitude>25.01809076</latitude>
<longitude>55.13354525</longitude>
<districts>
<district>Jumeirah Village Triangle (JVT)</district>
</districts>
- developer.title: yerelleştirilmiş nesne. Geliştirici adı.
- developer.logo: url. Geliştirici logosu.
- city: string. Şehir.
- address: string. Adres.
- latitude / longitude: decimal. Harita koordinatları.
- districts.district: string[]. Proje bölgeleri.
7. Fiyatlar
7.1 Proje Fiyatı: <price>
Proje düzeyindeki fiyat, projedeki mevcut tekliflerin genel fiyat aralığını gösterir.
<price>
<min>815462</min>
<max>2089780</max>
<min_usd>222009</min_usd>
<max_usd>568942</max_usd>
<currency>AED</currency>
</price>
- min: decimal. Minimum fiyat.
- max: decimal. Maksimum fiyat.
- min_usd: decimal. USD cinsinden minimum fiyat.
- max_usd: decimal. USD cinsinden maksimum fiyat.
- currency: enum. Ana para birimi, genellikle AED.
price_on_request = 1 ise, price dolu olsa bile tam fiyatlar kamuya açık olarak gösterilmez.
7.2 Kategoriye Göre Fiyatlar: <br_prices>
br_prices, fiyatları ve alanları yatak odası sayısına veya mülk tipine göre gruplar. Bu, filtreler ve kısa proje kartları için kullanışlıdır.
<br_prices>
<key>1</key>
<count>7</count>
<min_price>1070564</min_price>
<max_price>1289674</max_price>
<min_price_m2>17204</min_price_m2>
<max_price_m2>18483</max_price_m2>
<currency>AED</currency>
<min_area><m2>57.92</m2><ft2>623.45</ft2></min_area>
<max_area><m2>74.17</m2><ft2>798.36</ft2></max_area>
</br_prices>
- studio: stüdyo daireler.
- 1-6: yatak odası sayısı.
- villa: villalar.
- townhouse: townhouselar.
- n: geçerli değil / konut dışı kategori / diğer.
8. Medya
Feed’deki medya birkaç türe ayrılır. Bunlar amaçları dikkate alınmadan tek bir galeride birleştirilmemelidir: bir görsel proje kapağı, biri logo, biri promosyon görseli, diğeri ise kat planı olabilir.
- logo: offers.logo. Proje logosu. Proje markalamasında gösterin; kapak olarak kullanmayın.
- photo: offers.photo. Ana proje görseli / kapak. Kartta kapak görseli ve proje sayfasında hero görseli olarak kullanın.
- album.image: offers.album.image. Ana sınıflandırılmamış proje galerisi. Genel proje galerisinde gösterin.
- albums.album.images.image: offers.albums.album.images.image. Tematik proje galerisi. albums.album.title’a göre gruplayın.
- developer.logo: offers.developer.logo. Geliştirici logosu. Geliştirici bloğunda gösterin.
- stocks.stock.logo: offers.stocks.stock.logo. Pazarlama kampanyası görseli. Promosyon bloğunun içinde gösterin.
- layouts.album.image: offers.layouts.album.image. Belirli bir tipik planın galerisi. Plan seviyesinde gösterin.
- levels_photos.level_photo.image: offers.layouts.levels_photos.level_photo.image. Kata göre plan görseli. Kat planı olarak kullanın.
<photo>https://...</photo>
<album>
<image>https://...</image>
</album>
<albums>
<album>
<title><en>Infrastructure</en><ru>Инфраструктура</ru><ar>...</ar></title>
<images>
<image>https://...</image>
</images>
</album>
</albums>
- Project presentation: proje tanıtım görselleri.
- Construction progress: inşaat ilerleme fotoğrafları.
- Finishing examples: bitiş örnekleri.
- Infrastructure: proje altyapısı.
- View: manzaralar ve çevre.
Her projede her kategori bulunmak zorunda değildir. Kategori başlığı boşsa, görseller sınıflandırılmamış olarak içe aktarılabilir veya genel galeriye yerleştirilebilir.
Mevcut yapıda ayrı bir history/story XML etiketi yoktur. Haberler, promosyon mesajları ve proje pazarlama materyalleri stocks üzerinden iletilir. İnşaat geçmişi için, albums içinde varsa Construction progress kategorisi kullanılabilir.
9. Olanaklar
amenities, proje olanaklarını ve özelliklerini tanımlar. Entegrasyon için key kullanmak, gösterimde ise yerelleştirilmiş değerleri kullanmak daha doğrudur.
<amenities>
<amenity>
<key>project_facilities_gym</key>
<en>Gym</en>
<ru>Тренажёрный зал</ru>
<ar>صالة رياضية</ar>
</amenity>
</amenities>
- amenities: nesne. Olanaklar kapsayıcısı.
- amenity: nesne. Tek bir olanak.
- key: enum. Teknik anahtar.
- en / ru / ar: string. Olanak adı üç dilde.
projecet_hotel_license anahtarı bir yazım hatası içerir, ancak Hotel License olarak eşlenmelidir. Takma ad desteği sağlanması ve içe aktarmanın bozulmaması önerilir.
10. Pazarlama Promosyonları: <stocks>
stocks, geliştiricilerden gelen pazarlama kampanyaları, haberler ve promosyon mesajlarıdır. Özel fiyatlar, indirimler, lansman koşulları, EOI duyuruları, geçici ödeme teklifleri ve reklam materyallerini içerebilir. Bu blok envanter stoğu değildir ve ünite uygunluğunu tanımlamaz.
<stocks>
<stock>
<title>...</title>
<description>...</description>
<start_at>2025-06-26T00:00:00+04:00</start_at>
<end_at/>
<logo>https://...</logo>
</stock>
</stocks>
- stocks: nesne. Pazarlama mesajları kapsayıcısı.
- stock: nesne. Tek bir kampanya, haber öğesi veya promosyon duyurusu.
- title: yerelleştirilmiş nesne. Promosyon başlığı.
- description: yerelleştirilmiş HTML. Promosyon açıklaması.
- start_at: datetime. Başlangıç tarihi.
- end_at: datetime. Bitiş tarihi; boş olabilir.
- logo: url. Promosyon görseli.
Mülk uygunluğu için stocks değil, for_sale_count, layouts.sale_units_count ve sales_status kullanın.
11. EOI
EOI, Expression of Interest anlamına gelir. Bu blok, Presale (EOI) durumundaki projeler için ön ilgi veya depozito koşullarını açıklar.
<eoi>
<is_eoi_return>0</is_eoi_return>
<eoi_items>
<eoi_item>
<price>100000</price>
<percent/>
<description>
<en>EOI amount for 2 Bedrooms</en>
<ru>Сумма EOI для 2-комнатных</ru>
<ar>...</ar>
</description>
</eoi_item>
</eoi_items>
</eoi>
- is_eoi_return: 0/1/boş. 0 = iade edilmez, 1 = iade edilir, boş = belirtilmemiş.
- eoi_items: nesne. EOI koşulları kapsayıcısı.
- eoi_item: nesne. Tek bir EOI koşulu.
- price: decimal. Sabit EOI tutarı.
- percent: decimal. Kullanılıyorsa EOI yüzdesi.
- description: yerelleştirilmiş nesne. Koşul açıklaması.
- sales_status.en = Presale (EOI) ve eoi_items doluysa: EOI gösterin.
- Diğer tüm sales_status değerlerinde: EOI’yi gizleyin.
12. Aidat ve Devir
<service_charge>
<value>172.22</value>
<unit>sq. m</unit>
<currency>AED</currency>
</service_charge>
<assignment>40.00</assignment>
- service_charge.value: aidat tutarı. Boşsa bloğu gösterme.
- service_charge.unit: hesaplama birimi, genellikle sq. m. Boş olabilir.
- service_charge.currency: para birimi, genellikle AED. Boş olabilir.
- assignment: devir yapılabilen yüzde. Boş = bilgi belirtilmemiş, kısıtlama yok.
13. Ödeme Planları: <payment_plans>
payment_plans, geliştiricinin mülk için sunduğu ödeme seçeneklerini açıklar. Bir projede birden fazla ödeme planı olabilir. Her plan ödemeyi aşamalara böler: rezervasyon, inşaat, teslim ve teslim sonrası. Ücretler ve ek masraflar ayrıca iletilir, bu nedenle toplam yüzde 100%’ü aşabilir. Örneğin 104% ifadesi, mülk fiyatının 100%’ü + 4% DLD fee anlamına gelebilir.
- Basic: id, title, currency. Plan kimliği, başlığı ve para birimi. title serbest metindir, enum değildir.
- Booking: on_booking_percent, on_booking_fix, on_booking_payments_count, on_booking_fees. Rezervasyon aşamasındaki ödemeler ve ücretler.
- Construction: on_construction_percent, on_construction_fix, on_construction_payments_count, on_construction_fees. İnşaat sırasında ödemeler.
- Handover: on_handover_percent, on_handover_fix, on_handover_payments_count, on_handover_fees. Mülk tesliminde ödemeler.
- Post-handover: post_handover_percent, post_handover_fix, on_post_handover_payments_count, on_post_handover_fees. Teslim sonrası ödemeler.
- ROI: roi_percent, roi_fix, roi_payments_count, roi_fees. ROI veya garantili gelir planları için alanlar.
- Additional fees: additional, additional_percent, additional_fix, additional_fix_m2. Ek ödemeler, örneğin DLD Fee.
- Periods: period_after_handover, period_after_roi. Tekrarlayan ödemelerin sıklığı.
- Totals: price_total, fees_included_total. Plan toplam tutarları ve dahil edilen ücretler.
14. Planlar: <layouts>
layouts, proje içindeki tipik bir planı tanımlar. Bu, belirli bir daire veya ofis değil, toplu bir birim türüdür.
- id: tamsayı. Benzersiz plan ID’si. Dış layout ID’si olarak kullanın.
- title: yerelleştirilmiş nesne. Plan adı. Arayüz diline göre gösterin.
- project_id: tamsayı. Üst proje ID’si. offers.complex-id ile ilişkilendirin.
- building_name: yerelleştirilmiş nesne. Bina adı. Boşsa göstermeyin.
- price_on_request: 0/1. Fiyat gizleme bayrağı. 1 ise fiyatı göstermeyin.
- area_min / area_max: nesne. Alan aralığı. m2 ve ft2.
- area_balcony_min / area_balcony_max: nesne. Balkon alan aralığı. Boş olabilir.
- type: yerelleştirilmiş nesne. Mülk tipi. Unit type referansına bakın.
- sale_units_count: tamsayı. Bu tipteki satışa açık ünite sayısı. Bir arsa listesi değildir.
- album: nesne. Plan galerisi. Plan seviyesinde gösterin.
- levels_photos: nesne. Kata göre görseller. Kat planı olarak kullanın.
- floors_count: tamsayı. Kat sayısı. 1, 2, 3 vb.
- rooms_count: yerelleştirilmiş nesne. Oda sayısı. Rooms count referansına bakın.
- price: nesne. Plan fiyat aralığı. price_on_request=1 ise gizleyin.
- is_limited_publication: 0/1. Yayın kısıtı. 1 ise kamuya açık gizleyin.
15. Enum Değer Referansları
- Project type: project, compound.
- Sales status: Preliminary Info, Announcement, Presale (EOI), Launch, On Sale, Sold Out, Pending.
- Construction status: Scheduled, Ready, Stopped, In Progress.
- Unit type: Apartment, Villa, Townhouse, Duplex, Triplex, Penthouse, Retail, Office, Suite.
- Rooms count: Studio, 1 BR, 2 BR, 3 BR, 4 BR, 5 BR, 6 BR, 7 BR, 8 BR, NA.
- BR price key: studio, 1, 2, 3, 4, 5, 6, villa, townhouse, n.
- Gallery category: Project presentation, Construction progress, Finishing examples, Infrastructure, View.
- Currency: AED.
- Service charge unit: sq. m.
- Boolean flags: 0, 1; bazı alanlarda boş değer de kabul edilir.
Feed, referans listesinde olmayan bir değer içeriyorsa içe aktarma başarısız olmamalıdır. Değer ham haliyle saklanmalı, bilinmeyen olarak eşlenmeli ve inceleme için kaydedilmelidir.
16. Boş Değerler
Boş değer “belirtilmemiş” anlamına gelir, 0 anlamına gelmez. Boş etiketler <field/> veya <field></field> şeklinde görünebilir.
- assignment: devir koşulu belirtilmemiştir.
- service_charge.value: aidat belirtilmemiştir.
- eoi.is_eoi_return: EOI iade durumu belirtilmemiştir.
- area_balcony_min.m2: balkon alanı belirtilmemiştir.
- description.en: açıklama eksiktir.
17. Gösterim Kuralları
- Fiyat gizli: price_on_request = 1. “Fiyat için iletişime geçin” gösterin.
- Fiyat görünür: price_on_request = 0. min/max fiyatı gösterin.
- EOI: sales_status.en = Presale (EOI) ve EOI dolu. EOI gösterin.
- EOI geçerli değil: sales_status.en != Presale (EOI). EOI’yi gizleyin.
- Tükendi: is_sold_out = 1 veya sales_status.en = Sold Out. “Tükendi” gösterin veya listeden gizleyin.
- Yayın kısıtlı: is_limited_publication = 1. Kamuya açık yayınlamayın.
- Assignment boş: assignment boş. Assignment bloğunu göstermeyin.
- Aidat boş: service_charge.value boş. Aidatı göstermeyin.
18. İçe Aktarma Kuralları
- Proje: complex-id ile ara; bulunursa güncelle, bulunmazsa oluştur.
- Plan: layouts.id ile ara; project_id ile projeye bağla.
- Silme: nesne yeni feed’de kaybolursa hemen silmek yerine pasif yap.
- Bilinmeyen enum: ham değeri sakla, bilinmeyen olarak eşle ve kaydet.
- Boş değerler: açık bir alan bazlı kural olmadan 0’a dönüştürme.
19. Önerilen Veri Yapısı
Proje alanı → Kaynak
- external_project_id: complex-id.
- raw_offer_type: type.
- title_*: title.
- description_*: description.
- developer_name: developer.title.
- developer_logo_url: developer.logo.
- city/address/coordinates: city, address, latitude, longitude.
- districts: districts.district.
- construction_status: status.en.
- sales_status: sales_status.en.
- price_min / price_max: price.
- price_on_request: price_on_request.
- galleries: photo, album, albums.
- payment_plans: payment_plans.
- eoi: eoi.
- stocks: stocks.
- source_updated_at: updated_at.
Plan alanı → Kaynak
- external_layout_id: layouts.id.
- external_project_id: layouts.project_id.
- title_*: layouts.title.
- building_name_*: building_name.
- unit_type: type.en.
- rooms_count: rooms_count.en.
- sale_units_count: sale_units_count.
- area_min / area_max: area_min, area_max.
- balcony_min / balcony_max: area_balcony_min, area_balcony_max.
- floors_count: floors_count.
- price_min / price_max: price.
- layout_gallery: album.
- levels_photos: levels_photos.
- is_limited_publication: is_limited_publication.