Feed XML per Progetti e Layout

1. Scopo del Feed

Il feed XML trasferisce dati strutturati su progetti immobiliari e layout типici. Il suo scopo è consentire al sistema ricevente di creare e aggiornare automaticamente le schede progetto, mostrare prezzi, stati, gallerie, servizi, condizioni di pagamento, EOI e materiali promozionali di marketing forniti dai developer.

Il feed trasferisce i layout in forma aggregata: un record di layout descrive un layout tipico e il numero di unità disponibili di quel tipo. Non si tratta di un elenco di appartamenti, uffici o lotti specifici.

  • realty-feed: contenitore root dell’intero feed XML. ID principale: —
  • offers: un progetto o complesso. ID principale: complex-id
  • layouts: layout tipico all’interno di un progetto. ID principale: id
  • payment_plans: un’opzione di pagamento del progetto. ID principale: id
  • eoi_item: una condizione EOI. ID principale: —
  • stock: campagna marketing, notizia o messaggio promozionale del developer. ID principale: —

1.1 Cos’è un XML Feed

Un XML feed è un file strutturato che contiene dati su progetti immobiliari e layout tipici. Include descrizioni, foto, prezzi, indirizzi, stati, specifiche, servizi e altri dati necessari per mostrare gli immobili sul sito di un’agenzia o in un catalogo.

In termini semplici, un XML feed è un flusso di dati immobiliari che il sistema ricevente scarica regolarmente, legge e utilizza per aggiornare automaticamente le schede immobile.

Alnair fornisce i dati. Lo sviluppo del sito, del catalogo, l’integrazione CRM e la logica di importazione sono gestiti dal cliente o dal team tecnico del cliente.

1.2 Cosa Serve all’Agenzia

Per utilizzare il feed XML, l’agenzia necessita di una propria infrastruttura tecnica in grado di scaricare regolarmente l’XML, analizzarne la struttura e aggiornare i dati nel proprio sistema.

  • Sito web o catalogo immobiliare: il luogo in cui verranno mostrati i progetti e i layout del feed.
  • Team tecnico o sviluppatore: configurazione del download XML, parsing e importazione.
  • Parser XML: lettura della struttura XML e conversione nel modello dati interno.
  • Modulo di importazione: creazione, aggiornamento e disattivazione di progetti e layout.
  • Scheduler: esecuzione regolare dell’importazione secondo un programma, ad esempio tramite cron o scheduler.
  • Log errori: monitoraggio di valori enum sconosciuti, campi vuoti ed errori di caricamento.

1.3 Come l’Agenzia Utilizza il Feed XML

Un flusso di lavoro tipico è il seguente:

  1. Il sistema dell’agenzia scarica l’XML da un link web personale.
  2. L’XML viene salvato come snapshot grezzo per diagnosi e rielaborazione.
  3. Il parser legge la struttura realty-feed, offers, layouts e i blocchi annidati.
  4. Il modulo di importazione crea nuovi progetti e layout oppure aggiorna quelli esistenti.
  5. Gli oggetti che scompaiono dal nuovo feed vengono contrassegnati come inattivi.
  6. Il sito dell’agenzia mostra schede progetto, prezzi, gallerie e stati aggiornati.

Principali funzionalità di integrazione:

  • Aggiornamenti automatici: progetti e layout vengono aggiornati senza intervento manuale.
  • Creazione pagine immobile: i dati del feed vengono usati per le schede progetto e layout.
  • Prezzi e stati sempre aggiornati: il sito riceve gli aggiornamenti XML secondo la pianificazione.
  • Filtri e ricerca: è possibile filtrare per area, prezzo, tipologia immobile, numero di stanze e metratura.
  • Gallerie media: foto del progetto, gallerie tematiche e immagini dei layout possono essere visualizzate nell’interfaccia.

