تغذية XML للمشاريع والمخططات

1. الغرض من التغذية

تنقل تغذية XML بيانات منظمة عن المشاريع العقارية والتخطيطات النموذجية. والغرض منها هو تمكين النظام المستقبِل من إنشاء وتحديث بطاقات المشاريع تلقائيًا، وعرض الأسعار، والحالات، ومعارض الصور، والمرافق، وشروط الدفع، وEOI، والمواد الترويجية التسويقية من المطورين.

تنقل التغذية التخطيطات بصيغة مجمعة: حيث يصف سجل واحد تخطيطًا نموذجيًا وعدد الوحدات المتاحة من هذا النوع. وهي ليست قائمةً بشقق أو مكاتب أو قطع أراضٍ محددة.

  • realty-feed: الحاوية الجذرية لكامل تغذية XML. المعرّف الرئيسي: —
  • offers: مشروع واحد أو مجمع واحد. المعرّف الرئيسي: complex-id
  • layouts: تخطيط نموذجي داخل المشروع. المعرّف الرئيسي: id
  • payment_plans: خيار دفع واحد للمشروع. المعرّف الرئيسي: id
  • eoi_item: شرط EOI واحد. المعرّف الرئيسي: —
  • stock: حملة تسويقية أو خبر أو رسالة ترويجية من المطور. المعرّف الرئيسي: —

1.1 ما هي تغذية XML

تغذية XML هي ملف منظم يحتوي على بيانات عن المشاريع العقارية والتخطيطات النموذجية. وتشمل الأوصاف، والصور، والأسعار، والعناوين، والحالات، والمواصفات، والمرافق، وغيرها من البيانات اللازمة لعرض العقارات على موقع الوكالة أو في الكتالوج.

ببساطة، تغذية XML هي تدفق بيانات عن العقارات يقوم النظام المستقبِل بتنزيله وقراءته واستخدامه بانتظام لتحديث بطاقات العقارات تلقائيًا.

توفّر Alnair البيانات. أما تطوير الموقع، وتطوير الكتالوج، ودمج CRM، ومنطق الاستيراد فتتولى تنفيذه جهة العميل أو الفريق التقني للعميل.

1.2 ما الذي تحتاجه الوكالة

لاستخدام تغذية XML، تحتاج الوكالة إلى بنية تقنية خاصة بها قادرة على تنزيل XML بانتظام، وتحليل بنيته، وتحديث البيانات داخل نظامها.

  • موقع إلكتروني أو كتالوج عقاري: المكان الذي ستُعرض فيه المشاريع والتخطيطات من التغذية.
  • فريق تقني أو مطوّر: إعداد تنزيل XML وتحليله واستيراده.
  • محلل XML: قراءة بنية XML وتحويلها إلى نموذج البيانات الداخلي.
  • وحدة استيراد: إنشاء المشاريع والتخطيطات وتحديثها وتعطيلها.
  • مجدول مهام: تنفيذ الاستيراد دوريًا وفق جدول، مثل cron أو scheduler.
  • تسجيل الأخطاء: مراقبة قيم enum غير المعروفة، والحقول الفارغة، وأخطاء التحميل.

1.3 كيف تستخدم الوكالة تغذية XML

تبدو آلية العمل النموذجية كما يلي:

  1. يقوم نظام الوكالة بتنزيل XML من رابط ويب شخصي.
  2. يتم حفظ XML كلقطة خام لأغراض التشخيص وإعادة المعالجة.
  3. يقوم المحلل بقراءة بنية realty-feed وoffers وlayouts والكتل المتداخلة.
  4. تقوم وحدة الاستيراد بإنشاء مشاريع وتخطيطات جديدة أو تحديث الموجودة منها.
  5. يتم وسم العناصر التي تختفي من التغذية الجديدة على أنها غير نشطة.
  6. يعرض موقع الوكالة بطاقات مشاريع محدثة، وأسعارًا، ومعارض صور، وحالاتٍ حديثة.

