# legacy-cleanup Specification

## Purpose
TBD - created by archiving change remove-legacy-rbac-cleanup. Update Purpose after archive.
## Requirements
### Requirement: 基于店铺的数据权限过滤

系统 SHALL 在 Store 层的 List 方法中自动应用基于店铺的数据权限过滤：代理账号只能查询自己店铺及下级店铺的数据。

#### Scenario: 代理账号查询数据
- **WHEN** 代理账号（user_type=3，shop_id=X）查询业务数据列表
- **THEN** 系统自动添加 WHERE 条件：`shop_id IN (X, 及X的所有下级店铺ID)`

#### Scenario: 企业账号查询数据
- **WHEN** 企业账号（user_type=4，enterprise_id=Y）查询业务数据列表
- **THEN** 系统自动添加 WHERE 条件：`enterprise_id = Y`

#### Scenario: 平台用户跳过过滤
- **WHEN** 平台用户（user_type=1 或 2）查询业务数据列表
- **THEN** 系统不添加任何过滤条件，返回所有数据

#### Scenario: C端用户跳过过滤
- **WHEN** context 中包含 SkipOwnerFilter 标记（C端用户）
- **THEN** 系统跳过 shop_id/enterprise_id 过滤，由业务代码自行处理

---

### Requirement: 认证中间件适配新用户体系

系统 SHALL 更新认证中间件以支持新的用户类型和组织关联，在 context 中正确设置用户信息。

#### Scenario: B端用户认证
- **WHEN** B端 Token 验证成功
- **THEN** 中间件在 context 中设置：user_id、user_type、shop_id（代理）或 enterprise_id（企业）

#### Scenario: C端用户认证
- **WHEN** C端 Token 验证成功
- **THEN** 中间件在 context 中设置：customer_id、SkipOwnerFilter=true

#### Scenario: Token类型不匹配
- **WHEN** C端 Token 访问 /api/v1/ 或 B端 Token 访问 /api/c/
- **THEN** 中间件返回 401 Unauthorized

---

### Requirement: 权限校验适配新体系

系统 SHALL 更新权限校验中间件以支持角色类型匹配和权限端口校验。

#### Scenario: 权限端口校验
- **WHEN** 用户访问权限保护的接口
- **THEN** 中间件检查用户权限的 platform 字段是否与请求来源匹配

#### Scenario: 超级管理员跳过权限
- **WHEN** 超级管理员（user_type=1）访问任意接口
- **THEN** 中间件跳过权限校验，允许访问

---

### Requirement: 访问日志记录新字段

系统 SHALL 在访问日志中记录新的用户体系字段，便于问题排查和数据分析。

#### Scenario: B端用户访问日志
- **WHEN** B端用户发起 HTTP 请求
- **THEN** 访问日志包含字段：user_id、user_type、shop_id（或 enterprise_id）

#### Scenario: C端用户访问日志
- **WHEN** C端用户发起 HTTP 请求
- **THEN** 访问日志包含字段：customer_id、标记为 C 端用户

---

