← 全部作品
BACKENDM1 開發中2026

housing_rs

Rust 寫的房市投資輔助平台。整合 PostGIS 地理查詢、XGBoost 估價模型、Claude API 自然語言查詢,三套技術一體化部署。

角色
全端 + 架構設計
時程
2026 — 進行中
Reading
3 分鐘
技術棧
RustAxum 0.7sqlx 0.8PostgreSQL + PostGIShtmxAlpine.jsPython FastAPIClaude API

產品畫面

SCREENSHOTS · COMING SOON

產品截圖補上中。把圖丟到 public/works/<slug>/ 並在 mdx frontmatter 加 screenshots 陣列即可。

public/works/housing-rs/01.png

房地產實價登錄資料公開,但「散」、「難查」、「沒分析」三個痛點讓一般投資者很難用。housing_rs 把全台實價資料、周邊 POI、ML 估價、LLM 自然語言查詢整合成一個 Rust 平台,目標是讓「我想找新北 1000 萬以下捷運站旁的物件」這種口語化問題能直接得到結構化結果。

問題

  • 政府開放資料格式雜亂、分散多套 API、解析需大量工程
  • 沒有結合「實價 + 周邊機能 + ML 估價」的工具,投資判斷靠人工拼湊
  • 既有平台多為前端 SPA + 後端代理,缺少深度資料分析能力

解法

Rust 後端 + ML 微服務 + LLM 解析三層架構:

  1. Rust 資料管線:tokio-cron-scheduler 定時抓政府實價 ZIP,sqlx 寫入 PostgreSQL,PostGIS 索引處理周邊 POI 空間查詢。
  2. Python FastAPI ML 微服務:XGBoost 房價估算 + Isolation Forest 異常標記,Rust 透過 HTTP 呼叫,避免在 Rust 內塞 ML 依賴。
  3. Claude API LLM 查詢:使用者問「新北市 1500 萬以下、5 年內、近捷運」,Claude 解析為結構化 JSON 後 Rust 翻譯成 SQL。
  4. htmx + Alpine.js 前端:避免 SPA 過度工程化,HTML over the wire,地圖用 Leaflet,圖表 ApexCharts。

技術棧

  • Web: Axum 0.7(tower 生態)+ tokio + sqlx 0.8 compile-time check
  • DB: PostgreSQL 16 + PostGIS 3.4(地理空間索引、近鄰查詢)
  • ML: Python FastAPI + XGBoost + Isolation Forest(獨立微服務)
  • LLM: Anthropic Claude API(structured output JSON 模式)
  • Cache / Limit: moka 快取、governor rate limiting
  • Deploy: 多階段 Docker build、健康檢查、request tracing

成果

  • M1 完成:skeleton + DB schema + 實價資料抓取 pipeline
  • M2-M12 規劃中:UI、地圖視覺化、估價精度評估、LLM tool use
  • 預計 M6 完成 MVP,目標 50% 投資查詢需求透過 LLM 介面完成

學到什麼

  • Rust 不是只能跑高頻交易:sqlx 的 compile-time query check 對中型專案的維運價值極大,重構 schema 不會有 runtime 才爆的 SQL bug。
  • ML 模型用 HTTP 微服務隔離是對的:Rust crate 生態中 ML 庫成熟度遠不如 Python,硬塞會綁死選型。
  • LLM 不是 SQL 翻譯機:直接讓 LLM 寫 SQL 等於開放 SQL injection;用 structured output 拿 JSON、自己翻譯成 SQL 才安全。

對這個專案有興趣?

或者你想做類似的東西?聊聊。