أهم إمكانيات التكامل:

  • تحديثات تلقائية: يتم تحديث المشاريع والتخطيطات دون إدخال يدوي.
  • إنشاء صفحات العقار: تُستخدم بيانات التغذية لبطاقات المشاريع والتخطيطات.
  • أسعار وحالات محدثة: يستقبل الموقع تحديثات XML وفق الجدول الزمني.
  • الفلاتر والبحث: يمكن استخدام الحي والسعر ونوع العقار وعدد الغرف والمساحة في التصفية.
  • معارض الوسائط: يمكن عرض صور المشاريع والمعارض الموضوعية وصور التخطيطات داخل الواجهة.

2. البنية العامة لـ XML

<realty-feed>
  <generation-date>2026-06-17T12:06:39+04:00</generation-date>
  <offers>...</offers>
  <offers>...</offers>
</realty-feed>

  • realty-feed: كائن. كتلة التغذية الجذرية.
  • generation-date: datetime. تاريخ ووقت إنشاء XML. يُستخدم للتحقق من حداثة البيانات.
  • offers: object[]. قائمة المشاريع أو المجمعات. تحتوي كل كتلة offers على بيانات المشروع وتخطيطاته.

2.1 الوصول إلى التغذية وحدود التنزيل

تُقدَّم التغذية للعميل عبر رابط ويب شخصي. الرابط فريد للعميل ويستخدمه النظام المستقبِل لتنزيل XML تلقائيًا.

يتوفر الرابط الشخصي للمسؤول في حساب Alnair. ويمكن للمسؤول تمرير هذا الرابط إلى الفريق التقني للعميل لإعداد الاستيراد.

  • نوع الوصول: رابط ويب شخصي. عنوان URL فردي لتغذية XML الخاصة بالعميل.
  • مكان الحصول على الرابط: حساب Alnair. الرابط متاح لمسؤول العميل.
  • تكرار تحديث التغذية: كل 4 ساعات. يتم تحديث بيانات XML في جهة Alnair مرة كل 4 ساعات.
  • أقل فاصل للتنزيل: لا يزيد عن مرة واحدة في الساعة. يجب ألا يصل النظام المستقبِل إلى التغذية أكثر من مرة في الساعة.
  • تجاوز الحد: حظر الوصول. إذا كانت الطلبات متكررة جدًا، فقد يتم حظر الوصول إلى التغذية مؤقتًا.

منطق التكامل الموصى به: إعداد التنزيل المجدول عبر cron أو scheduler، وحفظ آخر XML مستلم، وعدم طلب التغذية مع كل تحميل لصفحة الموقع. الوضع الأمثل هو تنزيل التغذية بما لا يزيد عن مرة واحدة في الساعة مع مراعاة أن البيانات الجديدة تظهر تقريبًا كل 4 ساعات.

3. المشروع: <offers>

offers هو الكيان الرئيسي في التغذية. ويشمل وصف المشروع، والمطور، والموقع، وحالة الإنشاء والبيع، والأسعار، والوسائط، والمرافق، وخطط الدفع، وEOI، والعروض الترويجية، والتخطيطات النموذجية.