2. Struttura Generale XML

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

  • realty-feed: oggetto. Blocco root del feed.
  • generation-date: datetime. Data e ora di generazione dell’XML. Usato per verificare l’aggiornamento dei dati.
  • offers: object[]. Elenco di progetti o complessi. Ogni blocco offers contiene i dati del progetto e i relativi layout.

2.1 Accesso al Feed e Limiti di Download

Il feed viene fornito al cliente tramite un link web personale. Il link è univoco per il cliente e viene utilizzato dal sistema ricevente per scaricare automaticamente l’XML.

Il link personale è disponibile per l’amministratore nell’account Alnair. L’amministratore può condividere questo link con il team tecnico del cliente per configurare l’importazione.

  • Tipo di accesso: link web personale. URL individuale del feed XML per il cliente.
  • Dove ottenere il link: account Alnair. Il link è disponibile per l’amministratore del cliente.
  • Frequenza di aggiornamento del feed: ogni 4 ore. I dati XML vengono aggiornati sul lato Alnair una volta ogni 4 ore.
  • Intervallo minimo di download: non più di una volta all’ora. Il sistema ricevente non deve accedere al feed più di una volta all’ora.
  • Superamento del limite: blocco dell’accesso. Se le richieste sono troppo frequenti, l’accesso al feed può essere temporaneamente bloccato.

Logica di integrazione consigliata: configurare il download pianificato tramite cron o scheduler, salvare l’ultimo XML ricevuto e non richiedere il feed a ogni caricamento di pagina del sito. La modalità ottimale è scaricare il feed non più di una volta all’ora, tenendo conto che i nuovi dati compaiono circa ogni 4 ore.

3. Progetto: <offers>

offers è l’elemento principale del feed. Contiene la descrizione del progetto, il developer, la posizione, lo stato di costruzione e di vendita, i prezzi, i media, i servizi, i piani di pagamento, l’EOI, le promozioni di marketing e i layout tipici.

<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: integero. ID univoco del progetto in Alnair. Usare come ID esterno del progetto per upsert.
  • type: enum. Tipo di entità di livello superiore: project o compound. Memorizzare il valore grezzo e importarlo come progetto di primo livello.
  • logo: url. Logo del progetto. Mostrare nel branding, non usare come copertina.
  • photo: url. Immagine principale del progetto / copertina. Usare come immagine di copertina e hero image.
  • title: oggetto localizzato. Nome del progetto in en/ru/ar. Mostrare in base alla lingua dell’interfaccia.
  • description: HTML localizzato. Descrizione del progetto in en/ru/ar. Renderizzare in modo sicuro; l’HTML è all’interno di CDATA.
  • price_on_request: 0/1. Flag di occultamento del prezzo. Se 1, mostrare “Prezzo su richiesta”.
  • status: oggetto. Stato di costruzione. Da non confondere con sales_status.
  • construction_start_at: datetime. Data di inizio costruzione. Mostrare se valorizzata.
  • construction_progress: decimal. Percentuale di completamento della costruzione. Mostrare come percentuale.
  • planned_completion_at: datetime. Data prevista di completamento del progetto. Usare come data di consegna.
  • predicted_completion_at: datetime. Data stimata di completamento. Può essere usata come data di completamento aggiornata.
  • amenities: oggetto. Servizi e caratteristiche del progetto. Mappare per chiave.
  • developer: oggetto. Developer del progetto. Memorizzare nome e logo.
  • city / address: string. Città e indirizzo del progetto. Usare nei dati di localizzazione.
  • latitude / longitude: decimal. Coordinate. Usare per la mappa.
  • districts: oggetto. Quartieri del progetto. Usare per filtri e scheda progetto.
  • album: oggetto. Galleria principale del progetto, non categorizzata. Mostrare come galleria generale.
  • albums: oggetto. Gallerie tematiche del progetto. Raggruppare per titolo.
  • for_sale_count: integer. Numero di unità disponibili nel progetto. Può essere mostrato come disponibilità.
  • price: oggetto. Fascia di prezzo generale del progetto. Nascondere quando price_on_request=1.
  • br_prices: object[]. Prezzi per numero di camere o categoria. Usare per filtri e listing.
  • updated_at: datetime. Data di aggiornamento del progetto. Usare per la sincronizzazione.
  • is_sold_out: 0/1. Flag di esaurito. Usare insieme a sales_status.
  • payment_plans: object[]. Opzioni di pagamento del developer. Mostrare come opzioni di pagamento.
  • sales_status: oggetto localizzato. Stato di vendita del progetto. Definisce la fase commerciale.
  • stocks: oggetto. Campagne marketing e messaggi promozionali del developer. Mostrare come blocchi promo.
  • eoi: oggetto. Expression of Interest. Mostrare solo per Presale (EOI).
  • service_charge: oggetto. Spese condominiali. Mostrare se il valore è valorizzato.
  • assignment: decimal. Condizione di assignment. Vuoto significa non specificato.
  • is_limited_publication: 0/1. Restrizione di pubblicazione. Se 1, non pubblicare pubblicamente senza autorizzazione.
  • layouts: object[]. Layout tipici del progetto. Importare come entità figlie del progetto.

