# Tools迁移计划

## 🎯 目标
将 `src/shared/libs/` 中的JS工具迁移到 `browser-automation-ts/src/tools/`，统一使用TypeScript和ITool规范。

---

## 📊 迁移清单

### 1. AccountGenerator ✅ (已创建)
- **源文件**: `src/shared/libs/account-generator.js`
- **目标**: `browser-automation-ts/src/tools/AccountGenerator.ts`
- **状态**: ✅ 完成（新实现符合ITool规范）
- **接口**: `IAccountGenerator`

### 2. CardGenerator
- **源文件**: `src/shared/libs/card-generator.js`
- **目标**: `browser-automation-ts/src/tools/CardGenerator.ts`
- **状态**: ⏳ 待迁移
- **接口**: `ICardGenerator`
- **依赖**: Database
- **功能**:
  - 从数据库获取未使用的卡
  - 标记卡为已使用
  - BIN去重逻辑

### 3. EmailHandler
- **源文件**: `src/shared/libs/email-handler.js` (如果存在)
- **目标**: `browser-automation-ts/src/tools/EmailHandler.ts`
- **状态**: ⏳ 待创建
- **接口**: `IEmailHandler`
- **功能**:
  - 连接邮箱服务
  - 获取验证码
  - 解析邮件内容

### 4. CaptchaSolver
- **源文件**: `src/shared/libs/captcha-solver.js`
- **目标**: `browser-automation-ts/src/tools/CaptchaSolver.ts`
- **状态**: ⏳ 待迁移
- **接口**: `ICaptchaHandler`
- **功能**:
  - Turnstile处理
  - hCaptcha处理
  - reCAPTCHA处理

### 5. DatabaseClient
- **源文件**: `src/shared/libs/database.js`
- **目标**: `browser-automation-ts/src/tools/DatabaseClient.ts`
- **状态**: ⏳ 待迁移
- **接口**: `IDatabaseClient`
- **功能**:
  - MySQL连接
  - 保存账号数据
  - 保存卡片数据
  - 查询操作

---

## 🏗️ 最终架构

```
browser-automation-ts/
├── src/
│   ├── core/                     # 核心（Provider、Action、WorkflowEngine）
│   ├── adapters/                 # 适配器接口
│   └── tools/                    # 业务工具（符合ITool规范）
│       ├── ITool.ts             # ✅ 工具接口规范
│       ├── AccountGenerator.ts   # ✅ 账号生成器
│       ├── CardGenerator.ts      # ⏳ 卡生成器
│       ├── EmailHandler.ts       # ⏳ 邮箱处理器
│       ├── CaptchaSolver.ts      # ⏳ 验证码处理器
│       └── DatabaseClient.ts     # ⏳ 数据库客户端
├── configs/
│   └── sites/
│       ├── windsurf.yaml         # 流程定义
│       └── windsurf-adapter.ts   # 业务逻辑（使用tools）
└── cli/
    └── run.ts                    # 通用执行器
```

---

## 💡 使用示例

### Windsurf Adapter示例

```typescript
import { WindsurfAdapter } from './windsurf-adapter';
import { AccountGenerator } from '../../src/tools/AccountGenerator';
import { CardGenerator } from '../../src/tools/CardGenerator';
import { DatabaseClient } from '../../src/tools/DatabaseClient';

class WindsurfAdapter implements ISiteAdapter {
  private accountGen: AccountGenerator;
  private cardGen: CardGenerator;
  private db: DatabaseClient;

  async initialize(context: any) {
    // 初始化工具
    this.accountGen = new AccountGenerator({
      emailDomain: 'tempmail.com'
    });
    await this.accountGen.initialize();

    this.db = new DatabaseClient({
      host: 'localhost',
      database: 'accounts'
    });
    await this.db.initialize();

    this.cardGen = new CardGenerator({
      database: this.db
    });
    await this.cardGen.initialize();

    // 生成账号（如果需要）
    if (!context.data.account.email) {
      context.data.account = await this.accountGen.generate();
    }
  }

  getHandlers() {
    return {
      generateCard: async () => {
        const card = await this.cardGen.generate();
        this.context.data.card = card;
        return { success: true, data: card };
      },
      
      saveToDatabase: async () => {
        await this.db.saveAccount(this.context.data.account);
        await this.db.saveCard(this.context.data.card);
        return { success: true };
      }
    };
  }
}
```

---

## ✅ 迁移优势

1. **类型安全** - 全TypeScript，编译时检查
2. **统一规范** - 所有工具实现ITool接口
3. **易测试** - 接口明确，方便mock
4. **可扩展** - 新工具遵循同样规范
5. **解耦** - 工具独立，adapter组合使用

---

## 📅 迁移计划

### 第一阶段：核心工具（当前）
- [x] ITool接口规范
- [x] AccountGenerator
- [ ] DatabaseClient（优先）
- [ ] CardGenerator

### 第二阶段：扩展工具
- [ ] EmailHandler
- [ ] CaptchaSolver

### 第三阶段：测试和优化
- [ ] 单元测试
- [ ] 集成测试
- [ ] 性能优化

---

## 🚀 开始使用

当前可以直接使用：
```bash
# 只需设置AdsPower ID
export ADSPOWER_USER_ID="your-id"

# 运行（会自动生成账号）
pnpm run run -- windsurf
```

账号数据完全由 `AccountGenerator` 自动生成！