<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: integer. المعرّف الفريد للمشروع في Alnair. يُستخدم كمعرّف خارجي للمشروع لعمليات upsert.
  • type: enum. نوع الكيان الأعلى: project أو compound. احفظ القيمة الخام واستوردها كمشروع من المستوى الأعلى.
  • logo: url. شعار المشروع. يُعرض في العلامة التجارية، ولا يُستخدم كصورة غلاف.
  • photo: url. الصورة الرئيسية للمشروع / صورة الغلاف. تُستخدم كصورة غلاف وصورة رئيسية.
  • title: localized object. اسم المشروع باللغات en/ru/ar. يُعرض وفق لغة الواجهة.
  • description: localized HTML. وصف المشروع باللغات en/ru/ar. يُعرض بأمان؛ فـ HTML داخل CDATA.
  • price_on_request: 0/1. علامة إخفاء السعر. إذا كانت 1، فاعرض “السعر عند الطلب”.
  • status: object. حالة الإنشاء. لا تخلطها مع sales_status.
  • construction_start_at: datetime. تاريخ بدء الإنشاء. يُعرض إذا كان مُعبأً.
  • construction_progress: decimal. نسبة إنجاز الإنشاء. تُعرض كنسبة مئوية.
  • planned_completion_at: datetime. التاريخ المخطط لإنجاز المشروع. يُستخدم كتاريخ التسليم.
  • predicted_completion_at: datetime. التاريخ المتوقع للإنجاز. يمكن استخدامه كتاريخ محدث للإنجاز.
  • amenities: object. مرافق وميزات المشروع. تُربط حسب المفتاح.
  • developer: object. مطور المشروع. احفظ الاسم والشعار.
  • city / address: string. مدينة المشروع وعنوانه. يُستخدمان في بيانات الموقع.
  • latitude / longitude: decimal. الإحداثيات. تُستخدم للخريطة.
  • districts: object. أحياء المشروع. تُستخدم للفلاتر وبطاقة المشروع.
  • album: object. معرض الصور الرئيسي للمشروع غير المصنف موضوعيًا. يُعرض كمعرض عام.
  • albums: object. معارض صور موضوعية للمشروع. تُجمع حسب العنوان.
  • for_sale_count: integer. عدد الوحدات المتاحة في المشروع. يمكن عرضه كتوفر.
  • price: object. النطاق السعري العام للمشروع. يُخفى عندما تكون price_on_request=1.
  • br_prices: object[]. الأسعار حسب عدد غرف النوم أو الفئة. تُستخدم للفلاتر والقوائم.
  • updated_at: datetime. تاريخ تحديث المشروع. يُستخدم للمزامنة.
  • is_sold_out: 0/1. علامة نفاد البيع. تُستخدم مع sales_status.
  • payment_plans: object[]. خيارات الدفع من المطور. تُعرض كخيارات دفع.
  • sales_status: localized object. حالة بيع المشروع. تحدد مرحلة البيع.
  • stocks: object. الحملات التسويقية والرسائل الترويجية من المطور. تُعرض ككتل ترويجية.
  • eoi: object. إبداء الاهتمام. يُعرض فقط في مرحلة ما قبل البيع (EOI).
  • service_charge: object. رسوم الخدمة. تُعرض إذا كانت القيمة مُعبأة.
  • assignment: decimal. شرط التنازل. الحقل الفارغ يعني غير محدد.
  • is_limited_publication: 0/1. تقييد النشر. إذا كانت 1، فلا يُنشر علنًا دون إذن.
  • layouts: object[]. التخطيطات النموذجية للمشروع. تُستورد ككيانات فرعية للمشروع.

4. الحقول المحلية

الحقول المحلية لها البنية نفسها: تُمرَّر القيم بالإنجليزية والروسية والعربية داخل الوسم.

<title>
  <en>Project Name</en>
  <ru>Название проекта</ru>
  <ar>اسم المشروع</ar>
</title>

  • en: القيمة الإنجليزية. يُنصح باستخدامها كبديل احتياطي.
  • ru: القيمة الروسية.
  • ar: القيمة العربية.

قاعدة البديل الاحتياطي:

  1. استخدم لغة الواجهة إذا كانت مُعبأة.
  2. إذا كانت اللغة المطلوبة فارغة، فاستخدم en.
  3. إذا كانت en فارغة، فاستخدم ru.
  4. إذا كانت ru فارغة، فاستخدم ar.
  5. إذا كانت جميع القيم فارغة، فلا تعرض الحقل.

5. الحالات

5.1 حالة الإنشاء: <status>

تُظهر حالة الإنشاء الحالة المادية للمشروع. وهي لا تشير إلى توافر البيع.

<status>
  <key>development_stage_progress</key>
  <en>In Progress</en>
  <ru>Строится</ru>
  <ar>قيد الإنشاء</ar>
</status>

  • Scheduled: المشروع مخطط له.
  • In Progress: الإنشاء جارٍ.
  • Ready: المشروع مكتمل.
  • Stopped: توقف الإنشاء.

5.2 حالة البيع: <sales_status>

تُظهر حالة البيع المرحلة التجارية للمشروع: الإعلان، ما قبل البيع، الإطلاق، البيع النشط، أو نفاد البيع.

  • Preliminary Info: معلومات أولية عن المشروع.
  • Announcement: تم الإعلان عن المشروع.
  • Presale (EOI): جاري جمع EOI.
  • Launch: إطلاق المبيعات.
  • On Sale: المشروع متاح للشراء.
  • Sold Out: المشروع نفدت وحداته.
  • Pending: الحالة بانتظار التحديث.

6. المطور والموقع

تُستخدم هذه الكتل لعرض علامة المطور التجارية والموقع الجغرافي للمشروع.

