Skip to content

About

RentSmart AI:面向租房场景的移动端 H5 助手,含退押金纠纷维权引擎

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

     

RentSmart AI

智能租房助手 · 有坑必防

📖 查看完整产品文档 →


一句话介绍

把「刷平台、记条件、算通勤、怕踩坑」这些事,交给手机里的 AI 助手和你一起完成。

RentSmart AI 是一款用 AI 重构租房决策流程的移动端工具——从信息采集、智能筛选到风险预警,帮租房者把精力留给真正值得关注的那几套房。


要解决的问题

痛点 现状
信息过载 多平台来回切换,数百条房源靠手动翻页和记忆
决策成本高 价格、通勤、户型无法一次对齐,对比全靠脑记
踩坑风险 中介话术、合同陷阱、虚假房源,缺乏专业判断
工具割裂 看房、算通勤、查法律分散在不同 App

核心功能

1. 多平台聚合 + AI 初筛

一次搜索覆盖 贝壳、安居客、链家 三大平台,DeepSeek 自动评分与简评,不用一个个 App 去翻。

2. 对话式 AI 找房助手

用自然语言描述需求,助手会 先确认理解是否一致,再检索匹配房源。采用 Function Calling Agent 架构,可自主调度查房源、算通勤、搜法律等工具。

3. 深度筛查与风险预警

对重点关注的房源生成深度报告。GLM-4V 多模态模型辅助看图分析,检测话术陷阱与虚假信息,还能自动生成砍价话术。

4. 房源对比 + 通勤计算

最多 5 套候选房横向 PK,集成 高德地图 实时通勤规划,价格与距离不再分开看。

5. RAG 法律知识库

内置租房法律语料,端侧向量检索做语义匹配,大模型基于检索结果生成回答——有据可依,而非空口编造。

6. 本地优先的数据策略

所有数据存储在本机 AsyncStorage,无需注册账号,保护隐私,打开即用。


产品界面


首页

找房

房源详情

AI 助手

房源对比

设置

关键产品决策

为什么让 AI 先"对齐"再找房? 用户描述需求时往往模糊,直接检索容易返回不匹配的结果。让助手先复述需求并请用户确认,减少一轮无效交互。

初筛 + 精筛的两层漏斗 免费的 DeepSeek 做批量评分(初筛),只有用户真正感兴趣的房源才调用多模态模型深度分析(精筛)。兼顾覆盖率和成本。

法律知识为什么用 RAG? 租房法律涉及《民法典》具体条款,大模型直接回答容易编造细节。RAG 路径先检索条文再生成回答,确保有据可依。

Agent 架构而非固定流程 采用 Function Calling Agent,助手可自主决定调用哪个工具,让对话体验更自然灵活,也更容易扩展新能力。


技术选型

方向 技术
方向 技术
:--- :---
跨端应用 React Native (Expo) for Web,路由 expo-router,仅输出移动端 H5
对话与工具调用 DeepSeek Function Calling Agent
深度视觉分析 智谱 GLM-4V 多模态模型
法律知识 关键词检索(H5 不加载端侧向量模型,避免 ~25MB WASM 下载)
地图与通勤 高德地图 JS / REST API
平台抓取 WebView 降级为 iframe:同源 srcDoc(地图选点)可注入脚本;跨域页面仅展示
数据存储 localStorage(Safari 隐私模式自动降级为内存)

使用须知

  • 房源数据依赖对平台页面的扫描,受各平台展示规则影响
  • AI 与地图功能需配置对应 API Key(应用内可配置)
  • 所有内容仅供学习与决策参考,不构成法律意见

免责声明

RentSmart AI 不隶属于安居客、贝壳找房或其他房产平台,为独立工具项目。请遵守各平台用户协议与当地法律法规。

Made with care · 一个产品经理的独立作品


移动端 H5(Mobile Web)

本项目已适配为 纯移动端 H5:原生 App(iOS / Android)分支已移除,统一以浏览器运行, 核心 API(选图 / 定位 / 剪贴板 / 外链)改为浏览器原生能力实现,第三方接口经同源反代绕过跨域限制。

目录结构(H5 相关)

h5-server.mjs           本地服务:dev 反代 Expo Metro + /__cors 反代;serve 静态托管 dist/
scripts/patch-h5-html.mjs  构建后给 dist 内 HTML 注入移动端 viewport / 全局样式
app/lib/platform/      平台能力统一层(H5 实现)
  index.ts / impl.ts   选图·定位·剪贴板·外链
  http.ts              fetch 封装:跨域自动走 /__cors
  kv.ts                localStorage 封装(接口对齐 AsyncStorage)
  h5-shell.ts          运行时注入视口/主题色/安全区样式
app/components/WebViewCompat.tsx   iframe 版 WebView
scraper/server.py       房源抓取后端(Python,需独立启动)

快速开始

# 1. 安装依赖
npm install

# 2. 配置环境变量(复制 .env.example 按需修改)
#    EXPO_PUBLIC_DEEPSEEK_API_KEY / EXPO_PUBLIC_API_KEY_ZHIPU 等
#    EXPO_PUBLIC_SCRAPER_URL 指向抓取后端,默认 http://127.0.0.1:8765

# 3. 启动 H5(开发模式:自动拉起 Expo Metro Web,并反代到 8080)
npm run h5
#   浏览器打开 http://localhost:8080
#   手机同局域网访问:http://<你电脑的局域网IP>:8080 (需 https 才能用定位)

# 4. 构建静态产物并托管
npm run h5:build        # expo export --platform web + 注入移动端 meta
npm run h5:serve        # 用 h5-server.mjs 托管 dist/ 于 8080