4. Campi Localizzati

I campi localizzati hanno la stessa struttura: i valori in inglese, russo e arabo vengono passati all’interno del tag.

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

  • en: valore in inglese. Fallback consigliato.
  • ru: valore in russo.
  • ar: valore in arabo.

Regola di fallback:

  1. Usare la lingua dell’interfaccia se è valorizzata.
  2. Se la lingua richiesta è vuota, usare en.
  3. Se en è vuoto, usare ru.
  4. Se ru è vuoto, usare ar.
  5. Se tutti i valori sono vuoti, non mostrare il campo.

5. Stati

5.1 Stato di Costruzione: <status>

Lo stato di costruzione mostra la condizione fisica del progetto. Non indica la disponibilità alla vendita.

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

  • Scheduled: il progetto è pianificato.
  • In Progress: la costruzione è in corso.
  • Ready: il progetto è completato.
  • Stopped: la costruzione è sospesa.

5.2 Stato di Vendita: <sales_status>

Lo stato di vendita mostra la fase commerciale del progetto: annuncio, pre-vendita, lancio, vendite attive o sold out.

  • Preliminary Info: informazioni iniziali sul progetto.
  • Announcement: il progetto è stato annunciato.
  • Presale (EOI): è in corso la raccolta EOI.
  • Launch: lancio delle vendite.
  • On Sale: il progetto è disponibile all’acquisto.
  • Sold Out: il progetto è esaurito.
  • Pending: lo stato è in attesa di aggiornamento.

6. Developer e Posizione

Questi blocchi servono a mostrare il brand del developer e la posizione geografica del progetto.

<developer>
  <title>
    <en>Nome del developer</en>
    <ru>Nome del developer</ru>
    <ar>Nome del developer</ar>
  </title>
  <logo>https://...</logo>
</developer>
<city>Dubai</city>
<address>Indirizzo del progetto, Dubai</address>
<latitude>25.01809076</latitude>
<longitude>55.13354525</longitude>
<districts>
  <district>Jumeirah Village Triangle (JVT)</district>
</districts>

  • developer.title: oggetto localizzato. Nome del developer.
  • developer.logo: url. Logo del developer.
  • city: string. Città.
  • address: string. Indirizzo.
  • latitude / longitude: decimal. Coordinate per la mappa.
  • districts.district: string[]. Quartieri del progetto.

7. Prezzi

7.1 Prezzo del Progetto: <price>

Il prezzo a livello di progetto mostra la fascia di prezzo generale delle offerte disponibili nel progetto.

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

  • min: decimal. Prezzo minimo.
  • max: decimal. Prezzo massimo.
  • min_usd: decimal. Prezzo minimo in USD.
  • max_usd: decimal. Prezzo massimo in USD.
  • currency: enum. Valuta principale, di solito AED.

