# 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** 提案完成后执行，因为角色分配规则需要基于新的用户类型定义。
