核心变更: - 数据权限过滤从基于账号层级改为基于用户类型的多策略过滤 - 移除 AccountStore 中的 GetSubordinateIDs 等旧方法 - 重构认证中间件,支持 enterprise_id 和 customer_id - 更新 GORM Callback,根据用户类型自动选择过滤策略(代理/企业/个人客户) - 更新所有集成测试以适配新的 API 签名 - 添加功能总结文档和 OpenSpec 归档 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
62 lines
2.2 KiB
Markdown
62 lines
2.2 KiB
Markdown
# Change: 清理旧 RBAC 系统和代码整理
|
||
|
||
## Why
|
||
|
||
前三个提案完成后,系统将拥有新的用户组织模型和角色权限体系。需要清理旧的 RBAC 相关代码,更新中间件和埋点逻辑,确保新旧系统平滑过渡。
|
||
|
||
根据用户描述,当前系统是"完全是个架子",无实际业务数据需要迁移,主要工作是代码清理和中间件调整。
|
||
|
||
## What Changes
|
||
|
||
### 代码清理
|
||
|
||
- **移除旧逻辑**: 清理基于 `tb_account.parent_id` 的递归查询逻辑
|
||
- **更新中间件**: 调整认证和权限校验中间件以适配新模型
|
||
- **更新埋点**: 调整日志和监控中的用户标识逻辑
|
||
|
||
### 中间件调整
|
||
|
||
1. **认证中间件**: 适配新的用户类型(超级管理员/平台/代理/企业)
|
||
2. **权限中间件**: 使用新的角色权限体系和端口校验
|
||
3. **数据权限中间件**: 改为基于店铺层级的过滤逻辑
|
||
|
||
### Store 层调整
|
||
|
||
- 移除 `account_store.go` 中基于 `parent_id` 的递归查询
|
||
- 使用新的 `shop_store.go` 中基于店铺层级的递归查询
|
||
- 更新 Redis 缓存 key(从账号下级改为店铺下级)
|
||
|
||
## Impact
|
||
|
||
- **Affected specs**: auth, data-permission
|
||
- **Affected code**:
|
||
- `internal/store/postgres/account_store.go` - 移除旧的递归查询
|
||
- `internal/middleware/auth.go` - 适配新用户类型
|
||
- `internal/middleware/permission.go` - 适配新权限体系
|
||
- `pkg/constants/` - 清理旧常量,确保使用新定义
|
||
|
||
## 依赖关系
|
||
|
||
本提案是最后执行的提案,依赖前三个提案全部完成:
|
||
|
||
1. ✓ add-user-organization-model
|
||
2. ✓ add-role-permission-system
|
||
3. ✓ add-personal-customer-wechat
|
||
4. → **remove-legacy-rbac-cleanup(本提案)**
|
||
|
||
## 风险评估
|
||
|
||
由于当前系统无实际业务数据:
|
||
|
||
- **数据迁移风险**: 无(无需迁移)
|
||
- **回滚风险**: 低(可以通过 Git 回滚代码)
|
||
- **兼容性风险**: 无(无外部系统依赖当前 API)
|
||
|
||
## 验收标准
|
||
|
||
1. 所有旧的 `parent_id` 相关代码已移除或更新
|
||
2. 中间件正确使用新的用户类型和权限体系
|
||
3. 数据权限过滤正确基于店铺层级工作
|
||
4. 所有单元测试和集成测试通过
|
||
5. 应用启动无错误,核心 API 正常工作
|