# Change: 实现代理商（店铺）管理和代理商账号管理

## Why

当前系统已实现店铺（Shop）和账号（Account）基础模型，但缺少完整的代理商管理功能。业务需求包括：
1. 店铺（代理商）的完整生命周期管理（新增、编辑、删除、查询）
2. 店铺账号的管理（新增、编辑、密码修改、启用/禁用）
3. 店铺删除时需同步禁用所有关联账号

这是实现多级代理商体系的基础功能模块。

## What Changes

### 新增功能模块

1. **代理商（店铺）管理模块** (`shop-management`)
   - 店铺分页列表查询（支持店铺名称模糊查询，返回详细信息）
   - 店铺新增/编辑（包含地址信息、联系方式、初始密码）
   - 店铺删除（软删除，同步禁用所有关联账号）

2. **代理商账号管理模块** (`shop-account-management`)
   - 代理商账号分页列表查询（按店铺ID过滤）
   - 代理商账号新增/编辑（账号名称、手机号、密码、状态）
   - 修改密码（不需要旧密码，管理员重置场景）
   - 启用/禁用账号

### 技术实现

- 新增 Handler：`internal/handler/admin/shop.go`、`internal/handler/admin/shop_account.go`
- 新增 Service：`internal/service/shop/service.go`、`internal/service/shop_account/service.go`
- 扩展 Store：`internal/store/postgres/shop_store.go`、`internal/store/postgres/account_store.go`（新增方法）
- 新增 DTO：`internal/model/shop_dto.go`、`internal/model/shop_account_dto.go`
- 新增常量：`pkg/constants/shop.go`
- 新增错误码：`pkg/errors/codes.go`（扩展）

### 数据库变更

**无需新增表**，使用现有表：
- `tb_shop`：已存在，无需修改
- `tb_account`：已存在，无需修改

### API 端点

**店铺管理**：
- `GET /api/admin/shops` - 店铺分页列表
- `POST /api/admin/shops` - 新增店铺
- `PUT /api/admin/shops/:id` - 编辑店铺
- `DELETE /api/admin/shops/:id` - 删除店铺

**代理商账号管理**：
- `GET /api/admin/shop-accounts` - 代理商账号分页列表
- `POST /api/admin/shop-accounts` - 新增代理商账号
- `PUT /api/admin/shop-accounts/:id` - 编辑代理商账号
- `PUT /api/admin/shop-accounts/:id/password` - 修改密码
- `PUT /api/admin/shop-accounts/:id/status` - 启用/禁用账号

## Impact

### 影响的规范

- **新增 Capability**：`shop-management`（店铺管理）
- **新增 Capability**：`shop-account-management`（店铺账号管理）
- **依赖现有规范**：
  - `auth`：使用认证中间件保护端点
  - `error-handling`：使用统一错误处理
  - `data-permission`：使用数据权限过滤（代理账号只能看到自己店铺及下级）

### 影响的代码

**新增文件**（约 800 行）：
- `internal/handler/admin/shop.go`（~150 行）
- `internal/handler/admin/shop_account.go`（~150 行）
- `internal/service/shop/service.go`（~200 行）
- `internal/service/shop_account/service.go`（~150 行）
- `internal/model/shop_dto.go`（~100 行）
- `internal/model/shop_account_dto.go`（~100 行）
- `pkg/constants/shop.go`（~50 行）

**修改文件**（约 50 行）：
- `internal/store/postgres/shop_store.go`（新增 List、Delete 方法）
- `internal/store/postgres/account_store.go`（新增 GetByShopID、BulkUpdateStatus 方法）
- `pkg/errors/codes.go`（新增 4 个错误码）
- `internal/bootstrap/stores.go`、`services.go`、`handlers.go`（注册新组件）

### 兼容性

- ✅ **向后兼容**：无破坏性变更
- ✅ **数据库兼容**：无需迁移，使用现有表
- ✅ **API 兼容**：新增端点，不影响现有 API

### 风险评估

- **低风险**：功能独立，不影响现有模块
- **依赖现有**：复用已验证的认证、错误处理、数据权限机制
- **测试覆盖**：计划编写单元测试和集成测试

## Dependencies

- 依赖现有 `Shop` 和 `Account` 模型
- 依赖现有 `auth` 中间件
- 依赖现有 `error-handling` 和 `response` 包
- 依赖现有 `data-permission` 自动过滤机制

## Testing Strategy

1. **单元测试**：
   - Service 层业务逻辑（覆盖率 ≥ 90%）
   - 边界条件测试（空值、无效参数、权限校验）

2. **集成测试**：
   - 完整 API 流程测试（创建 → 查询 → 编辑 → 删除）
   - 关联关系测试（删除店铺 → 验证账号被禁用）

3. **手动测试**：
   - 分页功能测试（边界页码、空结果）
   - 数据权限测试（代理账号只能看到自己的数据）

## Documentation

- 更新 `README.md`：添加功能模块说明
- 创建 `docs/shop-management/` 目录：
  - 使用指南（API 文档）
  - 业务规则说明