Se price_on_request = 1, i prezzi esatti non vengono mostrati pubblicamente, anche se il prezzo è valorizzato.

7.2 Prezzi per Categoria: <br_prices>

br_prices raggruppa prezzi e superfici per numero di camere o tipologia immobiliare. È utile per filtri e schede progetto sintetiche.

<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: monolocali.
  • 1-6: numero di camere da letto.
  • villa: ville.
  • townhouse: villette a schiera.
  • n: non applicabile / categoria non residenziale / altro.

8. Media

I media nel feed sono suddivisi in diversi tipi. Non vanno unificati in un’unica galleria senza considerare il loro scopo: un’immagine può essere la copertina del progetto, un’altra il logo, un’altra ancora un’immagine promozionale o una planimetria.

  • logo: offers.logo. Logo del progetto. Mostrare nel branding del progetto; non usare come copertina.
  • photo: offers.photo. Immagine principale del progetto / copertina. Usare come immagine di copertina nella scheda e come hero image nella pagina progetto.
  • album.image: offers.album.image. Galleria principale del progetto, non categorizzata. Mostrare nella galleria generale del progetto.
  • albums.album.images.image: offers.albums.album.images.image. Galleria tematica del progetto. Raggruppare per albums.album.title.
  • developer.logo: offers.developer.logo. Logo del developer. Mostrare nel blocco developer.
  • stocks.stock.logo: offers.stocks.stock.logo. Immagine della campagna marketing. Mostrare all’interno del blocco promozionale.
  • layouts.album.image: offers.layouts.album.image. Galleria di uno specifico layout tipico. Mostrare a livello di layout.
  • levels_photos.level_photo.image: offers.layouts.levels_photos.level_photo.image. Immagine del layout per livello. Usare come planimetria.

<photo>https://...</photo>
<album>
  <image>https://...</image>
</album>
<albums>
  <album>
    <title><en>Infrastruttura</en><ru>Инфраструктура</ru><ar>...</ar></title>
    <images>
      <image>https://...</image>
    </images>
  </album>
</albums>

  • Presentazione del progetto: immagini di presentazione del progetto.
  • Avanzamento lavori: foto dell’avanzamento della costruzione.
  • Esempi di finiture: esempi di finiture.
  • Infrastruttura: infrastruttura del progetto.
  • Vista: viste e dintorni.

Non tutte le categorie devono essere presenti in ogni progetto. Se il titolo della categoria è vuoto, le immagini possono essere importate come non categorizzate oppure inserite nella galleria generale.

Nella struttura attuale non esiste un tag XML separato per history/story. Notizie, messaggi promozionali e materiali di marketing del progetto vengono trasmessi tramite stocks. Per la cronologia dei lavori è possibile utilizzare la categoria Avanzamento lavori, se presente in albums.

9. Servizi

amenities descrive i servizi e le caratteristiche del progetto. Per l’integrazione è meglio usare key, mentre i valori localizzati devono essere usati per la visualizzazione.

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

  • amenities: oggetto. Contenitore dei servizi.
  • amenity: oggetto. Un singolo servizio.
  • key: enum. Chiave tecnica.
  • en / ru / ar: string. Nome del servizio nelle tre lingue.

La chiave projecet_hotel_license contiene un refuso, ma deve essere mappata come Hotel License. Si consiglia di supportare l’alias e non interrompere l’importazione.

10. Promozioni di Marketing: <stocks>

stocks contiene campagne marketing, notizie e messaggi promozionali dei developer. Possono includere prezzi speciali, sconti, condizioni di lancio, annunci EOI, offerte di pagamento temporanee e materiali pubblicitari. Questo blocco non è una giacenza di inventario e non definisce la disponibilità delle unità.

<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: oggetto. Contenitore dei messaggi di marketing.
  • stock: oggetto. Una campagna, notizia o comunicazione promozionale.
  • title: oggetto localizzato. Titolo della promozione.
  • description: HTML localizzato. Descrizione della promozione.
  • start_at: datetime. Data di inizio.
  • end_at: datetime. Data di fine; può essere vuota.
  • logo: url. Immagine della promozione.

Utilizzare for_sale_count, layouts.sale_units_count e sales_status per la disponibilità degli immobili, non stocks.

11. EOI

EOI significa Expression of Interest. Il blocco descrive l’interesse preliminare o le condizioni di caparra per i progetti in stato Presale (EOI).

<eoi>
  <is_eoi_return>0</is_eoi_return>
  <eoi_items>
    <eoi_item>
      <price>100000</price>
      <percent/>
      <description>
        <en>Importo EOI per 2 Bedrooms</en>
        <ru>Сумма EOI для 2-комнатных</ru>
        <ar>...</ar>
      </description>
    </eoi_item>
  </eoi_items>
</eoi>

  • is_eoi_return: 0/1/vuoto. 0 = non rimborsabile, 1 = rimborsabile, vuoto = non specificato.
  • eoi_items: oggetto. Contenitore delle condizioni EOI.
  • eoi_item: oggetto. Una condizione EOI.
  • price: decimal. Importo fisso EOI.
  • percent: decimal. Percentuale EOI, se utilizzata.
  • description: oggetto localizzato. Descrizione della condizione.
  • sales_status.en = Presale (EOI) and eoi_items is filled: mostrare EOI.
  • Any other sales_status: nascondere EOI.

12. Spese Condominiali e Assignment

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

  • service_charge.value: importo delle spese condominiali. Se vuoto, non mostrare il blocco.
  • service_charge.unit: unità di calcolo, di solito sq. m. Può essere vuota.
  • service_charge.currency: valuta, di solito AED. Può essere vuota.
  • assignment: percentuale oltre la quale è possibile l’assignment. Vuoto = informazione non specificata, non una restrizione.

13. Piani di Pagamento: <payment_plans>

payment_plans descrive le opzioni di pagamento dell’immobile fornite dal developer. Un progetto può avere più piani di pagamento. Ogni piano suddivide i pagamenti per fasi: prenotazione, costruzione, consegna e post-consegna. Le commissioni e i costi aggiuntivi vengono trasmessi separatamente, quindi la percentuale totale può superare 100%. Ad esempio, 104% può indicare 100% del prezzo dell’immobile + 4% di DLD fee.

  • Basic: id, title, currency. Identificativo del piano, titolo e valuta. title è testo libero, non un enum.
  • Booking: on_booking_percent, on_booking_fix, on_booking_payments_count, on_booking_fees. Pagamenti e commissioni nella fase di prenotazione.
  • Construction: on_construction_percent, on_construction_fix, on_construction_payments_count, on_construction_fees. Pagamenti durante la costruzione.
  • Handover: on_handover_percent, on_handover_fix, on_handover_payments_count, on_handover_fees. Pagamenti alla consegna dell’immobile.
  • Post-handover: post_handover_percent, post_handover_fix, on_post_handover_payments_count, on_post_handover_fees. Pagamenti dopo la consegna.
  • ROI: roi_percent, roi_fix, roi_payments_count, roi_fees. Campi per schemi ROI o reddito garantito.
  • Commissioni aggiuntive: additional, additional_percent, additional_fix, additional_fix_m2. Pagamenti extra, ad esempio DLD Fee.
  • Periodi: period_after_handover, period_after_roi. Frequenza dei pagamenti ricorrenti.
  • Totali: price_total, fees_included_total. Importi totali del piano e commissioni incluse.

14. Layout: <layouts>

