Workspace sync: auto commit 2026-04-23 09:33:08

This commit is contained in:
2026-04-23 09:33:08 +08:00
parent 4652411bf2
commit 42961b7e63
169 changed files with 576 additions and 31 deletions

View File

@@ -1,8 +1,8 @@
# PRD: 房源管理模块
**状态**: Draft
**作者**: 产品经理
**最后更新**: 2026-04-23v1.7 重写第 4 章用户故事与验收标准:由原 5 个 Story 扩展为 11 个,全面覆盖房源录入、列表筛选、状态变更、快捷编辑、跟进记录、钥匙/委托管理、实勘提交、同业主房源、图片管理、附件管理、补全详细信息等所有已文档化功能;补充 5.2.7 附件信息完整需求
**版本**: 1.7
**最后更新**: 2026-04-23v2.0 扩写 Story 8由"查看同业主房源"单一故事扩展为"管理房源业主与联系人"综合故事,拆分为 8.1 新增、8.2 编辑、8.3 查看同业主房源三组验收标准,全面覆盖 5.2.8 章节所有功能
**版本**: 2.0
**所属系统**: Fonrey 房产经纪管理系统
**关联模块**: 客源管理、组织人事管理、权限管理
@@ -184,15 +184,39 @@
---
### Story 8经纪人查看同业主其他房源
### Story 8经纪人管理房源业主与联系人
**As** 一线经纪人,**I want** 在查看某套房源时一键查看该业主名下的其他房源,**So that** 了解业主资产全貌,避免重复打扰、统一谈判
**As** 一线经纪人,**I want** 在房源详情页随时新增、编辑业主/联系人信息,并查看该业主名下的其他房源,**So that** 保持联系人资料准确完整,了解业主资产全貌,避免重复打扰、提升沟通效率
**验收标准**
- [ ] 当业主名下存在其他房源时,详情页右侧业主区块显示提示条:"业主还有其他房源,建议您一起跟进,避免重复打扰"
- [ ] 点击"查看房源"唤起弹窗,展示字段:房源名称(可点击跳转)、状态、城区商圈、房型、面积、售价、租价
- [ ] 当业主有多个关联联系人时,弹窗顶部提供业主下拉选择器,切换后刷新列表
- [ ] 弹窗内标注数据来源提示:"以本页面数据为准"
#### 验收标准 8.1:新增业主/联系人
- [ ] 详情页右侧"业主/联系人"区块提供"新增联系人"按钮,点击触发浮窗,无需跳转页面
- [ ] 浮窗必填项:姓名、性别(先生/女士默认先生、身份、电话1未填写时点击确定触发红色错误提示并定位到未填项
- [ ] 身份单选项包含:业主 / 联系人 / 二房东 / 租客 / 代理人 / 企业法人,默认选中"联系人"
- [ ] 电话1 须通过格式校验:手机号或含区号座机格式(如 021-XXXXXXXX
- [ ] 选填项电话2、微信、QQ、备注文本区域可拖拽调整高度
- [ ] 浮窗底部提供"修改号码相关方"复选框(默认未勾选);勾选后展示说明文字:"申请修改将触发审批流,审批通过可成为号码方",提交后系统自动发起审批流程
- [ ] 保存成功后,右侧"业主/联系人"面板即时刷新,新联系人出现在列表中
- [ ] 新增操作自动写入跟进日志(归类至"其他跟进"
#### 验收标准 8.2:编辑业主/联系人
- [ ] 联系人卡片提供"编辑"按钮,点击触发编辑浮窗,字段与新增一致但行为有差异
- [ ] 浮窗打开时,姓名、性别、身份自动回填已保存值,可直接修改
- [ ] 电话1、电话2 默认以打码形式只读展示(如 `021******03``177******03`),不可直接在字段内编辑
- [ ] 浮窗右上角显示蓝色"查看号码"链接点击后电话1、电话2、微信、QQ 字段同步切换为可编辑明文输入框,同时系统自动写入"敏感信息查看"跟进日志记录(不可手动删除)
- [ ] 微信、QQ 无数据时显示"-",点击"查看号码"后切换为可编辑输入框
- [ ] 编辑浮窗不包含"修改号码相关方"复选框
- [ ] 保存成功后,右侧面板对应联系人卡片信息即时更新
- [ ] 编辑操作自动写入跟进日志(归类至"修改跟进"
#### 验收标准 8.3:查看同业主其他房源
- [ ] 系统通过业主姓名+电话匹配,识别同业主名下其他房源;识别到时,在"业主/联系人"区块顶部显示提示条:"业主还有其他房源,建议您一起跟进,避免重复打扰"
- [ ] 点击"查看房源"唤起"同业主房源"浮窗列表展示字段房源名称可点击跳转详情、状态、城区商圈、房型、面积、售价、租价元/月)
- [ ] 浮窗副标题灰色小字注明:"房源详情提示条存在缓存,以本页面数据为准"
- [ ] 当业主有多个关联联系人时,浮窗顶部显示业主下拉选择器,切换业主后列表实时刷新;仅一位业主时不显示下拉
- [ ] 列表无数据时展示"暂无数据"空状态;列表列数较多时支持横向滚动
---
@@ -1278,30 +1302,111 @@
### 5.2.8 业主联系人
> 📌 **占位章节**:展示和管理与该房源关联的业主及联系人信息,包括姓名、身份、联系方式等。详细字段与交互规则待补充
**功能说明**:展示和管理与该房源关联的全部业主及联系人信息,支持在详情页右侧面板直接发起新增、编辑等浮窗操作,无需离开当前页面
#### 5.2.8.1 同业主房源
---
当系统识别到当前房源的业主名下还有其他房源时,触发以下交互:
#### 5.2.8.1 新增业主/联系人
1. 在房源详情右侧"业主/联系人"区块显示提示条:
> "业主还有其他房源,建议您一起跟进,避免重复打扰"
**入口**详情右侧"业主/联系人"区块 → "新增联系人"按钮触发浮窗
2. 点击"查看房源"触发弹窗,字段如下:
**功能说明**:为当前房源新增一位业主或相关联系人,记录其身份角色和联系方式,用于后续跟进沟通及合规管理。
**浮窗标题**:新增业主/联系人
**浮窗字段**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| 姓名 | 文本输入 | 是 | 联系人真实姓名placeholder"请输入" |
| 性别 | 单选 | 是 | 先生 / 女士,默认选中"先生" |
| 身份 | 单选 | 是 | 业主 / 联系人 / 二房东 / 租客 / 代理人 / 企业法人,默认选中"联系人" |
| 电话1 | 文本输入 | 是 | 手机号或座机座机需写区号placeholder"手机号/座机需要写区号" |
| 电话2 | 文本输入 | 否 | 备用联系电话格式同电话1 |
| 微信 | 文本输入 | 否 | 微信号placeholder"请输入" |
| QQ | 文本输入 | 否 | QQ号placeholder"请输入" |
| 备注 | 文本区域 | 否 | 补充说明可拖拽调整高度placeholder"请输入" |
| 修改号码相关方 | 复选框 | 否 | 勾选后申请将此联系人设为号码方;勾选后显示说明文字:"申请修改将触发审批流,审批通过可成为号码方" |
**交互规则**
- [ ] 姓名、性别、身份、电话1 为必填,未填写时点击确定触发红色错误提示
- [ ] 电话1 须通过手机号/座机格式校验(座机格式:区号-号码)
- [ ] 身份默认选中"联系人",可切换为其他角色
- [ ] "修改号码相关方"复选框默认未勾选;勾选后在复选框下方展示灰色说明文字:"申请修改将触发审批流,审批通过可成为号码方"
- [ ] 勾选"修改号码相关方"后提交,系统自动发起审批流程,审批通过后该联系人成为房源号码方
- [ ] 点击确定保存成功后,右侧"业主/联系人"面板即时刷新,新增联系人出现在列表中
- [ ] 新增联系人操作写入跟进日志(归类至"其他跟进"
---
#### 5.2.8.2 编辑业主/联系人
**入口**:详情页右侧"业主/联系人"区块 → 对应联系人卡片的"编辑"按钮触发浮窗
**功能说明**:修改已有业主或联系人的基本信息及联系方式。与新增浮窗的核心差异在于:电话号码默认打码展示以保护隐私,需主动点击"查看号码"后方可查看并编辑;微信/QQ 无数据时以"-"展示而非空输入框;浮窗不包含"修改号码相关方"复选框。
**浮窗标题**:编辑业主/联系人
**浮窗字段**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| 姓名 | 文本输入 | 是 | 回填已保存姓名,可直接编辑(示例:"方叔叔" |
| 性别 | 单选 | 是 | 先生 / 女士,回填已保存值 |
| 身份 | 单选 | 是 | 业主 / 联系人 / 二房东 / 租客 / 代理人 / 企业法人,回填已保存值 |
| 电话1 | 只读文本(默认打码) | 是 | 默认显示打码号码(如 `021******03`),需点击右上角"查看号码"后方可查看完整号码并进入可编辑状态 |
| 电话2 | 只读文本(默认打码) | 否 | 同电话1有数据时打码展示`177******03`),无数据时不展示 |
| 微信 | 只读文本 | 否 | 有数据时展示值,无数据时显示"-" |
| QQ | 只读文本 | 否 | 有数据时展示值,无数据时显示"-" |
| 备注 | 文本区域 | 否 | 回填已保存备注,可编辑;无数据时显示 placeholder "请输入" |
**查看号码功能**
浮窗右上角(身份字段行末)显示蓝色文字链接"查看号码"及说明图标(ℹ️):
- 点击"查看号码"后电话1、电话2 字段从只读打码状态切换为可编辑的明文输入框
- 查看号码操作触发系统自动生成"敏感信息查看"跟进日志记录,不可手动删除
**交互规则**
- [ ] 浮窗打开时,姓名、性别、身份自动回填已保存值,可直接修改
- [ ] 电话1、电话2 默认以打码形式只读展示,不可直接编辑
- [ ] 点击"查看号码"后,电话字段切换为可编辑明文输入框,同时系统写入"敏感信息查看"日志
- [ ] 姓名、性别、身份、电话1 为必填保存前进行格式校验电话1 须为有效手机号或含区号座机格式)
- [ ] 微信、QQ 无数据时仅展示"-",点击"查看号码"后这两个字段同步切换为可编辑输入框
- [ ] 编辑浮窗不含"修改号码相关方"复选框(号码相关方变更通过其他专项流程处理)
- [ ] 点击确定保存后,右侧面板对应联系人卡片信息即时更新
- [ ] 编辑操作写入跟进日志(归类至"修改跟进"
---
#### 5.2.8.3 查看同业主房源
**入口**:详情页右侧"业主/联系人"区块 → 提示条"查看房源"链接触发浮窗
**触发条件**:系统识别到当前房源的业主(依据业主姓名+电话匹配)名下还登记有其他房源时,在"业主/联系人"区块顶部展示提示条:
> "业主还有其他房源,建议您一起跟进,避免重复打扰"
**浮窗标题**:同业主房源(副标题灰色小字:"房源详情提示条存在缓存,以本页面数据为准"
**浮窗字段**
| 字段 | 说明 |
|------|------|
| 房源名称 | 可点击跳转到对应房源 |
| 状态 | 当前交易状态 |
| 城区商圈 | 所在区域 |
| 房型 | 户型描述 |
| 业主 | 浮窗顶部下拉选择器;当业主有多个关联联系人时,可切换业主后刷新列表 |
| 房源名称 | 可点击跳转至对应房源详情页 |
| 状态 | 当前交易状态(如:出售、暂缓、成交等) |
| 城区商圈 | 房源所在区域及商圈 |
| 房型 | 户型描述3室2厅 |
| 面积 | 建筑面积 |
| 售价(万) | 出售价格 |
| 租价(元/月) | 出租价格 |
| 售价(万) | 出售价格,无售价时显示"—" |
| 租价(元/月) | 出租价格,无租价时显示"—" |
3. 当业主有多个关联联系人时,弹窗顶部提供业主下拉选择器。
4. 弹窗提示注意事项:"房源详情提示条存在缓存,以本页面数据为准"
**交互规则**
- [ ] 弹窗顶部"业主"下拉选择器默认展示当前房源的第一位业主,列表内容随选中业主实时刷新
- [ ] 仅当业主名下有多个关联联系人时,才显示业主下拉选择器;只有一位时无需展示下拉
- [ ] 房源列表无数据时,展示"暂无数据"空状态
- [ ] 列表区域支持横向滚动(字段列数较多时)
- [ ] 点击房源名称直接跳转至对应房源详情页,当前浮窗关闭
---

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 941 KiB

After

Width:  |  Height:  |  Size: 941 KiB

View File

Before

Width:  |  Height:  |  Size: 988 KiB

After

Width:  |  Height:  |  Size: 988 KiB

View File

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 234 KiB

View File

Before

Width:  |  Height:  |  Size: 639 KiB

After

Width:  |  Height:  |  Size: 639 KiB

View File

Before

Width:  |  Height:  |  Size: 739 KiB

After

Width:  |  Height:  |  Size: 739 KiB

View File

Before

Width:  |  Height:  |  Size: 854 KiB

After

Width:  |  Height:  |  Size: 854 KiB

View File

Before

Width:  |  Height:  |  Size: 840 KiB

After

Width:  |  Height:  |  Size: 840 KiB

View File

Before

Width:  |  Height:  |  Size: 949 KiB

After

Width:  |  Height:  |  Size: 949 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

Before

Width:  |  Height:  |  Size: 474 KiB

After

Width:  |  Height:  |  Size: 474 KiB

View File

Before

Width:  |  Height:  |  Size: 889 KiB

After

Width:  |  Height:  |  Size: 889 KiB

View File

Before

Width:  |  Height:  |  Size: 396 KiB

After

Width:  |  Height:  |  Size: 396 KiB

View File

Before

Width:  |  Height:  |  Size: 718 KiB

After

Width:  |  Height:  |  Size: 718 KiB

View File

Before

Width:  |  Height:  |  Size: 710 KiB

After

Width:  |  Height:  |  Size: 710 KiB

View File

Before

Width:  |  Height:  |  Size: 804 KiB

After

Width:  |  Height:  |  Size: 804 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 715 KiB

After

Width:  |  Height:  |  Size: 715 KiB

View File

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 250 KiB

View File

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

View File

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 211 KiB

View File

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 247 KiB

View File

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 240 KiB

View File

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 238 KiB

View File

Before

Width:  |  Height:  |  Size: 454 KiB

After

Width:  |  Height:  |  Size: 454 KiB

View File

Before

Width:  |  Height:  |  Size: 326 KiB

After

Width:  |  Height:  |  Size: 326 KiB

View File

Before

Width:  |  Height:  |  Size: 724 KiB

After

Width:  |  Height:  |  Size: 724 KiB

View File

Before

Width:  |  Height:  |  Size: 349 KiB

After

Width:  |  Height:  |  Size: 349 KiB

View File

Before

Width:  |  Height:  |  Size: 386 KiB

After

Width:  |  Height:  |  Size: 386 KiB

View File

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View File

Before

Width:  |  Height:  |  Size: 588 KiB

After

Width:  |  Height:  |  Size: 588 KiB

View File

Before

Width:  |  Height:  |  Size: 457 KiB

After

Width:  |  Height:  |  Size: 457 KiB

View File

Before

Width:  |  Height:  |  Size: 614 KiB

After

Width:  |  Height:  |  Size: 614 KiB

View File

Before

Width:  |  Height:  |  Size: 517 KiB

After

Width:  |  Height:  |  Size: 517 KiB

View File

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

View File

Before

Width:  |  Height:  |  Size: 581 KiB

After

Width:  |  Height:  |  Size: 581 KiB

View File

Before

Width:  |  Height:  |  Size: 326 KiB

After

Width:  |  Height:  |  Size: 326 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

Before

Width:  |  Height:  |  Size: 449 KiB

After

Width:  |  Height:  |  Size: 449 KiB

View File

Before

Width:  |  Height:  |  Size: 459 KiB

After

Width:  |  Height:  |  Size: 459 KiB

View File

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 183 KiB

View File

Before

Width:  |  Height:  |  Size: 905 KiB

After

Width:  |  Height:  |  Size: 905 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 906 KiB

After

Width:  |  Height:  |  Size: 906 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 328 KiB

After

Width:  |  Height:  |  Size: 328 KiB

View File

Before

Width:  |  Height:  |  Size: 316 KiB

After

Width:  |  Height:  |  Size: 316 KiB

View File

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 236 KiB

View File

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View File

Before

Width:  |  Height:  |  Size: 331 KiB

After

Width:  |  Height:  |  Size: 331 KiB

View File

Before

Width:  |  Height:  |  Size: 294 KiB

After

Width:  |  Height:  |  Size: 294 KiB

View File

Before

Width:  |  Height:  |  Size: 520 KiB

After

Width:  |  Height:  |  Size: 520 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 801 KiB

After

Width:  |  Height:  |  Size: 801 KiB

View File

Before

Width:  |  Height:  |  Size: 791 KiB

After

Width:  |  Height:  |  Size: 791 KiB

View File

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 200 KiB

View File

Before

Width:  |  Height:  |  Size: 526 KiB

After

Width:  |  Height:  |  Size: 526 KiB

View File

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 275 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

Before

Width:  |  Height:  |  Size: 743 KiB

After

Width:  |  Height:  |  Size: 743 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 MiB

After

Width:  |  Height:  |  Size: 5.8 MiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View File

Before

Width:  |  Height:  |  Size: 227 KiB

After

Width:  |  Height:  |  Size: 227 KiB

View File

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 221 KiB

Some files were not shown because too many files have changed in this diff Show More