跨域反代 /__cors

浏览器同源策略会拦截高德 / DeepSeek / 智谱等第三方接口。app/lib/platform/http.ts 会把绝对跨域 请求改写成同源的 /__cors?u=<原始URL>,由 h5-server.mjs 转发。白名单见 h5-server.mjs 的 ALLOWED_HOSTS(可用环境变量 H5_ALLOW_HOSTS 追加)。

// 业务代码统一使用 httpFetch,跨域会被自动代理
import { httpFetch } from '@/lib/platform/http';
const res = await httpFetch('https://restapi.amap.com/v3/...');

后端抓取服务

房源抓取依赖独立的 Python 服务 scraper/server.py(Flask)。H5 通过 EXPO_PUBLIC_SCRAPER_URL 访问它:

  • 本机调试:http://127.0.0.1:8765(已在白名单,反代放行)
  • 手机访问:需把该变量设为电脑局域网 IP,例如 http://192.168.1.10:8765

启动后端:

cd scraper && python server.py

平台能力对照

能力 原生实现(已移除) H5 实现
选图 expo-image-picker <input type="file"> + FileReader(base64)
定位 expo-location navigator.geolocation(需 HTTPS)
剪贴板 Clipboard navigator.clipboard / execCommand
打开外链 Linking window.open
房源页抓取 react-native-webview 注入 iframe 同源 srcDoc 可注入;跨域仅展示

已知限制

  • 定位需要 HTTPS:navigator.geolocation 在非安全上下文被禁用,内网/局域网手机调试需配 HTTPS 反代。
  • iframe 跨域注入限制:房源站点的跨域页面无法注入脚本读取 DOM,WebViewCompat 会给出降级提示, 深度抓取依赖后端 scraper/server.py 完成。
  • RAG 关键词检索:H5 不加载 @xenova/transformers 向量模型,法律知识库走关键词匹配,语义精度低于端侧向量检索。
  • 移动端 H5 体积:首屏 JS 约 2–3MB(gzip 后约 800KB 量级),字体/图标按需加载。

环境变量示例 .env.example

EXPO_PUBLIC_DEEPSEEK_API_KEY=sk-xxx
EXPO_PUBLIC_API_KEY_ZHIPU=xxx
EXPO_PUBLIC_AMAP_WEB_KEY=xxx          # 高德 JS API key(地图选点)
EXPO_PUBLIC_AMAP_REST_KEY=xxx         # 高德 REST key
EXPO_PUBLIC_SCRAPER_URL=http://127.0.0.1:8765
H5_ALLOW_HOSTS=                       # 额外放行的反代域名,逗号分隔
PORT=8080                             # h5-server 对外端口
EXPO_PORT=8081                        # Expo Metro Web 端口

退押金纠纷助手(整合自 RentSmart)

原 RentSmart 是一个独立的 Vue H5(专注「退押金纠纷」全流程),其框架无关的纯逻辑引擎已整合进本项目, 作为本应用的第 7 项核心能力(租房法律维权的落地工具)。Vue 专属的 store / router / view 未迁移(技术栈不兼容,不可直接复用)。

入口

我的设置 → 维权工具 → 退押金纠纷助手(路由 /deposit-dispute)。

功能

  • 押金结算引擎:应退金额 = 押金 − 扣款合计 + 补偿合计;扣款项须填依据并关联证据,否则提示不合规。
  • 违约金合理性校验:依《民法典》第五百八十五条,超过月租 30% 或金额过大时提示可调减。
  • 诉讼时效计算:依《民法典》第一百八十八条(普通时效 3 年),临期/届满强提醒。
  • 家电折旧 / 自然磨损抗辩:直线法折旧,给出赔付上限与「推定自然老化」结论。
  • 风险规则引擎:覆盖《退押金纠纷场景清单》P0 场景(现金无收据、定金/押金混淆、二房东跑路、扣款无证据、先交钥匙后退押金等)。
  • 维权文书生成:退押金催告函(中断时效)、12345/消协/住建/小额诉讼投诉起诉文本。
  • 证据包导出:结算单 HTML(可另存为 PDF)+ 证据清单 CSV + 文书 + 原始数据 + 验真清单,打包为 ZIP。
  • 全部数据仅存本机 localStorage,不上传服务器。

代码结构

app/lib/refund-dispute/
  index.ts          统一导出
  types.ts          领域模型(MoveOutCase 等)
  settlement.ts     押金结算引擎
  penalty.ts        违约金 / 诉讼时效
  depreciation.ts   折旧折算
  riskRules.ts      风险规则引擎
  legalTemplates.ts 维权文书模板
  exportPack.ts     证据包导出(HTML/CSV/JSON/ZIP)
  format.ts         金额 / 中文大写 / 日期
  hash.ts           证据摘要(SHA-256,降级 FNV-1a)
  watermark.ts      图片水印与验真
  __tests__/        引擎单测(vitest,纯逻辑:depreciation/settlement/riskRules/penalty/templates/exportPack)
app/deposit-dispute.tsx   H5 页面(复用上述引擎)

相关文档

  • docs/refund-dispute/需求文档.md
  • docs/refund-dispute/退押金纠纷场景清单.md
  • docs/refund-dispute/测试用例集.md
  • docs/refund-dispute/测试报告.md

运行引擎单测

npm i -D vitest jsdom
npx vitest run app/lib/refund-dispute/__tests__

(测试覆盖折旧、结算、风险规则、违约金、文书模板、证据包等纯逻辑;Dexie/pinia 专属测试未迁移。)

About

RentSmart AI:面向租房场景的移动端 H5 助手,含退押金纠纷维权引擎

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages