重构数据权限模型并清理旧RBAC代码

核心变更:
- 数据权限过滤从基于账号层级改为基于用户类型的多策略过滤
- 移除 AccountStore 中的 GetSubordinateIDs 等旧方法
- 重构认证中间件,支持 enterprise_id 和 customer_id
- 更新 GORM Callback,根据用户类型自动选择过滤策略(代理/企业/个人客户)
- 更新所有集成测试以适配新的 API 签名
- 添加功能总结文档和 OpenSpec 归档

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-10 15:08:11 +08:00
parent 9c6d4a3bd4
commit 743db126f7
26 changed files with 1292 additions and 322 deletions

View File

@@ -0,0 +1,61 @@
# 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 正常工作