layouts descrive un layout tipico all’interno di un progetto. Si tratta di una tipologia aggregata di unità, non di un appartamento o ufficio specifico.

  • id: integero. ID univoco del layout. Usare come ID esterno del layout.
  • title: oggetto localizzato. Nome del layout. Mostrare in base alla lingua dell’interfaccia.
  • project_id: integero. ID del progetto padre. Collegare con offers.complex-id.
  • building_name: oggetto localizzato. Nome dell’edificio. Non mostrare se vuoto.
  • price_on_request: 0/1. Flag di occultamento del prezzo. Se 1, non mostrare il prezzo.
  • area_min / area_max: oggetto. Intervallo di superficie. m2 e ft2.
  • area_balcony_min / area_balcony_max: oggetto. Intervallo superficie balcone. Può essere vuoto.
  • type: oggetto localizzato. Tipologia dell’immobile. Vedere il riferimento Unit type.
  • sale_units_count: integero. Numero di unità disponibili di questo tipo. Non è un elenco di lotti.
  • album: oggetto. Galleria del layout. Mostrare a livello di layout.
  • levels_photos: oggetto. Immagini per livello. Usare come planimetrie.
  • floors_count: integero. Numero di livelli. 1, 2, 3, ecc.
  • rooms_count: oggetto localizzato. Numero di stanze. Vedere il riferimento Rooms count.
  • price: oggetto. Fascia di prezzo del layout. Nascondere quando price_on_request=1.
  • is_limited_publication: 0/1. Restrizione di pubblicazione. Se 1, nascondere pubblicamente.

15. Riferimenti ai Valori 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: Presentazione del progetto, Avanzamento lavori, Esempi di finiture, Infrastruttura, Vista.
  • Currency: AED.
  • Service charge unit: sq. m.
  • Boolean flags: 0, 1; per alcuni campi è consentito il vuoto.

Se il feed contiene un valore non presente nell’elenco di riferimento, l’importazione non deve fallire. Il valore deve essere memorizzato come valore grezzo, mappato come sconosciuto e registrato per revisione.

16. Valori Vuoti

Un valore vuoto significa “non specificato”, non 0. I tag vuoti possono apparire come <field/> oppure <field></field>.

  • assignment: la condizione di assignment non è specificata.
  • service_charge.value: le spese condominiali non sono specificate.
  • eoi.is_eoi_return: la rimborsabilità dell’EOI non è specificata.
  • area_balcony_min.m2: la superficie del balcone non è specificata.
  • description.en: la descrizione manca.

17. Regole di Visualizzazione

  • Prezzo nascosto: price_on_request = 1. Mostrare “Prezzo su richiesta”.
  • Prezzo visibile: price_on_request = 0. Mostrare prezzo min/max.
  • EOI: sales_status.en = Presale (EOI) e EOI è valorizzato. Mostrare EOI.
  • EOI non rilevante: sales_status.en != Presale (EOI). Nascondere EOI.
  • Esaurito: is_sold_out = 1 oppure sales_status.en = Sold Out. Mostrare “Esaurito” oppure nascondere dal listing.
  • Pubblicazione limitata: is_limited_publication = 1. Non pubblicare pubblicamente.
  • Assignment vuoto: assignment vuoto. Non mostrare il blocco assignment.
  • Spese condominiali vuote: service_charge.value vuoto. Non mostrare le spese condominiali.

18. Regole di Importazione

  • Progetto: cercare per complex-id; se trovato, aggiornare; se non trovato, creare.
  • Layout: cercare per layouts.id; collegare al progetto tramite project_id.
  • Cancellazione: se un oggetto scompare dal nuovo feed, marcarlo come inattivo invece di eliminarlo subito.
  • Enum sconosciuto: memorizzare il valore grezzo, mapparlo come sconosciuto e registrarlo.
  • Valori vuoti: non convertirli in 0 senza una regola esplicita specifica del campo.

Campo progetto → Sorgente

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

Campo layout → Sorgente

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