Files
junhong_cmp_fiber/openspec/changes/enterprise-card-authorization/proposal.md
huang fdcff33058
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m9s
feat: 实现企业卡授权和授权记录管理功能
主要功能:
- 添加企业卡授权/回收接口 (POST /enterprises/:id/allocate-cards, recall-cards)
- 添加授权记录管理接口 (GET/PUT /authorizations)
- 实现代理用户数据权限过滤(只能查看自己店铺下企业的授权记录)
- 添加 GORM callback 支持授权记录表的数据权限过滤

技术改进:
- 原生 SQL 查询手动添加数据权限过滤(ListWithJoin, GetByIDWithJoin)
- 移除卡授权预检接口(allocate-cards/preview),保留内部方法
- 完善单元测试和集成测试覆盖
2026-01-26 15:07:03 +08:00

29 lines
1.8 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.
## Why
当前企业卡授权功能存在权限控制不当的问题,未真正实现单卡授权。需要改造现有功能,确保授权不转移所有权,实现精细化的权限控制,让企业只能看到必要信息,同时保护商业敏感数据。
## What Changes
- **改造授权逻辑**授权不再转移所有权shop_id 保持不变),只授予使用权限
- **权限控制增强**:代理只能授权自己的卡给自己的企业,平台可授权任意卡但需遵循代理归属规则
- **授权范围限制**:只能授权单卡,已绑定设备的卡和非"已分销"状态的卡不能授权
- **数据隔离优化**:企业可见卡基本信息和运营数据,不可见成本价、分销价、供应商等商业敏感信息
- **存储方式变更**:授权记录存储到专用的 EnterpriseCardAuthorization 表,不再使用 AssetAllocationRecord
- **接口简化**:移除预检接口,直接使用批量授权接口处理所有授权请求
- **权限即时生效**:回收授权后企业立即失去访问权限
## Capabilities
### New Capabilities
- `enterprise-card-authorization`: 企业单卡授权管理,包括授权、回收、查询等完整功能
### Modified Capabilities
- `iot-card-management`: 物联网卡管理功能需要增加授权状态查询和权限控制逻辑
## Impact
- **数据库变更**:新增 EnterpriseCardAuthorization 表,需要创建对应的 Model 和迁移文件
- **API 变更**:修改现有授权接口,移除预检接口,调整权限控制逻辑
- **权限系统**:需要更新权限中间件,支持基于授权记录的细粒度权限控制
- **查询逻辑**:企业查询物联网卡时需要额外检查授权记录,并过滤敏感字段
- **前端影响**:需要调整授权界面,移除预检步骤,更新数据展示逻辑