MLS 房源資料同步

System ↔ System

訂閱 MLS 資料流,進行正規化、去重複並推送至各入口網站。

6 個節點 · 5 條連接real-estate
apidbsystem
視覺化
MLS 資料流訂閱api

透過 RETS/Web API 拉取新增及更新的房源資料。

sequential資料正規化
資料正規化system

將 MLS 特有欄位對應至標準結構描述,統一地址格式。

sequential重複資料偵測
重複資料偵測system

依地址與 MLS 編號進行模糊比對,防止房源重複刊登。

sequential本地資料庫更新
本地資料庫更新db

以變更資料擷取日誌方式,將房源資料更新寫入 PostgreSQL。

sequential入口網站推送
parallel搜尋索引刷新
入口網站推送api

將更新後的房源分發至 Zillow、Realtor.com 及房仲網站。

搜尋索引刷新system

在 Elasticsearch 中重新索引更新的房源以供網站搜尋使用。

uc-mls-data-sync.osop.yaml
osop_version: "1.0"
id: "mls-data-sync"
name:"MLS 房源資料同步"
description:"訂閱 MLS 資料流,進行正規化、去重複並推送至各入口網站。"

nodes:
  - id: "mls_feed"
    type: "api"
    subtype: "rest"
    name: "MLS 資料流訂閱"
    description: "透過 RETS/Web API 拉取新增及更新的房源資料。"
    retry_policy:
      max_attempts: 3
      backoff: "exponential"
    timeout_sec: 120

  - id: "normalize"
    type: "system"
    name: "資料正規化"
    description: "將 MLS 特有欄位對應至標準結構描述,統一地址格式。"

  - id: "dedup"
    type: "system"
    name: "重複資料偵測"
    description: "依地址與 MLS 編號進行模糊比對,防止房源重複刊登。"

  - id: "db_update"
    type: "db"
    name: "本地資料庫更新"
    description: "以變更資料擷取日誌方式,將房源資料更新寫入 PostgreSQL。"

  - id: "portal_push"
    type: "api"
    subtype: "rest"
    name: "入口網站推送"
    description: "將更新後的房源分發至 Zillow、Realtor.com 及房仲網站。"
    timeout_sec: 60

  - id: "index_refresh"
    type: "system"
    name: "搜尋索引刷新"
    description: "在 Elasticsearch 中重新索引更新的房源以供網站搜尋使用。"

edges:
  - from: "mls_feed"
    to: "normalize"
    mode: "sequential"
  - from: "normalize"
    to: "dedup"
    mode: "sequential"
  - from: "dedup"
    to: "db_update"
    mode: "sequential"
  - from: "db_update"
    to: "portal_push"
    mode: "sequential"
  - from: "db_update"
    to: "index_refresh"
    mode: "parallel"