<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: localized object. اسم المطور.
  • developer.logo: url. شعار المطور.
  • city: string. المدينة.
  • address: string. العنوان.
  • latitude / longitude: decimal. الإحداثيات للخريطة.
  • districts.district: string[]. أحياء المشروع.

7. الأسعار

7.1 سعر المشروع: <price>

يعرض سعر مستوى المشروع النطاق السعري العام للعروض المتاحة داخل المشروع.

<price>
  <min>815462</min>
  <max>2089780</max>
  <min_usd>222009</min_usd>
  <max_usd>568942</max_usd>
  <currency>AED</currency>
</price>

  • min: decimal. الحد الأدنى للسعر.
  • max: decimal. الحد الأقصى للسعر.
  • min_usd: decimal. الحد الأدنى بالسعر بالدولار الأمريكي.
  • max_usd: decimal. الحد الأقصى بالسعر بالدولار الأمريكي.
  • currency: enum. العملة الأساسية، وعادةً AED.

إذا كانت price_on_request = 1، فلا تُعرض الأسعار الدقيقة للعامة، حتى لو كان السعر مُعبأً.

7.2 الأسعار حسب الفئة: <br_prices>

يجمع br_prices الأسعار والمساحات حسب عدد غرف النوم أو نوع العقار. وهذا مفيد للفلاتر والبطاقات المختصرة للمشروع.

<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: استوديوهات.
  • 1-6: عدد غرف النوم.
  • villa: فلل.
  • townhouse: تاون هاوس.
  • n: غير منطبق / فئة غير سكنية / أخرى.

8. الوسائط

تنقسم الوسائط في التغذية إلى عدة أنواع. ولا ينبغي دمجها في معرض واحد دون مراعاة الغرض منها: فقد تكون صورة هي غلاف المشروع، وأخرى الشعار، وثالثة صورة ترويجية، وأخرى مخططًا أرضيًا.

  • logo: offers.logo. شعار المشروع. يُعرض في هوية المشروع، ولا يُستخدم كغلاف.
  • photo: offers.photo. الصورة الرئيسية للمشروع / الغلاف. تُستخدم كصورة غلاف في البطاقة وصورة رئيسية في صفحة المشروع.
  • album.image: offers.album.image. معرض المشروع الرئيسي غير المصنف. يُعرض في المعرض العام للمشروع.
  • albums.album.images.image: offers.albums.album.images.image. معرض صور موضوعي للمشروع. يُجمع حسب albums.album.title.
  • developer.logo: offers.developer.logo. شعار المطور. يُعرض في كتلة المطور.
  • stocks.stock.logo: offers.stocks.stock.logo. صورة الحملة التسويقية. تُعرض داخل كتلة الترويج.
  • layouts.album.image: offers.layouts.album.image. معرض تخطيط نموذجي محدد. يُعرض على مستوى التخطيط.
  • levels_photos.level_photo.image: offers.layouts.levels_photos.level_photo.image. صورة التخطيط حسب المستوى. تُستخدم كمخطط أرضي.

<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: صور عرض المشروع.
  • Construction progress: صور تقدم الإنشاء.
  • Finishing examples: أمثلة التشطيبات.
  • Infrastructure: بنية المشروع التحتية.
  • View: الإطلالات والمحيط.

ليس من الضروري أن توجد كل فئة في كل مشروع. إذا كان عنوان الفئة فارغًا، يمكن استيراد الصور كصور غير مصنفة أو وضعها في المعرض العام.

لا يوجد وسم XML منفصل للتاريخ/القصة في البنية الحالية. تُمرَّر الأخبار والرسائل الترويجية والمواد التسويقية للمشروع عبر stocks. ولتاريخ الإنشاء، يمكن استخدام فئة Construction progress إذا كانت موجودة في albums.

9. المرافق

تصف amenities مرافق المشروع وخصائصه. ولأغراض التكامل، يُفضل استخدام key، بينما تُستخدم القيم المحلية للعرض.

<amenities>
  <amenity>
    <key>project_facilities_gym</key>
    <en>Gym</en>
    <ru>Тренажёрный зал</ru>
    <ar>صالة رياضية</ar>
  </amenity>
</amenities>

  • amenities: object. حاوية المرافق.
  • amenity: object. مرفق واحد.
  • key: enum. المفتاح التقني.
  • en / ru / ar: string. اسم المرفق بثلاث لغات.

