Files
junhong_cmp_fiber/openspec/changes/archive/2026-01-10-remove-legacy-rbac-cleanup/proposal.md
huang 743db126f7 重构数据权限模型并清理旧RBAC代码
核心变更:
- 数据权限过滤从基于账号层级改为基于用户类型的多策略过滤
- 移除 AccountStore 中的 GetSubordinateIDs 等旧方法
- 重构认证中间件,支持 enterprise_id 和 customer_id
- 更新 GORM Callback,根据用户类型自动选择过滤策略(代理/企业/个人客户)
- 更新所有集成测试以适配新的 API 签名
- 添加功能总结文档和 OpenSpec 归档

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 15:08:11 +08:00

62 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 正常工作