review 结果
This commit is contained in:
@@ -3,8 +3,7 @@
|
||||
**状态**:Draft
|
||||
**作者**:产品经理
|
||||
**最后更新**:2026-05-02
|
||||
**版本**:v1.0
|
||||
**所属系统**:Fonrey 房产经纪管理系统
|
||||
**版本**:v1.1
|
||||
**关联模块**:权限管理(仅平台侧管理员账号体系)、登录管理(管理员登录与 MFA)、所有租户业务模块(间接,仅作运营/监控对象)
|
||||
**利益相关方**:工程负责人、运营团队、安全合规、客户成功团队、IT 运维
|
||||
|
||||
@@ -15,6 +14,7 @@
|
||||
| 版本 | 日期 | 作者 | 变更说明 |
|
||||
|------|------|------|---------|
|
||||
| v1.0 | 2026-05-02 | 产品经理 | 由 `PRD/系统管理/系统管理模块PRD.md` (v1.3) 与 `PRD/发布管理/客户端发布管理模块PRD.md` (v1.2) 合并而来;统一面向平台管理员视角,统一规划页面路由与业务 API 操作清单。原两份 PRD 文件同步删除,参见 `ADR-20260502-001`。 |
|
||||
| v1.1 | 2026-05-02 | 产品经理 | **修复 P-B-1**:全部用户故事补齐功能编号 PA-001 ~ PA-011,与登录管理 PRD v3.0「功能 ID + 验收标准」风格对齐,建立需求→测试用例→Bug 单可追溯链条。**修复 X-1**:新增 PA-011「租户注销 SOP」用户故事(Persona E),覆盖删除前数据导出确认、双人复核审批流程、30 天冷静期可撤销机制;同步更新租户状态机(新增 Pending Cancellation 状态节点)、权限矩阵(新增注销审批相关操作行)、§5.1.4 删除章节(引用 PA-011 SOP)、§5.4 页面导航逻辑(注销审批待办流程)、租户列表筛选(新增 Pending Cancellation / Pending Delete 状态)、§5.5.1 API 操作清单(新增注销发起、审批、撤销、硬删除操作项)。 |
|
||||
|
||||
> **本 PRD 取代以下两份历史文档**:
|
||||
> - `PRD/系统管理/系统管理模块PRD.md`(v1.3,已删除,被本 PRD 替代)
|
||||
@@ -104,7 +104,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
|
||||
> 负责 Fonrey 的日常运营,每天处理新客户开通、异常租户处理、客户咨询。使用 PC 浏览器登录平台管理后台。
|
||||
|
||||
#### Story A1:新租户开通
|
||||
#### PA-001 Story A1:新租户开通
|
||||
|
||||
> 作为运营人员,我希望通过填写表单快速完成租户开通,并由系统自动完成数据库初始化与欢迎通知,无需手动执行脚本。
|
||||
|
||||
@@ -133,7 +133,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- 入口:租户详情 → 基本信息 Tab → 「下载入驻信息」按钮
|
||||
- 文件名:`{公司名称}_入驻信息_{日期}.pdf`
|
||||
|
||||
#### Story A2:挂起问题租户
|
||||
#### PA-002 Story A2:挂起问题租户
|
||||
|
||||
> 作为运营人员,我希望快速冻结欠费租户的访问,同时保证数据不丢失,并在欠费解决后一键恢复。
|
||||
|
||||
@@ -142,7 +142,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- [ ] 支持设置到期时间,到期后系统自动恢复租户状态,并发送通知邮件
|
||||
- [ ] 所有挂起 / 恢复操作记录于审计日志,包含操作人、时间、原因
|
||||
|
||||
#### Story A3:License 时效管理与到期自动挂起
|
||||
#### PA-003 Story A3:License 时效管理与到期自动挂起
|
||||
|
||||
> 作为运营人员(或 Platform Admin),我希望每个租户能设置 License 有效期,到期后系统自动挂起租户,并在到期前提前预警。
|
||||
|
||||
@@ -154,7 +154,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- [ ] 倒计时横幅仅对 Tenant Admin 可见,不影响普通 Agent
|
||||
- [ ] License 到期日期在租户列表与详情页均可见,支持「即将到期(15 天内)」筛选
|
||||
|
||||
#### Story A4:查看与控制租户用户数(License 计费维度)
|
||||
#### PA-004 Story A4:查看与控制租户用户数(License 计费维度)
|
||||
|
||||
> 作为运营人员(或 Platform Admin),我希望看到每个租户的当前用户数,并能设置用户数上限,以便根据 License 授权进行管控。
|
||||
|
||||
@@ -165,15 +165,63 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- [ ] Platform Admin 可随时调整用户数上限(扩容 / 缩容),变更写入审计日志
|
||||
- [ ] 租户列表支持按「用户数已满(≥ 上限)」筛选,便于平台运营主动识别需续费的租户
|
||||
|
||||
> **Story A5:响应客户数据导出请求** — **状态**:暂缓(v1 不实现,列入后续迭代)。
|
||||
> **PA-011 Story A5:响应客户数据导出请求** — **状态**:暂缓(v1 不实现,列入后续迭代)。
|
||||
|
||||
---
|
||||
|
||||
### Persona E — Platform Admin David(租户注销合规流程)
|
||||
|
||||
> 处理租户主动申请注销或因严重违规被强制注销的场景。注销操作不可逆(硬删除后),需要多重防护——数据导出存证、双人复核、30 天冷静期撤销窗口。
|
||||
|
||||
#### PA-011 Story E1:租户注销 SOP(Tenant Cancellation SOP)
|
||||
|
||||
> 作为 Platform Admin,我希望执行租户注销时有标准化的审批流程保障——要求数据导出完成、双人复核授权、30 天冷静期可撤销——防止因误操作或内部滥权导致客户数据不可恢复地丢失。
|
||||
|
||||
**验收标准(AC)**:
|
||||
|
||||
**AC-1 发起注销申请**
|
||||
- [ ] 运营人员或 Platform Admin 可在租户详情页发起「注销申请」,填写:注销原因(客户主动申请 / 严重违规 / 其他)、申请说明(自由文本)
|
||||
- [ ] 发起后,租户状态流转至 `Pending Cancellation`(待审批注销),此时租户访问被阻断(等同挂起效果),不可通过常规「恢复」操作解除
|
||||
- [ ] 发起操作写入审计日志
|
||||
|
||||
**AC-2 数据导出前置确认**
|
||||
- [ ] 进入审批流程前,系统强制展示「数据导出确认」步骤:要求操作人触发该租户的完整数据导出(§5.1.5),等待导出任务完成(状态 Done)后方可提交审批
|
||||
- [ ] 若申请人选择「客户已自行备份,无需平台导出」,需勾选明确确认框,并填写备注(客户签字回执编号或说明),此记录写入审计日志
|
||||
- [ ] 审批单中需展示:导出任务 ID(或「已确认客户自备份」备注)、导出完成时间
|
||||
|
||||
**AC-3 双人复核审批**
|
||||
- [ ] 注销审批流需要第二名 Platform Admin(不得与申请人为同一账号)在系统内确认审批,确认时需通过 MFA 二次验证
|
||||
- [ ] 审批人可「批准」或「驳回」:驳回时必须填写驳回原因;驳回后租户状态恢复至 `Suspended`(仍不可直接恢复为 Active,需运营人员手动解除挂起)
|
||||
- [ ] 若 48 小时内无人审批,系统向所有 Platform Admin 发送催审通知(站内消息 + 邮件)
|
||||
|
||||
**AC-4 软删除与 30 天冷静期**
|
||||
- [ ] 审批通过后,租户立即进入软删除状态(`Pending Delete`,现有机制);冷静期默认 30 天
|
||||
- [ ] 冷静期内,Platform Admin 可在租户列表「待清除」筛选下找到该租户,执行「撤销注销」
|
||||
- [ ] 撤销注销需第二名 Platform Admin 同样通过 MFA 确认(与初始注销审批相同的双人复核机制)
|
||||
- [ ] 撤销成功后,租户状态恢复至 `Suspended`(需运营人员手动评估后恢复为 Active);撤销操作及原因写入审计日志
|
||||
|
||||
**AC-5 硬删除与资源释放**
|
||||
- [ ] 冷静期届满后,系统自动触发硬删除,或 Platform Admin 可在冷静期内提前手动触发硬删除(需再次 MFA 确认,并再次展示「此操作不可逆」警告)
|
||||
- [ ] 硬删除释放:PostgreSQL Schema、Cloudflare R2 存储桶、Tenant Code、License 席位
|
||||
- [ ] 硬删除完成后:向租户联系邮箱发送「账号已注销」通知(含注销日期、数据保留期说明);审计日志记录完整操作链
|
||||
|
||||
**注销状态流转**(补充至 §7 状态机):
|
||||
```
|
||||
[活跃 Active] 或 [已挂起 Suspended]
|
||||
↓ 运营/Platform Admin 发起注销申请
|
||||
[待审批注销 Pending Cancellation]
|
||||
↓ 双人 MFA 审批通过
|
||||
[待清除 Pending Delete](冷静期 30 天)
|
||||
↓ 可在冷静期内由双人 MFA 撤销 → 恢复至 [已挂起 Suspended]
|
||||
↓ 冷静期届满 或 提前手动硬删除(MFA)
|
||||
[已删除 Deleted]
|
||||
```
|
||||
|
||||
### Persona B — Platform Admin David(系统升级、回滚与版本治理)
|
||||
|
||||
> 负责平台技术运维,周期性执行版本升级,关注升级稳定性与租户影响面。拥有所有高危操作权限。
|
||||
|
||||
#### Story B1:灰度系统升级
|
||||
#### PA-005 Story B1:灰度系统升级
|
||||
|
||||
> 作为 Platform Admin,我希望先对内测租户升级新版本,验证稳定后再全量推送,避免一次性影响所有客户。
|
||||
|
||||
@@ -183,7 +231,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- [ ] 升级过程实时展示进度(每个租户的升级状态),支持查看升级日志
|
||||
- [ ] 升级失败时系统自动告警,并提供一键回滚入口
|
||||
|
||||
#### Story B2:升级失败回滚
|
||||
#### PA-006 Story B2:升级失败回滚
|
||||
|
||||
> 作为 Platform Admin,我希望在升级出现问题时立即回滚至上一稳定版本,并生成事件报告。
|
||||
|
||||
@@ -193,7 +241,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- [ ] 回滚完成后生成事件报告:失败原因、回滚耗时、影响范围
|
||||
- [ ] 回滚操作需二次身份验证确认(MFA)
|
||||
|
||||
#### Story B3:查看平台与租户版本总览
|
||||
#### PA-007 Story B3:查看平台与租户版本总览
|
||||
|
||||
> 作为 Platform Admin,我希望在管理界面一眼看到整个平台的版本情况,包括基础数据版本和每个租户各自的数据升级版本。
|
||||
|
||||
@@ -221,7 +269,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
|
||||
> 同 Persona B,但聚焦桌面客户端版本上线、强制升级与跨租户版本分布。
|
||||
|
||||
#### Story C1:发布新版本客户端
|
||||
#### PA-008 Story C1:发布新版本客户端
|
||||
|
||||
> 作为 Platform Admin,我希望通过本后台上传新版客户端安装包并配置版本信息,使全平台所有租户的客户端能感知到更新并引导升级。
|
||||
|
||||
@@ -239,7 +287,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- [ ] 支持版本回滚:将指定历史版本重新置为「已发布」,自动将当前版本标记为「已下线」
|
||||
- [ ] 支持便携版(Portable ZIP)作为可选上传项
|
||||
|
||||
#### Story C2:跨租户监控客户端版本分布
|
||||
#### PA-009 Story C2:跨租户监控客户端版本分布
|
||||
|
||||
> 作为 Platform Admin,我希望跨租户查看当前所有在线客户端的版本分布,以了解全平台升级覆盖率,对仍使用旧版本的客户端发出提醒或强制升级。
|
||||
|
||||
@@ -259,7 +307,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
|
||||
> 负责平台合规审查,定期导出操作日志供法务或客户审查。无任何写权限。
|
||||
|
||||
#### Story D1:审计日志查询与导出
|
||||
#### PA-010 Story D1:审计日志查询与导出
|
||||
|
||||
> 作为审计员,我希望按操作人、时间范围、操作类型筛选操作日志,并导出为报告。
|
||||
|
||||
@@ -320,15 +368,18 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
|
||||
#### 5.1.4 删除(Delete)
|
||||
|
||||
> **注意**:租户注销是高危操作,须遵循「PA-011 租户注销 SOP」——发起注销申请 → 强制数据导出确认 → 双人 MFA 复核审批 → 软删除(30 天冷静期,可撤销)→ 自动或提前手动硬删除。**不允许绕过此 SOP 直接执行删除。**
|
||||
|
||||
| 模式 | 说明 |
|
||||
|------|------|
|
||||
| 软删除 | 标记删除状态,数据保留 30 天(默认,可配置)后自动清除 |
|
||||
| 硬删除 | 立即清除所有数据、Schema、存储资源;仅 Platform Admin 可操作 |
|
||||
| 软删除(Pending Delete) | SOP 审批通过后自动进入;数据保留 30 天(默认,可配置)后自动清除 |
|
||||
| 硬删除 | 冷静期内 Platform Admin 提前触发(需 MFA + 不可逆警告),或冷静期届满自动触发;仅 Platform Admin 可操作 |
|
||||
|
||||
**删除前置条件**:
|
||||
1. 操作人必须确认数据导出已完成(勾选确认框)
|
||||
2. 硬删除需 MFA 二次验证
|
||||
3. 软删除冷静期内可在租户列表中执行「撤销删除」
|
||||
**删除前置条件(PA-011 SOP 强制执行)**:
|
||||
1. 发起申请时必须填写注销原因
|
||||
2. 审批前强制完成数据导出确认(平台导出 Done 或客户自备份书面确认)
|
||||
3. 须第二名 Platform Admin(≠ 申请人)MFA 审批通过
|
||||
4. 软删除冷静期内可由双人 MFA 执行「撤销注销」
|
||||
|
||||
删除完成后释放:访问域名 / Tenant Code、Cloudflare R2 存储桶、License 席位
|
||||
|
||||
@@ -563,7 +614,10 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- 「系统版本管理」中点击某租户行 → 跳转到该租户的「备份记录」Tab
|
||||
- 「客户端版本管理」中点击「全平台租户活跃榜」中的租户名称 → 跳转到该租户「基本信息」Tab
|
||||
- 客户端版本「发布 / 下线 / 强制更新推送」操作 → 二次确认;强制更新推送额外要求 MFA
|
||||
- 任何高危操作(删除租户、数据恢复、系统回滚、客户端版本下线、强制更新推送)触发 MFA 二次确认弹窗
|
||||
- 任何高危操作(删除/注销租户、数据恢复、系统回滚、客户端版本下线、强制更新推送)触发 MFA 二次确认弹窗
|
||||
- 租户详情「基本信息」页面,Platform Admin / 运营人员可发起「注销申请」;状态为 `Pending Cancellation` 时,原「挂起/恢复」按钮隐藏,显示「查看注销审批单」入口
|
||||
- 注销审批待办:系统向第二名 Platform Admin 发送站内通知;点击通知进入审批单详情,展示申请人、注销原因、数据导出确认记录,提供「批准(MFA)」/「驳回」操作
|
||||
- 审批批准后,租户自动进入 `Pending Delete`;租户列表「待清除」筛选下可见,提供「撤销注销(双人 MFA)」和「提前硬删除(MFA)」入口
|
||||
- 用户超过 30 分钟无操作 → 自动登出,下次操作跳转登录页
|
||||
- 「管理员设置」中 Platform Admin 强制登出某管理员 → 该管理员的所有会话立即失效,下次请求跳转登录页
|
||||
|
||||
@@ -582,7 +636,7 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
|
||||
- 分页(默认 20 条/页)
|
||||
- 搜索:公司名称、Tenant Code、联系邮箱关键词
|
||||
- 筛选:状态(Active / Suspended / Deleted)、套餐、注册时间、**即将到期(15 天内)**、**用户数已满**
|
||||
- 筛选:状态(Active / Suspended / Pending Cancellation / Pending Delete / Deleted)、套餐、注册时间、**即将到期(15 天内)**、**用户数已满**
|
||||
- 列:公司名称、Tenant Code、套餐、状态、注册时间、活跃用户数 / License 上限、客户端最新版本占比
|
||||
- 快捷操作:查看详情、挂起、发起备份、数据导出
|
||||
|
||||
@@ -599,8 +653,12 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
- 平台管理员需要能创建新租户(含异步初始化 Schema 与默认配置)
|
||||
- 平台管理员需要能编辑租户基本信息(公司名、联系人、邮箱、地区)
|
||||
- 平台管理员需要能挂起 / 恢复租户(含挂起原因、到期时间)
|
||||
- 平台管理员需要能软删除 / 硬删除租户(硬删除需 MFA)
|
||||
- 平台管理员需要能撤销软删除(冷静期内)
|
||||
- 平台管理员(运营人员)需要能发起租户注销申请(PA-011 SOP:填写原因、完成数据导出确认)
|
||||
- 第二名 Platform Admin 需要能审批租户注销申请(批准需 MFA;驳回需填写驳回原因)
|
||||
- 平台管理员需要能在冷静期内撤销租户注销(双人 MFA)
|
||||
- 平台管理员需要能在冷静期内提前手动触发硬删除(MFA + 不可逆确认)
|
||||
- 系统需能在冷静期届满后自动触发硬删除并释放所有资源
|
||||
- 平台管理员需要能软删除 / 硬删除租户(仅限通过 PA-011 SOP 触发,不提供绕过 SOP 的直接删除入口)
|
||||
- 平台管理员需要能调整租户的 License 到期日期
|
||||
- 平台管理员需要能调整租户的 License 授权用户数上限
|
||||
- 平台管理员需要能升级租户套餐
|
||||
@@ -704,11 +762,14 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
## 6. 角色权限矩阵
|
||||
|
||||
| 操作 | Platform Admin | 运营人员 | 只读审计员 |
|
||||
|------|---------------|---------|-----------|
|
||||
|------|---------------|---------|-----------||
|
||||
| 创建租户 | ✅ | ✅ | ❌ |
|
||||
| 挂起 / 恢复租户 | ✅ | ✅ | ❌ |
|
||||
| 软删除租户 | ✅ | ✅ | ❌ |
|
||||
| 硬删除租户 | ✅ | ❌ | ❌ |
|
||||
| 发起租户注销申请(PA-011 SOP) | ✅ | ✅ | ❌ |
|
||||
| 审批注销申请(第二人复核,MFA) | ✅ | ❌ | ❌ |
|
||||
| 撤销注销(冷静期内,双人 MFA) | ✅ | ❌ | ❌ |
|
||||
| 提前手动硬删除(MFA) | ✅ | ❌ | ❌ |
|
||||
| 软删除 → Pending Delete(仅经 SOP 自动触发) | 系统自动 | — | — |
|
||||
| 调整 License 到期日期 / 用户数上限 | ✅ | ✅ | ❌ |
|
||||
| 数据导出 | ✅ | ✅ | ❌ |
|
||||
| 手动触发备份 | ✅ | ✅ | ❌ |
|
||||
@@ -737,12 +798,18 @@ Fonrey(房睿)是面向房产经纪公司的 B2B SaaS 平台,采用 `djang
|
||||
[活跃 Active] ←──────────────────┐
|
||||
↓ 手动 / License 到期挂起 │ 到期自动恢复(仅手动挂起且设置了到期时间)/ 手动恢复
|
||||
[已挂起 Suspended] ───────────────┘
|
||||
↓ 删除操作(软删除)
|
||||
↓ 运营/PA 发起注销申请(PA-011)
|
||||
[待审批注销 Pending Cancellation]
|
||||
↓ 驳回(第二名 PA)→ [已挂起 Suspended]
|
||||
↓ 批准(第二名 PA,MFA)
|
||||
[待清除 Pending Delete](冷静期 30 天)
|
||||
↓ 冷静期到期 / 硬删除
|
||||
↓ 双人 MFA 撤销注销 → [已挂起 Suspended]
|
||||
↓ 冷静期届满(自动)/ 提前手动硬删除(MFA)
|
||||
[已删除 Deleted]
|
||||
```
|
||||
|
||||
> **注意**:Active / Suspended 状态下均可发起注销申请(后者更常见)。不允许直接跳过 SOP 从任何状态进入 Pending Delete 或 Deleted。
|
||||
|
||||
---
|
||||
|
||||
## 8. 不构建清单(What We're NOT Building)
|
||||
|
||||
Reference in New Issue
Block a user