يحمل المفتاح projecet_hotel_license خطأً إملائيًا، لكنه يجب أن يُربط باسم Hotel License. ويُنصح بدعم هذا الاسم البديل وعدم تعطيل الاستيراد.

10. العروض الترويجية التسويقية: <stocks>

stocks هي حملات تسويقية وأخبار ورسائل ترويجية من المطورين. وقد تتضمن أسعارًا خاصة، وخصومات، وشروط الإطلاق، وإعلانات EOI، وعروض دفع مؤقتة، ومواد إعلانية. هذه الكتلة ليست مخزونًا ولا تحدد توافر الوحدات.

<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: object. حاوية الرسائل التسويقية.
  • stock: object. حملة واحدة أو خبر واحد أو إعلان ترويجي واحد.
  • title: localized object. عنوان العرض الترويجي.
  • description: localized HTML. وصف العرض الترويجي.
  • start_at: datetime. تاريخ البدء.
  • end_at: datetime. تاريخ الانتهاء؛ وقد يكون فارغًا.
  • logo: url. صورة العرض الترويجي.

استخدم for_sale_count وlayouts.sale_units_count وsales_status لمعرفة توافر العقار، وليس stocks.

11. EOI

EOI تعني Expression of Interest. وتصف الكتلة الاهتمام المبدئي أو شروط الدفعة المقدمة للمشاريع في حالة Presale (EOI).

<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/فارغ. 0 = غير مسترد، 1 = مسترد، فارغ = غير محدد.
  • eoi_items: object. حاوية شروط EOI.
  • eoi_item: object. شرط EOI واحد.
  • price: decimal. مبلغ EOI الثابت.
  • percent: decimal. نسبة EOI، إذا استُخدمت.
  • description: localized object. وصف الشرط.
  • sales_status.en = Presale (EOI) و eoi_items مُعبأة: اعرض EOI.
  • أي sales_status أخرى: اخفِ EOI.

12. رسوم الخدمة والتنازل

<service_charge>
  <value>172.22</value>
  <unit>sq. m</unit>
  <currency>AED</currency>
</service_charge>
<assignment>40.00</assignment>

  • service_charge.value: مبلغ رسوم الخدمة. إذا كان فارغًا، فلا تعرض الكتلة.
  • service_charge.unit: وحدة الحساب، وعادةً sq. m. وقد تكون فارغة.
  • service_charge.currency: العملة، وعادةً AED. وقد تكون فارغة.
  • assignment: النسبة التي يصبح بعدها التنازل ممكنًا. الحقل الفارغ = المعلومة غير محددة، وليس تقييدًا.

13. خطط الدفع: <payment_plans>

تصف payment_plans خيارات الدفع الخاصة بالعقار من المطور. قد يكون للمشروع أكثر من خطة دفع. وتفصّل كل خطة الدفع على مراحل: الحجز، والإنشاء، والتسليم، وما بعد التسليم. وتُمرَّر الرسوم والرسوم الإضافية بشكل منفصل، لذا قد تتجاوز النسبة الإجمالية 100%. على سبيل المثال، قد تعني 104% = 100% من سعر العقار + 4% رسوم DLD.

  • Basic: id و title و currency. معرّف الخطة وعنوانها وعملتها. title نص حر وليس enum.
  • Booking: on_booking_percent و on_booking_fix و on_booking_payments_count و on_booking_fees. المدفوعات والرسوم في مرحلة الحجز.
  • Construction: on_construction_percent و on_construction_fix و on_construction_payments_count و on_construction_fees. المدفوعات أثناء الإنشاء.
  • Handover: on_handover_percent و on_handover_fix و on_handover_payments_count و on_handover_fees. المدفوعات عند تسليم العقار.
  • Post-handover: post_handover_percent و post_handover_fix و on_post_handover_payments_count و on_post_handover_fees. المدفوعات بعد التسليم.
  • ROI: roi_percent و roi_fix و roi_payments_count و roi_fees. حقول لبرامج العائد على الاستثمار أو الدخل المضمون.
  • Additional fees: additional و additional_percent و additional_fix و additional_fix_m2. مدفوعات إضافية، مثل DLD Fee.
  • Periods: period_after_handover و period_after_roi. وتيرة المدفوعات المتكررة.
  • Totals: price_total و fees_included_total. إجماليات الخطة والرسوم المشمولة.

