3208 lines
39 KiB
Markdown
3208 lines
39 KiB
Markdown
# 丹阳公益婚恋服务平台
|
||
# V1.0 运营管理后台与组织权限体系详细设计
|
||
|
||
版本:V1.0
|
||
适用范围:平台管理员、妇联、工会、公益服务中心、公益红娘、审核员、活动管理员、风控员、志愿者
|
||
核心目标:统一后台、统一账号、按角色授权、按组织隔离、敏感权限最小化、关键操作可审计
|
||
|
||
---
|
||
|
||
# 第一章 设计目标
|
||
|
||
V1.0后台不是单纯的数据管理工具。
|
||
|
||
它必须同时承担:
|
||
|
||
- 用户管理
|
||
- 资料审核
|
||
- 匹配规则管理
|
||
- 公益红娘管理
|
||
- 活动管理
|
||
- 举报风控
|
||
- 组织管理
|
||
- 工作人员管理
|
||
- 权限管理
|
||
- 数据统计
|
||
- 安全审计
|
||
|
||
后台设计必须解决以下核心问题:
|
||
|
||
1. 谁可以登录
|
||
2. 谁可以看到哪些菜单
|
||
3. 谁可以看到哪些用户
|
||
4. 谁可以处理哪些任务
|
||
5. 谁可以查看敏感信息
|
||
6. 不同组织之间如何隔离
|
||
7. 多角色人员如何授权
|
||
8. 工作人员离职如何立即失效
|
||
9. 重大操作如何审计
|
||
10. 如何避免“一个管理员什么都能看”
|
||
|
||
核心原则:
|
||
|
||
> **一个后台,一套账号,多角色、多权限、多组织数据范围。**
|
||
|
||
---
|
||
|
||
# 第二章 V1后台总体架构建议
|
||
|
||
推荐:
|
||
|
||
> **公益红娘工作台、运营管理后台、平台管理后台使用同一个响应式Web应用。**
|
||
|
||
通过:
|
||
|
||
```text
|
||
账号
|
||
+
|
||
角色
|
||
+
|
||
权限
|
||
+
|
||
数据范围
|
||
```
|
||
|
||
决定用户看到什么。
|
||
|
||
而不是开发三套完全独立后台。
|
||
|
||
---
|
||
|
||
# 第三章 为什么推荐统一后台
|
||
|
||
统一后台可以减少:
|
||
|
||
- 三套登录
|
||
- 三套用户体系
|
||
- 三套权限代码
|
||
- 三套组件
|
||
- 三套部署
|
||
- 三套维护
|
||
|
||
技术上统一。
|
||
|
||
业务上:
|
||
|
||
> 不同角色看到不同工作界面。
|
||
|
||
---
|
||
|
||
# 第四章 后台入口
|
||
|
||
统一:
|
||
|
||
```text
|
||
/admin
|
||
```
|
||
|
||
或正式域名:
|
||
|
||
```text
|
||
https://admin.example.com
|
||
```
|
||
|
||
登录后根据权限进入对应首页。
|
||
|
||
---
|
||
|
||
# 第五章 Operator统一账号模型
|
||
|
||
所有工作人员统一:
|
||
|
||
```text
|
||
operators
|
||
```
|
||
|
||
包括:
|
||
|
||
- 平台管理员
|
||
- 机构管理员
|
||
- 审核员
|
||
- 公益红娘
|
||
- 活动管理员
|
||
- 风控员
|
||
- 志愿者
|
||
|
||
不要为红娘、管理员、志愿者分别做独立账号表。
|
||
|
||
---
|
||
|
||
# 第六章 Operator基本属性
|
||
|
||
至少包含:
|
||
|
||
```text
|
||
operatorId
|
||
name
|
||
organizationId
|
||
status
|
||
roles
|
||
permissions
|
||
lastLoginAt
|
||
```
|
||
|
||
---
|
||
|
||
# 第七章 OperatorStatus
|
||
|
||
建议:
|
||
|
||
```text
|
||
active
|
||
disabled
|
||
locked
|
||
expired
|
||
```
|
||
|
||
含义:
|
||
|
||
### active
|
||
|
||
正常。
|
||
|
||
### disabled
|
||
|
||
人工停用。
|
||
|
||
### locked
|
||
|
||
安全锁定。
|
||
|
||
### expired
|
||
|
||
临时账号已到期。
|
||
|
||
---
|
||
|
||
# 第八章 一个Operator可以拥有多个角色
|
||
|
||
例如:
|
||
|
||
某公益服务中心负责人:
|
||
|
||
```text
|
||
organization_admin
|
||
+
|
||
activity_manager
|
||
```
|
||
|
||
某工作人员:
|
||
|
||
```text
|
||
matchmaker
|
||
+
|
||
activity_manager
|
||
```
|
||
|
||
允许。
|
||
|
||
但权限最终取:
|
||
|
||
> 已授权角色的权限合集 + 数据范围限制。
|
||
|
||
---
|
||
|
||
# 第九章 角色与权限必须分离
|
||
|
||
角色:
|
||
|
||
```text
|
||
matchmaker
|
||
```
|
||
|
||
是一组权限模板。
|
||
|
||
权限:
|
||
|
||
```text
|
||
matchmaker.service.view
|
||
```
|
||
|
||
才是真正的操作能力。
|
||
|
||
不要在代码里写:
|
||
|
||
```text
|
||
if role == matchmaker
|
||
```
|
||
|
||
决定所有行为。
|
||
|
||
---
|
||
|
||
# 第十章 V1默认角色
|
||
|
||
建议:
|
||
|
||
```text
|
||
super_admin
|
||
platform_admin
|
||
organization_admin
|
||
reviewer
|
||
matchmaker
|
||
activity_manager
|
||
risk_operator
|
||
volunteer
|
||
data_viewer
|
||
```
|
||
|
||
---
|
||
|
||
# 第十一章 super_admin
|
||
|
||
定位:
|
||
|
||
> 平台最高技术/系统管理权限。
|
||
|
||
权限包括:
|
||
|
||
- 系统配置
|
||
- 组织管理
|
||
- 权限管理
|
||
- 高级安全管理
|
||
|
||
不建议日常运营人员使用此账号。
|
||
|
||
---
|
||
|
||
# 第十二章 platform_admin
|
||
|
||
负责平台日常运营。
|
||
|
||
可管理:
|
||
|
||
- 用户
|
||
- 审核
|
||
- 红娘
|
||
- 活动
|
||
- 风控
|
||
- 统计
|
||
|
||
但是否有:
|
||
|
||
> 完整身份证查看
|
||
|
||
仍应单独授权。
|
||
|
||
---
|
||
|
||
# 第十三章 organization_admin
|
||
|
||
负责某一个参与组织。
|
||
|
||
例如:
|
||
|
||
- 妇联
|
||
- 工会
|
||
- 公益服务中心
|
||
|
||
只能管理:
|
||
|
||
> 本组织授权范围内的数据和工作人员。
|
||
|
||
---
|
||
|
||
# 第十四章 reviewer
|
||
|
||
负责:
|
||
|
||
> 用户资料审核。
|
||
|
||
可以:
|
||
|
||
- 查看审核资料
|
||
- 领取审核
|
||
- 通过
|
||
- 退回
|
||
- 拒绝
|
||
|
||
不能:
|
||
|
||
- 修改平台权限
|
||
- 查看聊天
|
||
- 任意封禁用户
|
||
- 管理其他机构
|
||
|
||
---
|
||
|
||
# 第十五章 matchmaker
|
||
|
||
负责:
|
||
|
||
- 红娘服务
|
||
- 查看服务用户必要资料
|
||
- 系统候选
|
||
- 人工推荐
|
||
- 跟进
|
||
- 活动推荐
|
||
|
||
不能:
|
||
|
||
- 查看身份证
|
||
- 查看聊天
|
||
- 直接封禁
|
||
- 修改匹配算法
|
||
- 管理权限
|
||
|
||
---
|
||
|
||
# 第十六章 activity_manager
|
||
|
||
负责:
|
||
|
||
- 创建活动
|
||
- 编辑活动
|
||
- 报名审核
|
||
- 签到管理
|
||
- 活动统计
|
||
- 现场异常上报
|
||
|
||
不能:
|
||
|
||
- 查看聊天
|
||
- 查看身份证
|
||
- 修改用户匹配关系
|
||
- 修改平台权限
|
||
|
||
---
|
||
|
||
# 第十七章 risk_operator
|
||
|
||
负责:
|
||
|
||
- 举报
|
||
- 风险事件
|
||
- 用户风险分析
|
||
- 风控处置
|
||
- 申诉处理
|
||
|
||
根据权限可以:
|
||
|
||
- 限制
|
||
- 暂停
|
||
- 封禁
|
||
|
||
敏感聊天访问:
|
||
|
||
> 仍应独立权限控制。
|
||
|
||
---
|
||
|
||
# 第十八章 volunteer
|
||
|
||
最低权限角色。
|
||
|
||
用于:
|
||
|
||
- 活动签到
|
||
- 简单现场辅助
|
||
|
||
只应看到:
|
||
|
||
> 当前活动必要信息。
|
||
|
||
---
|
||
|
||
# 第十九章 data_viewer
|
||
|
||
用于:
|
||
|
||
> 只读统计。
|
||
|
||
例如机构负责人只看运营数据。
|
||
|
||
不能:
|
||
|
||
- 修改用户
|
||
- 审核
|
||
- 封禁
|
||
- 查看敏感资料
|
||
|
||
---
|
||
|
||
# 第二十章 权限模型
|
||
|
||
建议采用:
|
||
|
||
```text
|
||
RBAC
|
||
+
|
||
Data Scope
|
||
+
|
||
Sensitive Permission
|
||
```
|
||
|
||
三层。
|
||
|
||
---
|
||
|
||
# 第二十一章 第一层:RBAC
|
||
|
||
决定:
|
||
|
||
> 能不能做某类操作。
|
||
|
||
例如:
|
||
|
||
```text
|
||
activity.create
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十二章 第二层:Data Scope
|
||
|
||
决定:
|
||
|
||
> 可以对哪些数据做。
|
||
|
||
例如同样拥有:
|
||
|
||
```text
|
||
activity.view
|
||
```
|
||
|
||
平台管理员:
|
||
|
||
> 全平台。
|
||
|
||
机构管理员:
|
||
|
||
> 本机构。
|
||
|
||
---
|
||
|
||
# 第二十三章 第三层:Sensitive Permission
|
||
|
||
决定:
|
||
|
||
> 是否允许查看高敏感字段。
|
||
|
||
例如:
|
||
|
||
```text
|
||
user.sensitive.identity.view
|
||
```
|
||
|
||
必须单独授权。
|
||
|
||
---
|
||
|
||
# 第二十四章 数据范围枚举
|
||
|
||
建议:
|
||
|
||
```text
|
||
platform
|
||
organization
|
||
assigned
|
||
self
|
||
activity_scope
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十五章 platform范围
|
||
|
||
可以访问:
|
||
|
||
> 全平台符合权限的资源。
|
||
|
||
主要:
|
||
|
||
- super_admin
|
||
- platform_admin
|
||
- 特定risk_operator
|
||
|
||
---
|
||
|
||
# 第二十六章 organization范围
|
||
|
||
只能访问:
|
||
|
||
```text
|
||
resource.organization_id = operator.organization_id
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十七章 assigned范围
|
||
|
||
只访问:
|
||
|
||
> 明确分配给自己的任务。
|
||
|
||
例如红娘:
|
||
|
||
```text
|
||
service.assigned_operator_id = currentOperator
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十八章 self范围
|
||
|
||
只管理:
|
||
|
||
> 自己账号相关数据。
|
||
|
||
---
|
||
|
||
# 第二十九章 activity_scope
|
||
|
||
用于临时工作人员。
|
||
|
||
例如:
|
||
|
||
志愿者账号只允许:
|
||
|
||
```text
|
||
activity_id IN operator_activity_assignments
|
||
```
|
||
|
||
---
|
||
|
||
# 第三十章 Data Scope不能靠前端实现
|
||
|
||
错误:
|
||
|
||
前端不显示其他组织。
|
||
|
||
正确:
|
||
|
||
服务端SQL/Service就必须加范围。
|
||
|
||
否则用户手工改URL仍可能访问。
|
||
|
||
---
|
||
|
||
# 第三十一章 组织模型
|
||
|
||
组织表:
|
||
|
||
```text
|
||
organizations
|
||
```
|
||
|
||
类型:
|
||
|
||
```text
|
||
platform
|
||
women_federation
|
||
trade_union
|
||
charity_center
|
||
volunteer_team
|
||
civil_affairs_partner
|
||
other
|
||
```
|
||
|
||
---
|
||
|
||
# 第三十二章 组织层级
|
||
|
||
V1建议:
|
||
|
||
> 最多支持简单父子组织。
|
||
|
||
例如:
|
||
|
||
```text
|
||
平台运营主体
|
||
│
|
||
├── 妇联
|
||
├── 工会
|
||
└── 公益服务中心
|
||
```
|
||
|
||
不建设复杂无限级政府组织树。
|
||
|
||
---
|
||
|
||
# 第三十三章 organization字段建议
|
||
|
||
```text
|
||
id
|
||
parent_id
|
||
name
|
||
type
|
||
status
|
||
contact
|
||
created_at
|
||
```
|
||
|
||
---
|
||
|
||
# 第三十四章 OrganizationStatus
|
||
|
||
```text
|
||
active
|
||
disabled
|
||
```
|
||
|
||
disabled后:
|
||
|
||
- 组织人员不能继续新业务
|
||
- 现有服务进入转交
|
||
- 数据不删除
|
||
|
||
---
|
||
|
||
# 第三十五章 跨组织用户数据问题
|
||
|
||
用户属于:
|
||
|
||
> 平台用户。
|
||
|
||
而不是天然属于某个妇联/工会。
|
||
|
||
因此:
|
||
|
||
> 不建议给User加唯一organization_owner。
|
||
|
||
---
|
||
|
||
# 第三十六章 组织和用户的关系
|
||
|
||
应该通过:
|
||
|
||
- MatchmakerService
|
||
- ActivityRegistration
|
||
- ReviewTask分配
|
||
- Organization授权
|
||
|
||
建立业务关系。
|
||
|
||
而不是:
|
||
|
||
```text
|
||
user.organization_id
|
||
```
|
||
|
||
直接把用户“归属”某组织。
|
||
|
||
---
|
||
|
||
# 第三十七章 为什么用户不应归属组织
|
||
|
||
一个用户可能:
|
||
|
||
- 参加工会活动
|
||
- 接受公益服务中心红娘帮助
|
||
- 被平台统一审核
|
||
|
||
因此用户是:
|
||
|
||
> 平台主体数据。
|
||
|
||
组织只有:
|
||
|
||
> 特定服务访问权。
|
||
|
||
---
|
||
|
||
# 第三十八章 后台一级菜单
|
||
|
||
统一建议:
|
||
|
||
```text
|
||
工作台
|
||
用户管理
|
||
资料审核
|
||
匹配管理
|
||
公益红娘
|
||
活动管理
|
||
举报风控
|
||
数据统计
|
||
组织人员
|
||
权限管理
|
||
系统设置
|
||
审计日志
|
||
```
|
||
|
||
---
|
||
|
||
# 第三十九章 菜单动态生成
|
||
|
||
根据:
|
||
|
||
```text
|
||
currentOperator.permissions
|
||
```
|
||
|
||
动态显示。
|
||
|
||
没有:
|
||
|
||
```text
|
||
risk.report.view
|
||
```
|
||
|
||
就不显示:
|
||
|
||
> 举报风控。
|
||
|
||
---
|
||
|
||
# 第四十章 工作台按角色变化
|
||
|
||
同一个:
|
||
|
||
```text
|
||
/dashboard
|
||
```
|
||
|
||
根据角色显示不同卡片。
|
||
|
||
---
|
||
|
||
# 第四十一章 Reviewer工作台
|
||
|
||
显示:
|
||
|
||
```text
|
||
待审核
|
||
已领取
|
||
今日已完成
|
||
退回待复审
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十二章 Matchmaker工作台
|
||
|
||
显示:
|
||
|
||
```text
|
||
新服务
|
||
待首次处理
|
||
今日待跟进
|
||
等待用户
|
||
服务中
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十三章 Activity Manager工作台
|
||
|
||
显示:
|
||
|
||
```text
|
||
报名中活动
|
||
待审核报名
|
||
今日活动
|
||
待签到
|
||
近期活动
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十四章 Risk Operator工作台
|
||
|
||
显示:
|
||
|
||
```text
|
||
高风险举报
|
||
待处理举报
|
||
风险用户
|
||
待处理申诉
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十五章 Platform Admin工作台
|
||
|
||
显示:
|
||
|
||
```text
|
||
待审核资料
|
||
待处理举报
|
||
红娘待分配
|
||
活动报名待审核
|
||
异常账号
|
||
```
|
||
|
||
不做炫酷大屏。
|
||
|
||
---
|
||
|
||
# 第四十六章 用户管理模块权限
|
||
|
||
建议:
|
||
|
||
```text
|
||
user.list.view
|
||
user.detail.view
|
||
user.status.change
|
||
user.sensitive.view
|
||
user.relationship.summary.view
|
||
user.activity.summary.view
|
||
user.matchmaker.summary.view
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十七章 用户列表默认字段
|
||
|
||
显示:
|
||
|
||
```text
|
||
用户ID
|
||
展示名
|
||
性别
|
||
年龄
|
||
区域
|
||
实名认证
|
||
资料审核
|
||
婚恋状态
|
||
账号状态
|
||
注册时间
|
||
```
|
||
|
||
不显示:
|
||
|
||
- 完整手机号
|
||
- 身份证
|
||
- 聊天
|
||
- 举报详情
|
||
|
||
---
|
||
|
||
# 第四十八章 用户列表搜索
|
||
|
||
支持:
|
||
|
||
```text
|
||
用户ID
|
||
展示名
|
||
脱敏手机号/授权手机号搜索
|
||
```
|
||
|
||
手机号搜索:
|
||
|
||
> 仅授权人员。
|
||
|
||
---
|
||
|
||
# 第四十九章 用户详情Tab
|
||
|
||
建议:
|
||
|
||
```text
|
||
基础信息
|
||
婚恋资料
|
||
审核记录
|
||
匹配摘要
|
||
活动摘要
|
||
红娘服务
|
||
账号状态
|
||
```
|
||
|
||
风险信息:
|
||
|
||
> 有权限才出现。
|
||
|
||
---
|
||
|
||
# 第五十章 用户详情不展示完整聊天
|
||
|
||
明确禁止普通用户管理页面加:
|
||
|
||
> 聊天记录Tab。
|
||
|
||
聊天只能在风控案件场景下按权限访问。
|
||
|
||
---
|
||
|
||
# 第五十一章 敏感身份入口
|
||
|
||
独立:
|
||
|
||
```text
|
||
查看实名信息
|
||
```
|
||
|
||
点击:
|
||
|
||
> 权限校验 + 访问原因 + 审计。
|
||
|
||
---
|
||
|
||
# 第五十二章 默认脱敏
|
||
|
||
显示:
|
||
|
||
```text
|
||
姓名:张**
|
||
身份证:320***********1234
|
||
手机号:138****1234
|
||
```
|
||
|
||
---
|
||
|
||
# 第五十三章 查看完整身份
|
||
|
||
只有:
|
||
|
||
```text
|
||
user.sensitive.identity.full
|
||
```
|
||
|
||
权限允许。
|
||
|
||
V1建议极少授权。
|
||
|
||
---
|
||
|
||
# 第五十四章 资料审核菜单
|
||
|
||
权限:
|
||
|
||
```text
|
||
review.list.view
|
||
review.claim
|
||
review.process
|
||
review.reject
|
||
review.history.view
|
||
```
|
||
|
||
---
|
||
|
||
# 第五十五章 Reviewer只能处理审核
|
||
|
||
不能因为能看审核页:
|
||
|
||
> 就拥有user.status.change。
|
||
|
||
---
|
||
|
||
# 第五十六章 审核任务数据范围
|
||
|
||
平台统一审核时:
|
||
|
||
```text
|
||
platform
|
||
```
|
||
|
||
如果未来机构自行审核:
|
||
|
||
可以按:
|
||
|
||
> assigned / organization
|
||
|
||
控制。
|
||
|
||
V1建议核心实名资料审核由平台统一标准管理。
|
||
|
||
---
|
||
|
||
# 第五十七章 匹配管理菜单
|
||
|
||
权限:
|
||
|
||
```text
|
||
match.stats.view
|
||
match.list.view
|
||
match.rule.view
|
||
match.rule.manage
|
||
match.rule.activate
|
||
```
|
||
|
||
---
|
||
|
||
# 第五十八章 普通管理员不需要看所有用户匹配详情
|
||
|
||
匹配详情属于较高隐私业务数据。
|
||
|
||
默认后台重点看:
|
||
|
||
- 聚合统计
|
||
- 规则
|
||
- 异常
|
||
|
||
不是:
|
||
|
||
> 谁喜欢了谁的全部流水。
|
||
|
||
---
|
||
|
||
# 第五十九章 查看特定Match
|
||
|
||
只在:
|
||
|
||
- 用户投诉
|
||
- 风控
|
||
- 服务处理
|
||
|
||
等必要场景开放。
|
||
|
||
---
|
||
|
||
# 第六十章 Match Rule权限
|
||
|
||
只有少数平台角色:
|
||
|
||
```text
|
||
match.rule.manage
|
||
```
|
||
|
||
可以修改。
|
||
|
||
机构管理员不能修改全局算法。
|
||
|
||
---
|
||
|
||
# 第六十一章 公益红娘模块权限
|
||
|
||
```text
|
||
matchmaker.service.list
|
||
matchmaker.service.view
|
||
matchmaker.service.assign
|
||
matchmaker.service.claim
|
||
matchmaker.service.followup
|
||
matchmaker.candidate.view
|
||
matchmaker.recommend
|
||
matchmaker.service.complete
|
||
```
|
||
|
||
---
|
||
|
||
# 第六十二章 红娘管理员
|
||
|
||
organization_admin若负责红娘:
|
||
|
||
可以:
|
||
|
||
- 看本机构服务
|
||
- 分配本机构红娘
|
||
- 看工作量
|
||
|
||
不能:
|
||
|
||
> 看其他机构服务。
|
||
|
||
---
|
||
|
||
# 第六十三章 活动管理权限
|
||
|
||
```text
|
||
activity.list
|
||
activity.view
|
||
activity.create
|
||
activity.edit
|
||
activity.publish
|
||
activity.cancel
|
||
activity.registration.view
|
||
activity.registration.review
|
||
activity.checkin
|
||
activity.feedback.view
|
||
activity.stats.view
|
||
```
|
||
|
||
---
|
||
|
||
# 第六十四章 发布和编辑分离
|
||
|
||
可以允许工作人员:
|
||
|
||
> 创建活动草稿。
|
||
|
||
但只有负责人:
|
||
|
||
```text
|
||
activity.publish
|
||
```
|
||
|
||
可以正式发布。
|
||
|
||
降低误操作风险。
|
||
|
||
---
|
||
|
||
# 第六十五章 取消活动属于高风险权限
|
||
|
||
```text
|
||
activity.cancel
|
||
```
|
||
|
||
必须:
|
||
|
||
- 二次确认
|
||
- 原因
|
||
- 审计
|
||
|
||
---
|
||
|
||
# 第六十六章 志愿者只给
|
||
|
||
```text
|
||
activity.checkin
|
||
```
|
||
|
||
和必要:
|
||
|
||
```text
|
||
activity.registration.basic_view
|
||
```
|
||
|
||
即可。
|
||
|
||
---
|
||
|
||
# 第六十七章 举报风控权限
|
||
|
||
建议细拆:
|
||
|
||
```text
|
||
risk.report.list
|
||
risk.report.view
|
||
risk.report.process
|
||
|
||
risk.user.view
|
||
risk.user.warning
|
||
risk.user.limit
|
||
risk.user.suspend
|
||
risk.user.ban
|
||
|
||
risk.appeal.view
|
||
risk.appeal.process
|
||
|
||
risk.evidence.view
|
||
message.content.review
|
||
```
|
||
|
||
---
|
||
|
||
# 第六十八章 为什么风控要细拆
|
||
|
||
“查看举报”和“永久封禁”不是一个风险等级。
|
||
|
||
例如初级风控员:
|
||
|
||
可以:
|
||
|
||
- 查看
|
||
- 处理普通举报
|
||
|
||
但不一定拥有:
|
||
|
||
> ban。
|
||
|
||
---
|
||
|
||
# 第六十九章 用户封禁建议双重保护
|
||
|
||
V1建议:
|
||
|
||
永久ban操作:
|
||
|
||
- 二次确认
|
||
- 填写原因
|
||
- Audit
|
||
|
||
是否需要双人复核:
|
||
|
||
> 初期可作为P1建议。
|
||
|
||
严重高风险时至少由高权限角色操作。
|
||
|
||
---
|
||
|
||
# 第七十章 聊天查看权限单独存在
|
||
|
||
```text
|
||
message.content.review
|
||
```
|
||
|
||
不能因为:
|
||
|
||
```text
|
||
risk.report.process
|
||
```
|
||
|
||
就自动获得全部聊天读取。
|
||
|
||
---
|
||
|
||
# 第七十一章 风控聊天读取必须案件关联
|
||
|
||
正确:
|
||
|
||
```text
|
||
Report
|
||
↓
|
||
Conversation Context
|
||
```
|
||
|
||
错误:
|
||
|
||
```text
|
||
用户详情
|
||
↓
|
||
所有聊天
|
||
```
|
||
|
||
---
|
||
|
||
# 第七十二章 组织人员菜单
|
||
|
||
权限:
|
||
|
||
```text
|
||
organization.list
|
||
organization.view
|
||
organization.create
|
||
organization.edit
|
||
|
||
operator.list
|
||
operator.create
|
||
operator.edit
|
||
operator.disable
|
||
operator.role.assign
|
||
```
|
||
|
||
---
|
||
|
||
# 第七十三章 organization_admin人员权限
|
||
|
||
只能管理:
|
||
|
||
```text
|
||
operators.organization_id = currentOrg
|
||
```
|
||
|
||
不能新增平台管理员。
|
||
|
||
---
|
||
|
||
# 第七十四章 机构管理员不能给自己越权
|
||
|
||
例如本机构最大允许:
|
||
|
||
```text
|
||
matchmaker
|
||
activity_manager
|
||
volunteer
|
||
```
|
||
|
||
机构管理员不能通过角色接口:
|
||
|
||
> 给自己super_admin。
|
||
|
||
服务端需要:
|
||
|
||
> Role Assignment Boundary。
|
||
|
||
---
|
||
|
||
# 第七十五章 角色分配边界
|
||
|
||
每个管理角色定义:
|
||
|
||
```text
|
||
assignable_roles
|
||
```
|
||
|
||
例如:
|
||
|
||
organization_admin可分配:
|
||
|
||
```text
|
||
matchmaker
|
||
activity_manager
|
||
volunteer
|
||
data_viewer
|
||
```
|
||
|
||
不能分:
|
||
|
||
```text
|
||
platform_admin
|
||
super_admin
|
||
```
|
||
|
||
---
|
||
|
||
# 第七十六章 权限管理菜单
|
||
|
||
只对:
|
||
|
||
```text
|
||
permission.manage
|
||
```
|
||
|
||
开放。
|
||
|
||
建议V1只有:
|
||
|
||
- super_admin
|
||
- 指定platform_admin
|
||
|
||
拥有。
|
||
|
||
---
|
||
|
||
# 第七十七章 系统角色
|
||
|
||
默认角色:
|
||
|
||
```text
|
||
system_role = true
|
||
```
|
||
|
||
不允许删除。
|
||
|
||
可以:
|
||
|
||
> 克隆后创建自定义角色。
|
||
|
||
---
|
||
|
||
# 第七十八章 自定义角色
|
||
|
||
例如:
|
||
|
||
```text
|
||
工会活动负责人
|
||
```
|
||
|
||
可以从:
|
||
|
||
```text
|
||
activity_manager
|
||
```
|
||
|
||
复制后精简权限。
|
||
|
||
---
|
||
|
||
# 第七十九章 不建议V1做复杂ABAC
|
||
|
||
不要建设:
|
||
|
||
- 表达式权限引擎
|
||
- 策略语言
|
||
- 动态属性规则系统
|
||
|
||
RBAC + 数据范围足够。
|
||
|
||
---
|
||
|
||
# 第八十章 权限命名规范
|
||
|
||
统一:
|
||
|
||
```text
|
||
module.resource.action
|
||
```
|
||
|
||
例如:
|
||
|
||
```text
|
||
user.detail.view
|
||
activity.registration.review
|
||
risk.user.ban
|
||
match.rule.manage
|
||
```
|
||
|
||
---
|
||
|
||
# 第八十一章 权限不能按按钮命名
|
||
|
||
错误:
|
||
|
||
```text
|
||
button_123
|
||
```
|
||
|
||
正确:
|
||
|
||
> 表达业务能力。
|
||
|
||
---
|
||
|
||
# 第八十二章 权限后端统一注解/中间件
|
||
|
||
例如:
|
||
|
||
```text
|
||
@RequirePermission("activity.publish")
|
||
```
|
||
|
||
或框架对应机制。
|
||
|
||
避免Controller手写大量:
|
||
|
||
```text
|
||
if role...
|
||
```
|
||
|
||
---
|
||
|
||
# 第八十三章 数据范围服务
|
||
|
||
建议独立:
|
||
|
||
```text
|
||
DataScopeService
|
||
```
|
||
|
||
输入:
|
||
|
||
```text
|
||
operator
|
||
resourceType
|
||
```
|
||
|
||
输出可访问条件。
|
||
|
||
---
|
||
|
||
# 第八十四章 示例:红娘服务查询
|
||
|
||
红娘:
|
||
|
||
```text
|
||
assigned_operator_id = me
|
||
```
|
||
|
||
机构管理员:
|
||
|
||
```text
|
||
organization_id = myOrg
|
||
```
|
||
|
||
平台管理员:
|
||
|
||
> 无组织限制。
|
||
|
||
---
|
||
|
||
# 第八十五章 示例:活动列表
|
||
|
||
志愿者:
|
||
|
||
> 只看被分配活动。
|
||
|
||
活动管理员:
|
||
|
||
> 本组织活动。
|
||
|
||
平台管理员:
|
||
|
||
> 全部。
|
||
|
||
---
|
||
|
||
# 第八十六章 用户数据访问不能简单按机构过滤
|
||
|
||
再次强调:
|
||
|
||
用户是平台用户。
|
||
|
||
机构只能通过:
|
||
|
||
> 具体服务关系
|
||
|
||
获取必要资料。
|
||
|
||
---
|
||
|
||
# 第八十七章 OrganizationAccessGrant建议
|
||
|
||
为未来跨组织协作,可预留:
|
||
|
||
```text
|
||
organization_access_grants
|
||
```
|
||
|
||
但V1如果业务简单:
|
||
|
||
> 暂不必建复杂授权表。
|
||
|
||
先通过业务对象关联授权。
|
||
|
||
---
|
||
|
||
# 第八十八章 用户与红娘的数据范围
|
||
|
||
红娘可看用户完整Matchmaker DTO的前提:
|
||
|
||
```text
|
||
存在有效service
|
||
AND
|
||
service.assigned_operator = currentOperator
|
||
```
|
||
|
||
---
|
||
|
||
# 第八十九章 用户与活动管理员的数据范围
|
||
|
||
活动管理员可看报名必要资料的前提:
|
||
|
||
```text
|
||
user registered activity
|
||
AND
|
||
activity belongs to currentOrg / authorized
|
||
```
|
||
|
||
---
|
||
|
||
# 第九十章 用户与审核员的数据范围
|
||
|
||
审核员可以看:
|
||
|
||
> 当前审核任务必要资料。
|
||
|
||
不能因此浏览用户全部红娘、活动、聊天历史。
|
||
|
||
---
|
||
|
||
# 第九十一章 用户与风控员的数据范围
|
||
|
||
风控员基于:
|
||
|
||
- Report
|
||
- RiskEvent
|
||
- Appeal
|
||
|
||
访问必要资料。
|
||
|
||
---
|
||
|
||
# 第九十二章 Data Minimization必须在后台体现
|
||
|
||
不是只有用户端隐私。
|
||
|
||
后台也应做到:
|
||
|
||
> 每个角色只看完成任务所需要的信息。
|
||
|
||
---
|
||
|
||
# 第九十三章 后台顶部Header
|
||
|
||
显示:
|
||
|
||
```text
|
||
当前组织
|
||
当前用户
|
||
通知
|
||
退出
|
||
```
|
||
|
||
不需要:
|
||
|
||
- 天气
|
||
- 时间大屏
|
||
- 欢迎词大Banner
|
||
|
||
---
|
||
|
||
# 第九十四章 Sidebar
|
||
|
||
宽度:
|
||
|
||
```text
|
||
220~240px
|
||
```
|
||
|
||
折叠:
|
||
|
||
> 可选。
|
||
|
||
桌面V1优先1280+。
|
||
|
||
---
|
||
|
||
# 第九十五章 后台页面统一结构
|
||
|
||
```text
|
||
PageHeader
|
||
↓
|
||
FilterBar
|
||
↓
|
||
Content
|
||
↓
|
||
Pagination
|
||
```
|
||
|
||
---
|
||
|
||
# 第九十六章 表格原则
|
||
|
||
默认:
|
||
|
||
```text
|
||
20条/页
|
||
```
|
||
|
||
可选择:
|
||
|
||
```text
|
||
20
|
||
50
|
||
```
|
||
|
||
100可作为技术支持但不必前台突出。
|
||
|
||
该分页属于UX配置,不是业务硬规则。
|
||
|
||
---
|
||
|
||
# 第九十七章 表格操作
|
||
|
||
每行最多:
|
||
|
||
```text
|
||
查看
|
||
处理
|
||
更多
|
||
```
|
||
|
||
不要一行放8个按钮。
|
||
|
||
---
|
||
|
||
# 第九十八章 高风险按钮
|
||
|
||
例如:
|
||
|
||
```text
|
||
封禁
|
||
取消活动
|
||
停用工作人员
|
||
```
|
||
|
||
放:
|
||
|
||
> 更多
|
||
|
||
或详情页。
|
||
|
||
并二次确认。
|
||
|
||
---
|
||
|
||
# 第九十九章 后台状态色
|
||
|
||
统一使用:
|
||
|
||
- 正常:绿色
|
||
- 待处理:橙色
|
||
- 风险:红色
|
||
- 普通:蓝/灰
|
||
|
||
不能所有异常都一片大红。
|
||
|
||
---
|
||
|
||
# 第一百章 数据统计模块权限
|
||
|
||
```text
|
||
analytics.overview.view
|
||
analytics.user.view
|
||
analytics.match.view
|
||
analytics.activity.view
|
||
analytics.matchmaker.view
|
||
analytics.risk.view
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百零一章 机构统计范围
|
||
|
||
机构管理员只能看:
|
||
|
||
> 本机构参与产生的运营数据。
|
||
|
||
例如:
|
||
|
||
- 本机构活动
|
||
- 本机构红娘服务
|
||
|
||
不能看全平台完整用户数据。
|
||
|
||
---
|
||
|
||
# 第一百零二章 平台统计
|
||
|
||
platform_admin可看:
|
||
|
||
- 用户
|
||
- 匹配
|
||
- 活动
|
||
- 红娘
|
||
- 风控
|
||
|
||
全平台汇总。
|
||
|
||
---
|
||
|
||
# 第一百零三章 数据导出权限
|
||
|
||
建议:
|
||
|
||
```text
|
||
data.export
|
||
```
|
||
|
||
单独权限。
|
||
|
||
不要:
|
||
|
||
> 能看列表就能导出。
|
||
|
||
---
|
||
|
||
# 第一百零四章 为什么导出单独授权
|
||
|
||
Web页面:
|
||
|
||
> 有访问控制。
|
||
|
||
Excel下载后:
|
||
|
||
> 很难继续控制传播。
|
||
|
||
因此导出风险更高。
|
||
|
||
---
|
||
|
||
# 第一百零五章 V1限制导出范围
|
||
|
||
优先支持:
|
||
|
||
- 活动执行脱敏名单
|
||
- 必要运营统计
|
||
|
||
不提供:
|
||
|
||
> 全量用户数据库导出。
|
||
|
||
---
|
||
|
||
# 第一百零六章 导出内容必须脱敏
|
||
|
||
例如活动:
|
||
|
||
```text
|
||
活动编号
|
||
展示名
|
||
手机号后四位
|
||
报名状态
|
||
签到状态
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百零七章 导出审计
|
||
|
||
记录:
|
||
|
||
```text
|
||
operator
|
||
export_type
|
||
filters
|
||
row_count
|
||
time
|
||
```
|
||
|
||
敏感导出建议:
|
||
|
||
> 水印。
|
||
|
||
---
|
||
|
||
# 第一百零八章 Audit模块菜单
|
||
|
||
权限:
|
||
|
||
```text
|
||
audit.view
|
||
audit.sensitive.view
|
||
audit.export
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百零九章 普通管理员是否看Audit
|
||
|
||
可以看:
|
||
|
||
> 自己组织的普通操作日志。
|
||
|
||
高敏感日志:
|
||
|
||
> 平台安全角色。
|
||
|
||
---
|
||
|
||
# 第一百一十章 Audit记录操作
|
||
|
||
至少:
|
||
|
||
```text
|
||
登录
|
||
审核
|
||
用户状态修改
|
||
红娘分配
|
||
活动发布/取消
|
||
举报处理
|
||
风控处置
|
||
权限变更
|
||
工作人员创建/停用
|
||
敏感数据访问
|
||
系统配置修改
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百一十一章 Audit不可由普通后台删除
|
||
|
||
审计日志:
|
||
|
||
> 不提供删除按钮。
|
||
|
||
---
|
||
|
||
# 第一百一十二章 SensitiveAccessLog
|
||
|
||
与普通Audit分开。
|
||
|
||
记录:
|
||
|
||
```text
|
||
谁
|
||
查看谁
|
||
什么敏感数据
|
||
为什么
|
||
什么时候
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百一十三章 敏感访问理由
|
||
|
||
可使用标准:
|
||
|
||
```text
|
||
身份异常核验
|
||
举报调查
|
||
申诉处理
|
||
依法配合
|
||
其他
|
||
```
|
||
|
||
其他需要填写说明。
|
||
|
||
---
|
||
|
||
# 第一百一十四章 工作人员登录安全
|
||
|
||
V1至少:
|
||
|
||
```text
|
||
账号+密码
|
||
强密码
|
||
登录限频
|
||
失败锁定
|
||
Session超时
|
||
停用实时失效
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百一十五章 MFA
|
||
|
||
建议优先给:
|
||
|
||
```text
|
||
super_admin
|
||
platform_admin
|
||
risk_operator(高权限)
|
||
```
|
||
|
||
启用。
|
||
|
||
如果V1研发周期紧:
|
||
|
||
> P1。
|
||
|
||
但架构预留。
|
||
|
||
---
|
||
|
||
# 第一百一十六章 Session有效期
|
||
|
||
工作人员后台建议:
|
||
|
||
> 比普通小程序更严格。
|
||
|
||
例如:
|
||
|
||
```text
|
||
空闲一定时间重新认证
|
||
```
|
||
|
||
具体时长待安全配置确定。
|
||
|
||
不要在业务代码写死。
|
||
|
||
---
|
||
|
||
# 第一百一十七章 高敏感操作再认证
|
||
|
||
P1可考虑:
|
||
|
||
> 查看完整身份证 / 修改权限 / 永久封禁
|
||
|
||
要求再次输入密码或MFA。
|
||
|
||
---
|
||
|
||
# 第一百一十八章 临时志愿者账号
|
||
|
||
支持:
|
||
|
||
```text
|
||
expires_at
|
||
```
|
||
|
||
活动结束后:
|
||
|
||
> 自动expired。
|
||
|
||
---
|
||
|
||
# 第一百一十九章 离职流程
|
||
|
||
工作人员离职:
|
||
|
||
```text
|
||
operator.status = disabled
|
||
↓
|
||
撤销所有Session
|
||
↓
|
||
停止API权限
|
||
↓
|
||
转交服务
|
||
↓
|
||
审计
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百二十章 红娘离职服务转交
|
||
|
||
系统提示:
|
||
|
||
> 当前仍有18个未完成服务。
|
||
|
||
必须先:
|
||
|
||
- 批量重新分配
|
||
- 或管理员接管
|
||
|
||
不能只停账号。
|
||
|
||
---
|
||
|
||
# 第一百二十一章 机构人员停用
|
||
|
||
机构管理员可以停:
|
||
|
||
> 本机构普通人员。
|
||
|
||
不能停:
|
||
|
||
> 平台管理员。
|
||
|
||
---
|
||
|
||
# 第一百二十二章 平台管理员停用机构管理员
|
||
|
||
平台权限允许。
|
||
|
||
停用后:
|
||
|
||
> 该组织需重新指定负责人。
|
||
|
||
---
|
||
|
||
# 第一百二十三章 后台通知中心
|
||
|
||
工作人员通知:
|
||
|
||
```text
|
||
新审核任务
|
||
新举报
|
||
红娘任务分配
|
||
活动报名待审核
|
||
用户风险变化
|
||
权限/账号安全
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百二十四章 通知按职责发送
|
||
|
||
不要:
|
||
|
||
> 每个管理员都收到所有消息。
|
||
|
||
例如:
|
||
|
||
活动报名:
|
||
|
||
> 活动管理员。
|
||
|
||
举报:
|
||
|
||
> 风控员。
|
||
|
||
审核:
|
||
|
||
> 审核员。
|
||
|
||
---
|
||
|
||
# 第一百二十五章 工作人员个人待办
|
||
|
||
建议:
|
||
|
||
```text
|
||
GET /operator/tasks
|
||
```
|
||
|
||
统一返回:
|
||
|
||
```text
|
||
review
|
||
matchmaker
|
||
activity
|
||
risk
|
||
```
|
||
|
||
属于自己的待办。
|
||
|
||
---
|
||
|
||
# 第一百二十六章 是否建设通用工单系统
|
||
|
||
V1不需要。
|
||
|
||
各业务有自己的Task实体。
|
||
|
||
Dashboard统一聚合即可。
|
||
|
||
---
|
||
|
||
# 第一百二十七章 平台超级管理员红线
|
||
|
||
即使是super_admin:
|
||
|
||
> 也不应该默认在普通页面看全部私人聊天。
|
||
|
||
技术超级权限:
|
||
|
||
≠
|
||
|
||
日常业务合理权限。
|
||
|
||
---
|
||
|
||
# 第一百二十八章 Break Glass机制建议
|
||
|
||
未来针对极特殊安全事件,可以有:
|
||
|
||
> 紧急访问。
|
||
|
||
例如高级安全负责人临时访问某敏感数据。
|
||
|
||
必须:
|
||
|
||
- 填写原因
|
||
- 强审计
|
||
- 可复核
|
||
|
||
V1可先预留理念,不一定做复杂系统。
|
||
|
||
---
|
||
|
||
# 第一百二十九章 系统设置权限
|
||
|
||
```text
|
||
system.config.view
|
||
system.config.manage
|
||
```
|
||
|
||
可配置:
|
||
|
||
- 推荐数量
|
||
- 活动功能开关
|
||
- 红娘功能开关
|
||
- 图片上限
|
||
- 风控基础配置
|
||
|
||
---
|
||
|
||
# 第一百三十章 不允许普通运营修改技术Secret
|
||
|
||
后台系统设置不要暴露:
|
||
|
||
- 数据库密码
|
||
- 微信Secret
|
||
- JWT Secret
|
||
- 云密钥
|
||
|
||
这些属于部署Secret。
|
||
|
||
不是运营配置。
|
||
|
||
---
|
||
|
||
# 第一百三十一章 Feature Flag
|
||
|
||
后台可见:
|
||
|
||
```text
|
||
活动服务
|
||
红娘服务
|
||
图片聊天
|
||
```
|
||
|
||
等业务开关。
|
||
|
||
---
|
||
|
||
# 第一百三十二章 系统维护模式
|
||
|
||
只有高权限人员:
|
||
|
||
```text
|
||
system.maintenance.manage
|
||
```
|
||
|
||
可开启。
|
||
|
||
开启:
|
||
|
||
> 用户端进入维护页。
|
||
|
||
必须二次确认。
|
||
|
||
---
|
||
|
||
# 第一百三十三章 用户账号状态修改
|
||
|
||
普通后台不能随意:
|
||
|
||
```text
|
||
normal → banned
|
||
```
|
||
|
||
必须走:
|
||
|
||
> RiskAction。
|
||
|
||
用户管理页可以提供:
|
||
|
||
> 查看状态
|
||
|
||
但封禁动作进入风控流程。
|
||
|
||
---
|
||
|
||
# 第一百三十四章 为什么不能User页面直接改状态
|
||
|
||
这样能保证:
|
||
|
||
- 有原因
|
||
- 有风控记录
|
||
- 可申诉
|
||
- 可审计
|
||
|
||
不会出现管理员随手改数据库状态。
|
||
|
||
---
|
||
|
||
# 第一百三十五章 用户资料人工修改
|
||
|
||
V1后台原则:
|
||
|
||
> 工作人员不直接替用户修改婚恋资料。
|
||
|
||
审核员只能:
|
||
|
||
- 通过
|
||
- 退回
|
||
|
||
用户本人修改。
|
||
|
||
---
|
||
|
||
# 第一百三十六章 特殊代录场景
|
||
|
||
如果未来服务老年/特殊用户需要工作人员代录:
|
||
|
||
必须独立:
|
||
|
||
> Assisted Entry流程。
|
||
|
||
V1普通后台不提供。
|
||
|
||
---
|
||
|
||
# 第一百三十七章 系统内部用户备注
|
||
|
||
是否允许管理员随意写“内部备注”?
|
||
|
||
建议非常谨慎。
|
||
|
||
只允许业务模块已有:
|
||
|
||
- 审核备注
|
||
- 红娘跟进
|
||
- 风控记录
|
||
- 活动异常
|
||
|
||
不要增加一个:
|
||
|
||
> 所有人都能写的“用户备注”。
|
||
|
||
容易形成不当标签。
|
||
|
||
---
|
||
|
||
# 第一百三十八章 组织权限矩阵概览
|
||
|
||
| 功能 | 平台管理员 | 机构管理员 | 审核员 | 红娘 | 活动管理员 | 风控员 | 志愿者 |
|
||
|---|---:|---:|---:|---:|---:|---:|---:|
|
||
| 用户基本列表 | 是 | 有限 | 审核相关 | 服务相关 | 报名相关 | 风控相关 | 否 |
|
||
| 实名敏感信息 | 单独权限 | 否 | 必要脱敏 | 否 | 否 | 单独权限 | 否 |
|
||
| 资料审核 | 可 | 按授权 | 是 | 否 | 否 | 否 | 否 |
|
||
| 红娘服务 | 管理 | 本机构 | 否 | 是 | 否 | 必要摘要 | 否 |
|
||
| 活动管理 | 管理 | 本机构 | 否 | 推荐活动 | 是 | 必要摘要 | 签到 |
|
||
| 举报风控 | 管理 | 默认否 | 否 | 转交 | 转交 | 是 | 转交 |
|
||
| 聊天正文 | 默认否 | 否 | 否 | 否 | 否 | 案件授权 | 否 |
|
||
| 权限管理 | 指定 | 有限 | 否 | 否 | 否 | 否 | 否 |
|
||
| 统计 | 全平台 | 本机构 | 自身工作 | 自身服务 | 本机构活动 | 风控 | 否 |
|
||
|
||
---
|
||
|
||
# 第一百三十九章 机构管理员的数据范围
|
||
|
||
核心:
|
||
|
||
> 本组织产生/被授权处理的业务。
|
||
|
||
例如:
|
||
|
||
```text
|
||
本机构活动
|
||
本机构红娘服务
|
||
本机构工作人员
|
||
```
|
||
|
||
不自动获得:
|
||
|
||
> 全平台婚恋用户库。
|
||
|
||
---
|
||
|
||
# 第一百四十章 平台管理员的数据范围
|
||
|
||
平台管理需要全局运营能力。
|
||
|
||
但敏感字段仍:
|
||
|
||
> 单独权限。
|
||
|
||
---
|
||
|
||
# 第一百四十一章 审核员的数据范围
|
||
|
||
审核任务。
|
||
|
||
不是:
|
||
|
||
> 全平台自由搜索用户。
|
||
|
||
---
|
||
|
||
# 第一百四十二章 风控员的数据范围
|
||
|
||
风险案件。
|
||
|
||
可以根据案件扩大必要上下文。
|
||
|
||
但每一步仍遵守:
|
||
|
||
> 最小必要。
|
||
|
||
---
|
||
|
||
# 第一百四十三章 跨机构红娘服务
|
||
|
||
如果用户申请平台统一红娘服务:
|
||
|
||
管理员可把Service分配给某合作机构。
|
||
|
||
此时:
|
||
|
||
> 该机构只获得该Service必要的数据访问。
|
||
|
||
---
|
||
|
||
# 第一百四十四章 Service结束后访问权限
|
||
|
||
服务完成后:
|
||
|
||
红娘是否无限期继续查看用户?
|
||
|
||
建议:
|
||
|
||
> 不应。
|
||
|
||
完成后保留服务历史摘要,但对完整婚恋资料的实时访问应按业务需要收缩。
|
||
|
||
V1可以先做到:
|
||
|
||
> 已完成服务只读。
|
||
|
||
未来再进一步做访问期限。
|
||
|
||
---
|
||
|
||
# 第一百四十五章 活动结束后志愿者权限
|
||
|
||
活动结束:
|
||
|
||
> 临时账号过期。
|
||
|
||
不能继续查看历史报名名单。
|
||
|
||
---
|
||
|
||
# 第一百四十六章 数据访问期限思想
|
||
|
||
权限不仅是:
|
||
|
||
> “有没有”。
|
||
|
||
未来还应考虑:
|
||
|
||
> “什么时候还有”。
|
||
|
||
V1重点先覆盖临时活动账号。
|
||
|
||
---
|
||
|
||
# 第一百四十七章 后台列表URL状态
|
||
|
||
筛选写Query:
|
||
|
||
```text
|
||
/reviews?status=pending&page=2
|
||
```
|
||
|
||
便于刷新恢复。
|
||
|
||
---
|
||
|
||
# 第一百四十八章 详情页必须URL可恢复
|
||
|
||
例如:
|
||
|
||
```text
|
||
/admin/users/{id}
|
||
/admin/reviews/{id}
|
||
/admin/reports/{id}
|
||
```
|
||
|
||
刷新后重新请求。
|
||
|
||
不能靠上一页传对象。
|
||
|
||
---
|
||
|
||
# 第一百四十九章 后台401
|
||
|
||
Session过期:
|
||
|
||
> 回登录。
|
||
|
||
如果页面有未保存表单:
|
||
|
||
优先保存非敏感草稿或提示。
|
||
|
||
---
|
||
|
||
# 第一百五十章 后台403
|
||
|
||
显示:
|
||
|
||
> 你没有访问该功能的权限。
|
||
|
||
不要:
|
||
|
||
> 白屏。
|
||
|
||
---
|
||
|
||
# 第一百五十一章 数据范围403
|
||
|
||
例如机构管理员手改其他组织activityId:
|
||
|
||
返回:
|
||
|
||
```text
|
||
ORGANIZATION_SCOPE_DENIED
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百五十二章 敏感权限403
|
||
|
||
返回:
|
||
|
||
```text
|
||
SENSITIVE_ACCESS_DENIED
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百五十三章 Operator账号异常
|
||
|
||
disabled:
|
||
|
||
> 当前账号已停用,请联系管理员。
|
||
|
||
locked:
|
||
|
||
> 当前账号因安全原因暂时锁定。
|
||
|
||
---
|
||
|
||
# 第一百五十四章 机构停用
|
||
|
||
组织被停用:
|
||
|
||
其Operator不能继续普通业务。
|
||
|
||
服务端登录/请求检查:
|
||
|
||
```text
|
||
organization.status
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百五十五章 组织停用后的在途任务
|
||
|
||
管理员必须处理:
|
||
|
||
- 红娘服务转交
|
||
- 活动负责人调整
|
||
- 未完成工作
|
||
|
||
不能直接删除组织。
|
||
|
||
---
|
||
|
||
# 第一百五十六章 组织删除原则
|
||
|
||
不物理删除已有业务组织。
|
||
|
||
采用:
|
||
|
||
```text
|
||
disabled
|
||
```
|
||
|
||
历史Audit和活动仍能关联。
|
||
|
||
---
|
||
|
||
# 第一百五十七章 角色删除原则
|
||
|
||
系统角色:
|
||
|
||
> 不删除。
|
||
|
||
自定义角色如果已有人使用:
|
||
|
||
> 先解除关联或禁用。
|
||
|
||
建议roles增加:
|
||
|
||
```text
|
||
status
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百五十八章 权限变更实时生效
|
||
|
||
管理员撤销某Operator:
|
||
|
||
```text
|
||
risk.user.ban
|
||
```
|
||
|
||
下一次请求:
|
||
|
||
> 立即不能使用。
|
||
|
||
不要等重新登录。
|
||
|
||
---
|
||
|
||
# 第一百五十九章 权限缓存
|
||
|
||
可以Redis缓存:
|
||
|
||
```text
|
||
operator_permissions:{id}
|
||
```
|
||
|
||
权限修改后:
|
||
|
||
> 立即失效。
|
||
|
||
---
|
||
|
||
# 第一百六十章 Session与权限分离
|
||
|
||
Token不建议把全部权限永久写死到长周期JWT中。
|
||
|
||
否则权限改了:
|
||
|
||
> 老Token还有效。
|
||
|
||
可:
|
||
|
||
- 短Token
|
||
- 权限版本
|
||
- Redis Session
|
||
|
||
确保及时生效。
|
||
|
||
---
|
||
|
||
# 第一百六十一章 Operator权限版本
|
||
|
||
可增加:
|
||
|
||
```text
|
||
permission_version
|
||
```
|
||
|
||
角色变化:
|
||
|
||
```text
|
||
version +1
|
||
```
|
||
|
||
Token/Session发现版本不一致:
|
||
|
||
> 重新加载权限。
|
||
|
||
---
|
||
|
||
# 第一百六十二章 登录日志
|
||
|
||
建议:
|
||
|
||
```text
|
||
operator_login_logs
|
||
```
|
||
|
||
记录:
|
||
|
||
- operator
|
||
- IP
|
||
- User Agent
|
||
- 成功/失败
|
||
- 时间
|
||
|
||
也可纳入Security Log。
|
||
|
||
---
|
||
|
||
# 第一百六十三章 异常登录提醒
|
||
|
||
P1:
|
||
|
||
如果:
|
||
|
||
- 新设备
|
||
- 异常IP
|
||
- 短时间多次失败
|
||
|
||
提醒管理员或本人。
|
||
|
||
---
|
||
|
||
# 第一百六十四章 Admin Header当前组织切换
|
||
|
||
如果某平台工作人员被授权多个组织:
|
||
|
||
可以:
|
||
|
||
> 切换工作上下文。
|
||
|
||
普通机构人员:
|
||
|
||
> 固定组织。
|
||
|
||
V1如无多组织Operator需求,可暂不做切换。
|
||
|
||
---
|
||
|
||
# 第一百六十五章 组织切换不能改变实际权限
|
||
|
||
切换只是:
|
||
|
||
> 数据上下文。
|
||
|
||
不能通过切组织获得未授权范围。
|
||
|
||
---
|
||
|
||
# 第一百六十六章 后台搜索全局能力
|
||
|
||
不建议做一个:
|
||
|
||
> 全局搜人/手机号/聊天/举报
|
||
|
||
超级搜索。
|
||
|
||
风险太高。
|
||
|
||
各业务模块:
|
||
|
||
> 在本模块内搜索。
|
||
|
||
---
|
||
|
||
# 第一百六十七章 用户搜索手机号
|
||
|
||
只有特定权限:
|
||
|
||
```text
|
||
user.phone.search
|
||
```
|
||
|
||
才能使用。
|
||
|
||
返回结果仍脱敏。
|
||
|
||
---
|
||
|
||
# 第一百六十八章 身份证搜索
|
||
|
||
V1原则:
|
||
|
||
> 普通后台不提供。
|
||
|
||
确因实名认证异常需要:
|
||
|
||
使用Identity模块受控查询。
|
||
|
||
---
|
||
|
||
# 第一百六十九章 统计匿名化
|
||
|
||
统计页尽量用:
|
||
|
||
> 聚合数据。
|
||
|
||
不需要显示具体用户。
|
||
|
||
---
|
||
|
||
# 第一百七十章 小样本隐私
|
||
|
||
如果某机构某条件只有1人:
|
||
|
||
后台统计也应避免为了图表直接暴露个体敏感信息。
|
||
|
||
V1可以先不做过细交叉分析。
|
||
|
||
---
|
||
|
||
# 第一百七十一章 后台批量操作
|
||
|
||
V1只谨慎支持:
|
||
|
||
- 批量活动报名审核(建议后期)
|
||
- 批量任务分配
|
||
|
||
不支持:
|
||
|
||
> 批量封禁用户
|
||
|
||
作为普通功能。
|
||
|
||
---
|
||
|
||
# 第一百七十二章 批量敏感操作风险
|
||
|
||
任何批量状态变化:
|
||
|
||
必须:
|
||
|
||
- 预览
|
||
- 二次确认
|
||
- Audit
|
||
|
||
---
|
||
|
||
# 第一百七十三章 用户封禁不支持普通批量
|
||
|
||
除非技术攻击场景由安全系统处理。
|
||
|
||
人工运营不需要:
|
||
|
||
> 选100人一键封禁。
|
||
|
||
---
|
||
|
||
# 第一百七十四章 后台操作Undo
|
||
|
||
高风险操作不要依赖:
|
||
|
||
> Toast后5秒撤销。
|
||
|
||
应该通过正式:
|
||
|
||
- revoke
|
||
- appeal
|
||
- restore
|
||
|
||
流程。
|
||
|
||
---
|
||
|
||
# 第一百七十五章 资料审核支持快捷操作
|
||
|
||
可以:
|
||
|
||
```text
|
||
通过
|
||
需修改
|
||
```
|
||
|
||
降低工作人员操作量。
|
||
|
||
严重拒绝:
|
||
|
||
放“更多”。
|
||
|
||
---
|
||
|
||
# 第一百七十六章 审核原因标准化
|
||
|
||
使用:
|
||
|
||
> review_reasons字典。
|
||
|
||
减少审核员每次自由发挥。
|
||
|
||
可以补充:
|
||
|
||
> 备注。
|
||
|
||
---
|
||
|
||
# 第一百七十七章 风控原因标准化
|
||
|
||
同样使用:
|
||
|
||
> resultCode / actionType。
|
||
|
||
便于统计和复核。
|
||
|
||
---
|
||
|
||
# 第一百七十八章 权限变更审计样例
|
||
|
||
例如:
|
||
|
||
```text
|
||
2026-08-28 14:32
|
||
管理员:李某
|
||
操作:修改张某角色
|
||
原角色:matchmaker
|
||
新角色:matchmaker + activity_manager
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百七十九章 敏感访问审计样例
|
||
|
||
```text
|
||
2026-08-28 15:10
|
||
操作员:王某
|
||
查看:USR-xxx 实名信息
|
||
原因:身份异常核验
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百八十章 后台权限测试矩阵
|
||
|
||
每个API至少测试:
|
||
|
||
```text
|
||
无Token
|
||
普通用户Token
|
||
错误Operator角色
|
||
正确角色错误组织
|
||
正确角色正确组织
|
||
敏感权限缺失
|
||
账号disabled
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百八十一章 重点越权测试一
|
||
|
||
红娘手工请求:
|
||
|
||
```text
|
||
GET /admin/users/{id}/sensitive-identity
|
||
```
|
||
|
||
结果:
|
||
|
||
> 403。
|
||
|
||
---
|
||
|
||
# 第一百八十二章 重点越权测试二
|
||
|
||
志愿者请求:
|
||
|
||
```text
|
||
GET /admin/activities/other-activity/registrations
|
||
```
|
||
|
||
非授权活动:
|
||
|
||
> 403。
|
||
|
||
---
|
||
|
||
# 第一百八十三章 重点越权测试三
|
||
|
||
机构管理员请求:
|
||
|
||
> 其他机构红娘服务。
|
||
|
||
结果:
|
||
|
||
> ORGANIZATION_SCOPE_DENIED。
|
||
|
||
---
|
||
|
||
# 第一百八十四章 重点越权测试四
|
||
|
||
审核员请求:
|
||
|
||
```text
|
||
POST /admin/risk/users/{id}/actions
|
||
```
|
||
|
||
结果:
|
||
|
||
> PERMISSION_DENIED。
|
||
|
||
---
|
||
|
||
# 第一百八十五章 重点越权测试五
|
||
|
||
风控员无:
|
||
|
||
```text
|
||
message.content.review
|
||
```
|
||
|
||
访问聊天:
|
||
|
||
> 403。
|
||
|
||
---
|
||
|
||
# 第一百八十六章 重点越权测试六
|
||
|
||
机构管理员给自己分配:
|
||
|
||
```text
|
||
super_admin
|
||
```
|
||
|
||
必须:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第一百八十七章 重点实时权限测试
|
||
|
||
管理员把红娘账号disabled。
|
||
|
||
该红娘即使页面没刷新:
|
||
|
||
下一次API:
|
||
|
||
> ACCOUNT_DISABLED。
|
||
|
||
Session失效。
|
||
|
||
---
|
||
|
||
# 第一百八十八章 后台数据审计验收
|
||
|
||
必须能回答:
|
||
|
||
```text
|
||
谁审核了这个用户?
|
||
谁封禁了这个账号?
|
||
谁取消了这场活动?
|
||
谁看过这个用户的敏感身份?
|
||
谁给这个工作人员加了权限?
|
||
```
|
||
|
||
如果回答不了:
|
||
|
||
> 审计设计不合格。
|
||
|
||
---
|
||
|
||
# 第一百八十九章 后台UX验收
|
||
|
||
工作人员登录后5秒内应该知道:
|
||
|
||
> 今天有什么需要处理。
|
||
|
||
审核员不需要在:
|
||
|
||
> 用户管理 → 搜索 → 打开 → 找审核
|
||
|
||
才能工作。
|
||
|
||
直接:
|
||
|
||
> 工作台 → 待审核。
|
||
|
||
---
|
||
|
||
# 第一百九十章 后台安全UX原则
|
||
|
||
安全不能完全依赖培训。
|
||
|
||
界面本身必须减少错误:
|
||
|
||
- 危险按钮不突出
|
||
- 高风险操作二次确认
|
||
- 敏感字段默认脱敏
|
||
- 无权限入口不显示
|
||
- 数据范围自动限制
|
||
|
||
---
|
||
|
||
# 第一百九十一章 后台P0模块
|
||
|
||
```text
|
||
统一登录
|
||
Dashboard
|
||
用户管理
|
||
资料审核
|
||
红娘服务
|
||
活动管理
|
||
举报风控
|
||
组织人员
|
||
RBAC
|
||
审计
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十二章 P1模块
|
||
|
||
```text
|
||
高级统计
|
||
敏感动态水印
|
||
MFA
|
||
临时活动账号
|
||
登录异常提醒
|
||
细化数据导出
|
||
权限复核
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十三章 P2模块
|
||
|
||
```text
|
||
跨机构高级协同
|
||
审批式权限申请
|
||
Break Glass
|
||
自动权限到期
|
||
更高级合规审计
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十四章 推荐后台代码模块
|
||
|
||
```text
|
||
admin/
|
||
auth/
|
||
dashboard/
|
||
users/
|
||
reviews/
|
||
matches/
|
||
matchmaker/
|
||
activities/
|
||
risk/
|
||
analytics/
|
||
organizations/
|
||
operators/
|
||
roles/
|
||
permissions/
|
||
audit/
|
||
configs/
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十五章 后端权限模块建议
|
||
|
||
```text
|
||
OperatorAuthService
|
||
PermissionService
|
||
RoleService
|
||
DataScopeService
|
||
OrganizationService
|
||
SensitiveAccessService
|
||
AuditService
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十六章 权限判断标准流程
|
||
|
||
```text
|
||
请求
|
||
↓
|
||
Operator认证
|
||
↓
|
||
账号是否active
|
||
↓
|
||
Organization是否active
|
||
↓
|
||
是否拥有permission
|
||
↓
|
||
DataScope是否允许resource
|
||
↓
|
||
是否涉及sensitive permission
|
||
↓
|
||
允许业务Service执行
|
||
↓
|
||
必要时Audit
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十七章 后台设计最终红线
|
||
|
||
严禁:
|
||
|
||
1. 所有工作人员共用一个admin账号
|
||
2. 红娘拥有全部用户资料权限
|
||
3. 普通管理员能浏览私人聊天
|
||
4. 志愿者看到身份证
|
||
5. 机构管理员看到其他机构全部数据
|
||
6. 前端隐藏按钮代替后端权限
|
||
7. 可以随意导出全量用户
|
||
8. 权限修改没有审计
|
||
9. 离职人员账号继续可用
|
||
10. 用户封禁可以无原因直接修改数据库状态
|
||
|
||
---
|
||
|
||
# 第一百九十八章 最终组织模型
|
||
|
||
```text
|
||
平台运营主体
|
||
│
|
||
┌─────────────┼─────────────┐
|
||
│ │ │
|
||
妇联 工会 公益服务中心
|
||
│ │ │
|
||
┌────┴───┐ ┌───┴───┐ ┌───┴────┐
|
||
│ │ │ │ │ │
|
||
活动管理员 红娘 活动人员 负责人 红娘 志愿者
|
||
|
||
平台层:
|
||
审核员
|
||
风控员
|
||
平台管理员
|
||
```
|
||
|
||
具体实际组织结构可调整,但权限模型保持一致。
|
||
|
||
---
|
||
|
||
# 第一百九十九章 最终权限模型
|
||
|
||
```text
|
||
Operator
|
||
│
|
||
├── Organization
|
||
│
|
||
├── Roles
|
||
│ ↓
|
||
│ Permissions
|
||
│
|
||
├── Data Scope
|
||
│
|
||
└── Sensitive Permissions
|
||
↓
|
||
Audit Log
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百章 最终设计原则
|
||
|
||
整个运营管理后台必须坚持:
|
||
|
||
> **后台统一,权限分开。**
|
||
|
||
> **用户属于平台,不属于某个工作人员或某个组织的私人资源。**
|
||
|
||
> **角色决定能做什么,数据范围决定能对谁做。**
|
||
|
||
> **敏感信息永远需要额外权限。**
|
||
|
||
> **红娘、审核员、活动人员、风控员职责必须分离。**
|
||
|
||
> **志愿者始终使用最低权限。**
|
||
|
||
> **机构合作不等于数据全共享。**
|
||
|
||
> **工作人员离职,权限必须立即消失。**
|
||
|
||
> **任何高风险操作必须可追溯。**
|
||
|
||
> **任何权限设计都必须同时在服务端执行,不能只靠前端隐藏。**
|
||
|
||
最终后台不是为了让管理员“什么都能看到”,而是为了做到:
|
||
|
||
> **每个人只看到完成自己工作所需要的内容,只能做自己被授权做的事情,而且做过的关键事情都能被追溯。**
|
||
|
||
这才是公益婚恋平台能够由多个组织、多个工作人员长期共同运营,而不会随着人员增加逐渐失控的基础。 |