Skip to content

Repository files navigation

🏠 RentMap · 找房助手

粘贴中介发来的租房描述,AI 自动解析定位,在地图上一眼对比所有房源的通勤时间。

纯前端单文件应用,适合快速本地使用、Fork 二次开发。

image

✨ 功能特色

  • AI 一键解析:粘贴任意格式的租房文字,自动提取地址、价格、面积、装修、宠物、车位等结构化信息
  • 地图可视化:所有房源标注在高德地图上,支持平移/缩放手势
  • 多目的地通勤:配置公司、学校等多个通勤地址,自动计算驾车/公交/步行/骑行耗时
  • 晚高峰回程:驾车通勤支持「目的地→家」反向路线 + 实时路况
  • 排序筛选:按价格、面积、通勤时间升降序排列;按宠物友好、有车位、星标筛选
  • 星标收藏:一键星标心仪房源,支持单独筛选查看
  • 编辑 & 删除:随时修改已添加的房源信息
  • 本地优先 + 云同步可选:默认本地使用;配置 Supabase 后可长期存储并跨平台查看
  • 平台代付模式:配置 Supabase 并登录后,AI 解析与地理编码/通勤可经 Edge Function 代理,无需在前端保存 LLM / 高德 Web 服务 Key

🚀 快速开始

方式一:直接用浏览器打开(最简单)

git clone https://github.com/leonfighting-py/RentMap.git
cd RentMap
open index.html   # macOS
# 或直接双击 index.html 文件

方式二:本地 HTTP 服务(推荐,避免部分浏览器限制)

# Python 3
python3 -m http.server 8080
# 然后访问 http://localhost:8080

方式三:一键部署到 Netlify

index.html 拖到 Netlify Drop,即可获得公开访问链接。


🔑 API Key 与平台模式

RentMap 支持两种 API 调用模式,可在宿主「设置 → AI 文字解析」中切换(配置 Supabase 后默认 platform)。

模式 适用场景 LLM 解析 地理编码 / 通勤 地图 JS Key
platform(默认,上线推荐) 已配置 Supabase 并登录 Edge parse-listing Edge geocode / commute 仍需 Web JS Key 画地图(或等 P4 代理)
byok(高级 / 开发) 本地离线、自备配额 浏览器直连 Zenmux 浏览器直连高德 REST localStorage 中的 Key

上线密钥(生产 / 平台代付)

正式部署时,地图 Web 服务 Key、LLM Key 等敏感凭证应配置在 Supabase Edge Functions Secrets,由服务端代理调用,不要写入前端或提交到仓库。普通用户登录后无需自备 Key。

BYOK(在设置中自行填写 Key)仅适用于本地开发或高级用户;清单见 supabase/secrets.md,配置步骤见 supabase/README.md

React 地图路径(src/maps/不含 securityJsCode;仅使用公开 JS Key 或 serviceHost 代理(P4 待落地)。

1. 高德地图 JS API Key(地图展示必须)

用于地图展示、地址定位、路线规划

  1. 注册 高德开放平台 账号
  2. 创建应用 → 添加 Key,选择 Web端 (JS API)
  3. 获取 JS API Key 和对应的安全密钥
  4. 在应用的「Key 管理」中,将你的域名(或 localhost)加入白名单

📖 详细申请教程

2. Zenmux API Key(可选,BYOK 模式下用于 AI 解析)

用于将租房文字自动解析为结构化字段。platform 模式下无需配置,登录后走 Edge 代理;BYOK 模式需在设置中填写 Key。

  1. 访问 Zenmux 注册账号
  2. 获取免费 API Key
  3. 本应用使用 google/gemma-3-12b-it 模型,费用极低

3. Supabase(可选,用于账号与云同步)

用于邮箱验证码登录、长期存储、跨设备查看

  1. 创建 Supabase 项目
  2. 执行 supabase/schema.sql
  3. 在控制台启用邮箱 OTP 登录
  4. 复制 Project URLanon public key
  5. 在应用设置中填入这两个值

详细步骤见 supabase/README.md

微信小程序与存储

业务数据继续存放在现有 Supabase Postgresproperties / destinations / sync_tombstones),Web 与小程序共用同一套表与 RLS。小程序阶段只换登录入口(微信 OAuth → Edge 桥接 Supabase session)与地图渲染器(WechatNativeAdapter),另开微信云开发业务库。详见 supabase/wechat-phase2.md 与设计文档 docs/plans/2026-07-19-map-surface-and-secret-proxy-design.md


