# Change: 重构角色权限体系 ## Why 当前系统的角色权限模型(Role、Permission、AccountRole、RolePermission)需要适配新的用户组织体系。主要问题: 1. 角色类型(role_type)需要与新的用户类型对应 2. 权限缺少端口区分(某些权限只在 Web 后台有效,某些只在 H5 有效) 3. 账号-角色关联规则需要调整(平台用户可多角色,代理/企业只能单角色) ## What Changes ### 修改现有模型 - **Role**: 重新定义角色类型枚举(平台角色、客户角色) - **Permission**: 添加 `platform` 字段支持按端口区分权限(all/web/h5) - **AccountRole**: 添加角色数量限制逻辑 ### 业务规则 1. **平台角色**: 用于区分平台用户的不同职责(运营、客服、管理等) 2. **客户角色**: 用于决定代理/企业客户的能力边界 3. **权限端口**: - `all` - 通用权限(Web 和 H5 均可用) - `web` - 仅 Web 后台使用 - `h5` - 仅 H5 端使用 ### 角色分配规则 | 用户类型 | 可分配角色类型 | 角色数量限制 | |---------|--------------|-------------| | 超级管理员 | 无需角色 | 0 | | 平台用户 | 平台角色 | 多个 | | 代理账号 | 客户角色 | 1个 | | 企业账号 | 客户角色 | 1个 | | 个人客户 | 无角色 | 0 | ## Impact - **Affected specs**: role-permission (新建), auth - **Affected code**: - `internal/model/role.go` - 修改角色类型定义 - `internal/model/permission.go` - 添加 platform 字段 - `internal/store/postgres/account_role_store.go` - 添加角色数量校验 - `internal/service/` - 添加角色分配逻辑 - `migrations/` - 修改表结构迁移脚本 - `pkg/constants/` - 添加角色类型、权限端口常量 ## 依赖关系 本提案依赖 **add-user-organization-model** 提案完成后执行,因为角色分配规则需要基于新的用户类型定义。