# 统一账号管理接口重构

## Why

当前账号管理接口存在严重的架构混乱和安全漏洞：
1. **接口重复**：`/accounts` 和 `/platform-accounts` 使用同一个 Handler，功能完全重复（20个重复接口）
2. **功能不一致**：平台账号有完整的 CRUD + 角色管理，而代理/企业账号缺少关键功能
3. **命名混乱**：`/customer-accounts` 实际管理的是企业账号，代码注释错误
4. **安全漏洞**：Create 操作缺少越权检查，代理可以为其他店铺创建账号
5. **可维护性差**：三个独立的 Service（Account、ShopAccount、CustomerAccount）导致代码重复和不一致

这次重构将统一接口架构，消除重复，加固安全防护，并添加完整的操作审计，为后续功能扩展打下坚实基础。

## What Changes

- **BREAKING**: 删除旧路由
  - 删除 `/api/admin/platform-accounts/*`（10个接口）
  - 删除 `/api/admin/shop-accounts/*`（5个接口）
  - 删除 `/api/admin/customer-accounts/*`（5个接口）
- **新增**: 统一账号管理路由
  - `/api/admin/accounts/platform/*`（平台账号管理）
  - `/api/admin/accounts/shop/*`（代理账号管理）
  - `/api/admin/accounts/enterprise/*`（企业账号管理）
- **BREAKING**: 认证接口统一
  - 删除 `/api/admin/login`、`/api/admin/logout` 等（5个接口）
  - 删除 `/api/h5/login`、`/api/h5/logout` 等（5个接口）
  - 新增 `/api/auth/*` 统一认证（5个接口）
  - 保留 `/api/c/v1/*` 个人客户认证（独立业务逻辑）
- **新增**: 三层越权防护机制
  - 路由层：企业账号中间件拦截
  - Service 层：CanManageShop/CanManageEnterprise 权限检查
  - GORM 层：已有自动过滤（保持）
- **新增**: 操作审计系统
  - 数据库迁移：创建 `tb_account_operation_log` 表
  - Service：AccountAuditService 记录所有账号操作
  - 集成：Create/Update/Delete/AssignRoles 自动记录
- **重构**: 合并 Service 层
  - 删除 ShopAccountService、CustomerAccountService
  - 扩展 AccountService 支持所有账号类型
  - 统一错误返回："无权限操作该资源或资源不存在"
- **重构**: 合并 Handler 层
  - 删除 ShopAccountHandler、CustomerAccountHandler
  - 扩展 AccountHandler 支持所有账号类型
- **新增**: 权限辅助函数
  - `pkg/middleware/permission_helper.go`
  - CanManageShop：验证代理对目标店铺的管理权限
  - CanManageEnterprise：验证代理对目标企业的管理权限

## Capabilities

### New Capabilities
- `account-permission-check`：账号管理权限检查机制（三层防护）
- `account-operation-audit`：账号操作审计日志系统
- `unified-auth-api`：统一认证接口（后台+H5）

### Modified Capabilities
- `account-management`：账号管理接口架构（统一路由结构，消除重复）

## Impact

**代码变更**：
- 删除文件：
  - `internal/handler/admin/shop_account.go`
  - `internal/handler/admin/customer_account.go`
  - `internal/service/shop_account/service.go`
  - `internal/service/customer_account/service.go`
  - `internal/routes/shop.go`（部分）
  - `internal/routes/customer_account.go`
- 修改文件：
  - `internal/handler/admin/account.go`（扩展支持所有账号类型）
  - `internal/service/account/service.go`（添加权限检查和审计）
  - `internal/routes/account.go`（新路由结构）
  - `internal/routes/admin.go`（更新路由注册）
- 新增文件：
  - `pkg/middleware/permission_helper.go`（权限检查函数）
  - `internal/model/account_operation_log.go`（审计日志模型）
  - `internal/store/postgres/account_operation_log_store.go`（审计日志存储）
  - `internal/service/account_audit/service.go`（审计日志服务）
  - `migrations/XXXXXX_create_account_operation_log.up.sql`（数据库迁移）

**API 变更**（Breaking Changes）：
- 前端需要更新所有账号管理接口调用
- 新旧路由映射：
  ```
  旧：POST /api/admin/platform-accounts
  新：POST /api/admin/accounts/platform
  
  旧：GET /api/admin/shop-accounts
  新：GET /api/admin/accounts/shop
  
  旧：POST /api/admin/customer-accounts
  新：POST /api/admin/accounts/enterprise
  
  旧：POST /api/admin/login
  新：POST /api/auth/login
  ```

**测试变更**：
- 删除：`tests/integration/platform_account_test.go`（已有 account_test.go）
- 删除：`tests/integration/shop_account_management_test.go`
- 删除：`tests/unit/customer_account_service_test.go`
- 修改：`tests/integration/account_test.go`（扩展覆盖所有账号类型）
- 新增：`tests/integration/account_permission_test.go`（越权防护测试）
- 新增：`tests/integration/account_audit_test.go`（审计日志测试）

**依赖影响**：
- 无新增外部依赖
- 内部依赖调整：AccountService 新增 ShopStore 和 EnterpriseStore 依赖

**性能影响**：
- 权限检查：增加 GetSubordinateShopIDs 调用（已有 Redis 缓存，影响 < 5ms）
- 审计日志：异步写入，不阻塞主流程
- 预期 API 响应时间增加 < 10ms

**安全提升**：
- 修复 Create 操作越权漏洞（Critical）
- 统一错误返回，防止信息泄露
- 完整操作审计，满足合规要求