📖 使用方法

  1. 配置 Key / 登录:platform 模式需配置 Supabase 并邮箱登录;BYOK 模式在设置中填写高德 Key 和 Zenmux Key
  2. 设置目的地:在设置中添加公司/学校等通勤目的地
  3. 添加房源:点击「添加房源」,粘贴中介发来的描述文字,点击「AI 解析并定位」
  4. 确认信息:检查解析结果,确认后房源自动显示在地图上并计算通勤时间
  5. 对比筛选:使用排序和筛选功能快速找出最合适的房源

🛠️ 技术栈

技术 用途
原生 HTML/CSS/JS(index.html 宿主) 主找房路径,可直接打开
Vite + React + motion React 壳 / 对比页 / 地图 Tab(npm run dev
lib/ 纯函数 筛选、导出导入、转义、演示数据(可单测)
高德地图 JS API 2.0 地图、Geocoding、路线规划、POI 搜索
Zenmux API 调用 LLM 解析租房文字
Tailwind CSS CDN 宿主样式辅助
localStorage 本地缓存与离线兜底
Supabase Auth + Postgres + Edge Functions 账号、云端数据、跨平台同步、LLM/地理编码代理

📁 项目结构

RentMap/
├── index.html          # 主应用(过渡宿主,可直接打开)
├── index-react.html    # React 壳入口(npm run dev)
├── sync-utils.js
├── lib/                # 可测纯逻辑
├── src/                # Vite + React 新 UI
├── tests/
├── docs/plans/
└── supabase/

双入口

入口 命令 / 文件 用途
新版 React UI npm run dev → 打开 Vite 提示的 index-react.html 设计系统样板:列表 / 详情 / 对比 / 地图 Tab
宿主(完整能力) 直接打开 index.html 或静态服务器 地图、添加、通勤计算、云同步

地图 Tab 说明: React 侧通过 MapSurfaceAmapWebAdapter)渲染钉点。若本地未配置高德 JS Key,会显示空状态并引导打开宿主地图(支持 ?focus=<propId> 深链)。完整通勤与添加流程仍在宿主。

新版列表读取与宿主相同的 localStoragerm_props / rm_dests)。无数据时可在列表空状态点「载入演示数据」。

npm install
npm test
npm run dev

🗺️ 路线图

  • 数据导出 / 导入(JSON)
  • 移动端响应式布局(列表/地图 Tab)
  • 跨设备数据同步(Supabase 可选接入)
  • 对比篮(宿主 + React 对比页)
  • 粘贴原文落库
  • 云同步冲突暂停策略
  • 通勤顶栏视图维度
  • 价格/通勤/状态筛选 + 详情 Sheet
  • 决策字段:状态 / 评分 / 标签
  • 演示数据一键载入
  • 增量同步(dirty upsert + 本地/云端 tombstone)
  • 房源分享卡片生成
  • 共享常量单源(lib/constants → gen ESM .mjs)+ smoke 冒烟
  • 云端 sync_tombstones(跨设备删除一致性)
  • Playwright E2E(宿主冒烟:npm run test:e2e
  • React 设计系统样板(列表 + 详情 Sheet)
  • 地图 Tab 接入(MapSurface + 无 Key 降级;添加流仍在宿主)
  • 平台代付:Edge parse-listing / geocode / commute + 宿主 platform 默认
  • _AMapService 安全代理(P4)
  • 微信小程序对接(P5;存储仍用 Supabase)

📦 本轮交付(v0.11.0 · 地图抽象 + 密钥代理)

已落地 待后续
P1–P3:Edge 代理、MapSurface、React 地图 Tab、platform 默认模式 P4:_AMapService 代理,生产关闭 BYOK 默认入口
宿主高德 Logo/版权信息恢复可见(协议合规) P5:微信小程序 + WechatNativeAdapter + 微信登录桥

设计细节见 docs/plans/2026-07-19-map-surface-and-secret-proxy-design.md


📄 License

MIT License © 2025 leonfighting-py

About

AI-powered rental listing map comparison tool for China apartment hunting

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages