# 授权记录管理 - 实现任务

## 1. 数据权限修复

- [x] 1.1 修改 `pkg/gorm/callback.go`，为 `tb_enterprise_card_authorization` 表添加特殊处理逻辑
- [x] 1.2 添加单元测试验证授权记录表的数据权限过滤（`pkg/gorm/callback_test.go`）

## 2. DTO 定义

- [x] 2.1 创建 `internal/model/dto/authorization_dto.go`，定义列表请求/响应结构
- [x] 2.2 添加详情响应结构 `AuthorizationDetailResp`
- [x] 2.3 添加更新备注请求结构 `UpdateAuthorizationRemarkReq`

## 3. Store 层实现

- [x] 3.1 在 `EnterpriseCardAuthorizationStore` 中添加 `ListWithJoin` 方法（关联查询企业名、卡信息、授权人名）
- [x] 3.2 添加 `GetByIDWithJoin` 方法（详情查询）
- [x] 3.3 添加 `UpdateRemark` 方法
- [x] 3.4 在 `ListWithJoin` 和 `GetByIDWithJoin` 中手动添加数据权限过滤（原生 SQL 绕过 GORM callback）

## 4. Service 层实现

- [x] 4.1 在 `AuthorizationService` 中添加 `List` 方法（列表查询，支持筛选条件）
- [x] 4.2 添加 `GetDetail` 方法（详情查询）
- [x] 4.3 添加 `UpdateRemark` 方法（更新备注）

## 5. Handler 层实现

- [x] 5.1 创建 `internal/handler/admin/authorization.go`
- [x] 5.2 实现 `List` handler（GET /authorizations）
- [x] 5.3 实现 `GetDetail` handler（GET /authorizations/:id）
- [x] 5.4 实现 `UpdateRemark` handler（PUT /authorizations/:id/remark）

## 6. 路由注册

- [x] 6.1 创建 `internal/routes/authorization.go`，注册路由组
- [x] 6.2 在 `internal/routes/routes.go` 中调用路由注册
- [x] 6.3 更新 `internal/bootstrap/handlers.go`，添加 AuthorizationHandler
- [x] 6.4 更新 `internal/bootstrap/types.go`，添加 Handler 类型
- [x] 6.5 更新 `cmd/api/docs.go` 和 `cmd/gendocs/main.go`，添加文档生成

## 7. 测试

- [x] 7.1 编写 Store 层单元测试（`tests/unit/enterprise_card_authorization_store_test.go`）
- [x] 7.2 编写 Service 层单元测试（`tests/unit/enterprise_card_authorization_permission_test.go`）
- [x] 7.3 编写集成测试（`tests/integration/authorization_test.go`）

## 8. 验证

- [x] 8.1 运行 `go build ./...` 确保编译通过
- [x] 8.2 运行 `go test ./...` 确保测试通过
- [x] 8.3 集成测试 API 端到端验证（列表、详情、更新备注、认证）
- [x] 8.4 验证数据权限：代理用户只能看到自己店铺的数据（集成测试验证通过）
