# SDK Server 使用文档

## 概述

SDK Server 是一个用于与后端模板服务进行通信的客户端SDK，基于提供的NestJS控制器API设计。

## 后端API接口

基于以下NestJS控制器：

```typescript
@Controller() 
export class AppController { 
  @Get() 
  async getTemplates() // 获取所有模板
  
  @Get(':templateCode') 
  async getTemplate(@Param('templateCode') templateCode: string) // 获取单个模板
  
  @Post() 
  async executeTemplate(@Body('imageUrl') imageUrl: string, @Body('templateCode') templateCode: string) // 执行模板
}
```

## 快速开始

### 1. 基础使用

```typescript
import { bowongAI } from '../sdk';

// 获取所有模板
const templates = await bowongAI.getAllTemplates();

// 获取单个模板
const template = await bowongAI.getTemplate('1');

// 执行模板处理
const result = await bowongAI.executeTemplate('1', 'https://example.com/image.jpg');
```

### 2. 使用独立的SDK Server

```typescript
import { SdkServer } from '../sdk/sdk-server';

const server = new SdkServer('http://localhost:3000');

// 获取模板列表
const templates = await server.getAllTemplates();

// 执行模板
const result = await server.executeTemplate({
  templateCode: '1',
  imageUrl: 'https://example.com/image.jpg'
});
```

### 3. 配置自定义服务器

```typescript
import { BowongAISDK } from '../sdk';

// 使用自定义模板服务器URL
const sdk = new BowongAISDK('http://your-template-server.com');

const templates = await sdk.getAllTemplates();
```

## API 方法

### getAllTemplates()
获取所有可用的模板列表。

**返回值：** `Promise<Template[]>`

### getTemplate(templateCode: string)
根据模板代码获取单个模板信息。

**参数：**
- `templateCode`: 模板代码

**返回值：** `Promise<Template | null>`

### executeTemplate(templateCode: string, imageUrl: string)
执行指定模板的图像处理。

**参数：**
- `templateCode`: 模板代码
- `imageUrl`: 要处理的图像URL

**返回值：** `Promise<ExecuteTemplateResult>`

### getTemplatesByCodes(templateCodes: string[])
批量获取指定的模板。

**参数：**
- `templateCodes`: 模板代码数组

**返回值：** `Promise<Template[]>`

### checkTemplateServerConnection()
检查模板服务器的连接状态。

**返回值：** `Promise<boolean>`

## 数据类型

### Template
```typescript
interface Template {
  code: string;           // 模板唯一标识码
  name: string;           // 模板名称
  description: string;    // 模板详细描述
  creditCost: number;     // 积分消耗
  version: string;        // 版本号
  input: string;          // 原始图片
  output: string;         // 输出图片
  tags: string[];         // 标签数组
}
```

### ExecuteTemplateResult
```typescript
interface ExecuteTemplateResult {
  result: string | null;  // 执行结果
  success: boolean;       // 是否成功
  message: string;        // 状态消息
}
```

### ApiResponse (后端响应格式)
```typescript
interface ApiResponse<T = any> {
  status: boolean | string;  // 响应状态
  data: T;                  // 响应数据
  msg: string;              // 响应消息
}
```

## 配置

### 环境配置
在 `sdk-server-config.ts` 中配置不同环境的服务器地址：

```typescript
// 开发环境
export const DEV_CONFIG = {
  baseUrl: 'http://localhost:3000',
  timeout: 30000,
};

// 生产环境
export const PROD_CONFIG = {
  baseUrl: 'https://api.your-domain.com',
  timeout: 30000,
};
```

### 错误处理

```typescript
try {
  const templates = await bowongAI.getAllTemplates();
} catch (error) {
  console.error('获取模板失败:', error);
  // 处理错误
}
```

## 示例

查看 `sdk-server-example.ts` 文件获取完整的使用示例。

## 注意事项

1. 确保后端服务器已启动并可访问
2. 检查网络连接和服务器地址配置
3. 处理可能的网络错误和超时
4. 在生产环境中使用正确的服务器地址
