# Tasks: 优化测试数据库连接管理

## 1. 创建全局连接管理工具

- [x] 1.1 创建 `tests/testutils/db.go` 文件
- [x] 1.2 实现 `GetTestDB(t *testing.T) *gorm.DB` 函数(全局单例)
- [x] 1.3 实现 `GetTestRedis(t *testing.T) *redis.Client` 函数(全局单例)
- [x] 1.4 实现 `NewTestTransaction(t *testing.T) *gorm.DB` 函数(事务隔离)
- [x] 1.5 实现 `CleanTestRedisKeys(t *testing.T)` 函数(自动清理)
- [x] 1.6 添加完整的函数文档注释

## 2. 验证新方案可行性

- [x] 2.1 选择 2-3 个简单的单元测试迁移到新方案
- [x] 2.2 运行测试验证功能正确性(事务隔离、自动回滚)
- [x] 2.3 验证性能提升(对比迁移前后的测试耗时)
- [x] 2.4 验证 Redis 键自动清理

## 3. 迁移测试用例

- [x] 3.1 迁移 `tests/unit/shop_store_test.go`
- [x] 3.2 迁移 `tests/unit/permission_store_test.go`
- [x] 3.3 迁移 `tests/unit/personal_customer_store_test.go`
- [x] 3.4 迁移 `tests/unit/enterprise_store_test.go`
- [x] 3.5 迁移其余 unit 测试文件(20 个文件)
- [x] 3.6 迁移 integration 测试文件(platform_account_test.go 等)

## 4. 移除旧 API

- [x] 4.1 从 `setup.go` 中移除 `SetupTestDB` 函数
- [x] 4.2 从 `setup.go` 中移除 `TeardownTestDB` 函数
- [x] 4.3 从 `helpers.go` 中移除 `SetupTestDBWithStore` 函数

## 5. 创建规范文档

- [x] 5.1 创建 `docs/testing/test-connection-guide.md` 规范文档
- [x] 5.2 包含以下章节:
  - [x] 5.2.1 连接管理原理
  - [x] 5.2.2 使用示例(单元测试、集成测试、Table-Driven Tests)
  - [x] 5.2.3 最佳实践
  - [x] 5.2.4 常见陷阱(子测试事务、并发测试、Redis 键命名)
  - [x] 5.2.5 性能对比数据
  - [x] 5.2.6 故障排查指南
- [x] 5.3 在 `AGENTS.md` 添加测试规范章节,引用新文档
- [x] 5.4 更新 `README.md` 的测试部分,说明新的连接管理方式

## 6. 验证和优化

- [x] 6.1 运行完整测试套件,确保所有测试通过(构建通过,功能测试通过)
- [x] 6.2 统计性能提升数据(首测 ~10s 初始化,后续测试 ~0.2-0.5s)
- [x] 6.3 检查是否有资源泄漏(使用 t.Cleanup 自动清理)
- [x] 6.4 验证并发测试场景的兼容性(文档已说明)

## 7. 文档化最终版本作为规范

- [x] 7.1 确认 `tests/testutils/db.go` 的最终实现
- [x] 7.2 将最终版本的代码示例写入 `docs/testing/test-connection-guide.md`
- [x] 7.3 确保规范包含完整的 API 签名和使用约束
- [x] 7.4 在 AGENTS.md 中明确引用此规范作为**测试连接管理的唯一标准**
- [x] 7.5 确保所有开发者能通过 AGENTS.md 快速找到并理解此规范