14. التخطيطات: <layouts>

تصف layouts تخطيطًا نموذجيًا داخل المشروع. وهو نوع وحدة مجمع، وليس شقة أو مكتبًا محددًا.

  • id: integer. معرّف فريد للتخطيط. يُستخدم كمعرّف خارجي للتخطيط.
  • title: localized object. اسم التخطيط. يُعرض وفق لغة الواجهة.
  • project_id: integer. معرّف المشروع الأب. يُربط مع offers.complex-id.
  • building_name: localized object. اسم المبنى. لا يُعرض إذا كان فارغًا.
  • price_on_request: 0/1. علامة إخفاء السعر. إذا كانت 1، فلا تُعرض الأسعار.
  • area_min / area_max: object. نطاق المساحة. m2 و ft2.
  • area_balcony_min / area_balcony_max: object. نطاق مساحة الشرفة. قد يكون فارغًا.
  • type: localized object. نوع العقار. راجع مرجع نوع الوحدة.
  • sale_units_count: integer. عدد الوحدات المتاحة من هذا النوع. ليست قائمة بالقطع.
  • album: object. معرض التخطيط. يُعرض على مستوى التخطيط.
  • levels_photos: object. صور حسب المستوى. تُستخدم كمخططات أرضية.
  • floors_count: integer. عدد الطوابق. 1، 2، 3، إلخ.
  • rooms_count: localized object. عدد الغرف. راجع مرجع عدد الغرف.
  • price: object. النطاق السعري للتخطيط. يُخفى عندما تكون price_on_request=1.
  • is_limited_publication: 0/1. تقييد النشر. إذا كانت 1، فيُخفى علنًا.

15. مراجع قيم enum

  • 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; ويُسمح بالفراغ في بعض الحقول.

إذا احتوت التغذية على قيمة غير موجودة في قائمة المراجع، فلا يجب أن يفشل الاستيراد. يجب حفظ القيمة كقيمة خام، ووسمها كغير معروفة، وتسجيلها للمراجعة.

16. القيم الفارغة

القيمة الفارغة تعني “غير محدد”، وليس 0. وقد تظهر الوسوم الفارغة على شكل <field/> أو <field></field>.

  • assignment: شرط التنازل غير محدد.
  • service_charge.value: رسوم الخدمة غير محددة.
  • eoi.is_eoi_return: قابلية استرداد EOI غير محددة.
  • area_balcony_min.m2: مساحة الشرفة غير محددة.
  • description.en: الوصف مفقود.

17. قواعد العرض

  • السعر مخفي: price_on_request = 1. اعرض “السعر عند الطلب”.
  • السعر ظاهر: price_on_request = 0. اعرض الحد الأدنى/الأقصى للسعر.
  • EOI: sales_status.en = Presale (EOI) و EOI مُعبأ. اعرض EOI.
  • EOI غير ذي صلة: sales_status.en != Presale (EOI). اخفِ EOI.
  • نفاد البيع: is_sold_out = 1 أو sales_status.en = Sold Out. اعرض “نفدت الوحدات” أو اخفِه من القائمة.
  • نشر محدود: is_limited_publication = 1. لا تنشره علنًا.
  • التنازل فارغ: assignment فارغ. لا تعرض كتلة التنازل.
  • رسوم الخدمة فارغة: service_charge.value فارغ. لا تعرض رسوم الخدمة.

18. قواعد الاستيراد

  • المشروع: البحث بواسطة complex-id؛ إذا وُجد، يتم التحديث؛ وإذا لم يوجد، يتم الإنشاء.
  • التخطيط: البحث بواسطة layouts.id؛ والربط بالمشروع عبر project_id.
  • الحذف: إذا اختفى كائن من التغذية الجديدة، فاجعله غير نشط بدلًا من حذفه فورًا.
  • enum غير معروف: احفظ القيمة الخام، ووسمها كغير معروفة، وسجّلها.
  • القيم الفارغة: لا تُحوَّل إلى 0 دون قاعدة صريحة خاصة بالحقل.

حقل المشروع → المصدر

  • 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.

حقل التخطيط → المصدر

  • 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.