review 结果

This commit is contained in:
Shen Wei
2026-05-02 16:21:46 +08:00
parent ca33cc141f
commit 90f3811b83
10 changed files with 1448 additions and 1484 deletions

View File

@@ -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 A3License 时效管理与到期自动挂起
#### PA-003 Story A3License 时效管理与到期自动挂起
> 作为运营人员(或 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租户注销 SOPTenant 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]
↓ 批准(第二名 PAMFA
[待清除 Pending Delete](冷静期 30 天)
冷静期到期 / 硬删除
双人 MFA 撤销注销 → [已挂起 Suspended]
↓ 冷静期届满(自动)/ 提前手动硬删除MFA
[已删除 Deleted]
```
> **注意**Active / Suspended 状态下均可发起注销申请(后者更常见)。不允许直接跳过 SOP 从任何状态进入 Pending Delete 或 Deleted。
---
## 8. 不构建清单What We're NOT Building