# 在线脚本管理接口文档

## 一、在线脚本模块概述

在线脚本模块是配合天风任务模块使用的核心功能，允许用户创建、编辑、管理和执行Python脚本。该模块支持脚本版本控制，运行脚本并查看执行日志等功能。

## 二、在线脚本模块接口

### 1. 获取脚本列表

#### 接口描述
获取系统中的脚本列表，支持分页、排序和筛选。数据来源是vwed_script表。

#### 请求方式
- **HTTP方法**: GET
- **接口路径**: `/api/vwed-script/list`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| page | Integer | 否 | 页码，默认为1 |
| pageSize | Integer | 否 | 每页记录数，默认为20 |
| name | String | 否 | 脚本名称，支持模糊查询 |
| status | Integer | 否 | 脚本状态(1:启用, 0:禁用) |
| folderPath | String | 否 | 脚本所在目录路径 |
| tags | String | 否 | 标签，支持模糊查询 |
| isPublic | Integer | 否 | 是否公开(1:是, 0:否) |
| createdBy | String | 否 | 创建者 |
| startTime | String | 否 | 创建时间范围的开始时间，格式：yyyy-MM-dd HH:mm:ss |
| endTime | String | 否 | 创建时间范围的结束时间，格式：yyyy-MM-dd HH:mm:ss |

#### 响应参数

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "total": 15,
    "list": [
      {
        "id": "script-001",
        "name": "数据处理脚本",
        "folderPath": "/数据处理",
        "fileName": "data_processor.py",
        "description": "用于处理CSV数据的脚本",
        "version": 3,
        "status": 1,
        "isPublic": 1,
        "tags": "数据,CSV,处理",
        "createdBy": "admin",
        "createdOn": "2025-04-10 09:30:45",
        "updatedBy": "admin",
        "updatedOn": "2025-04-12 15:20:10"
      },
      {
        "id": "script-002",
        "name": "邮件发送脚本",
        "folderPath": "/通知",
        "fileName": "email_sender.py",
        "description": "自动发送邮件通知的脚本",
        "version": 1,
        "status": 1,
        "isPublic": 1,
        "tags": "邮件,通知",
        "createdBy": "user1",
        "createdOn": "2025-04-11 10:15:22",
        "updatedBy": "user1",
        "updatedOn": "2025-04-11 10:15:22"
      }
    ]
  }
}
```

### 2. 获取脚本详情

#### 接口描述
获取指定脚本的详细信息，包括脚本代码内容。

#### 请求方式
- **HTTP方法**: GET
- **接口路径**: `/api/vwed-script/{id}`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| id | String | 是 | 脚本ID，路径参数 |

#### 响应参数

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "id": "script-001",
    "name": "数据处理脚本",
    "folderPath": "/数据处理",
    "fileName": "data_processor.py",
    "description": "用于处理CSV数据的脚本",
    "code": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\ndef process_data(input_file, output_file):\n    # 处理逻辑\n    pass\n\nif __name__ == '__main__':\n    process_data('input.csv', 'output.csv')",
    "version": 3,
    "status": 1,
    "isPublic": 1,
    "tags": "数据,CSV,处理",
    "createdBy": "admin",
    "createdOn": "2025-04-10 09:30:45",
    "updatedBy": "admin",
    "updatedOn": "2025-04-12 15:20:10",
    "testParams": "{\"input_file\": \"test.csv\", \"output_file\": \"result.csv\"}"
  }
}
```

### 3. 创建脚本

#### 接口描述
创建一个新的脚本。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-script`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| folderPath | String | 否 | 脚本所在目录路径 |
| fileName | String | 是 | 脚本文件名，必须以.py结尾 |
#### 请求示例

```json
{
  "folderPath": "/数据处理",
  "fileName": "data_processor.py",
}
```

#### 响应参数

```json
{
  "code": 200,
  "message": "创建成功",
  "data": {
    "id": "script-001"
  }
}
```

### 4. 更新脚本

#### 接口描述
更新现有脚本的信息，包括代码内容。每次更新会自动生成新的版本记录。

#### 请求方式
- **HTTP方法**: PUT
- **接口路径**: `/api/vwed-script/{id}`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| id | String | 是 | 脚本ID，路径参数 |
| folderPath | String | 是 | 脚本所在目录路径 |
| fileName | String | 是 | 脚本文件名，必须以.py结尾 |
| code | String | 是 | 脚本代码内容 |

#### 请求示例

```json
{
  "code": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\ndef process_data(input_file, output_file):\n    # 更新的处理逻辑\n    with open(input_file, 'r') as f_in:\n        data = f_in.read()\n    \n    # 处理数据\n    processed_data = data.upper()\n    \n    with open(output_file, 'w') as f_out:\n        f_out.write(processed_data)\n\nif __name__ == '__main__':\n    process_data('input.csv', 'output.csv')",
  "changeLog": "增加了文件读写功能"
}
```

#### 响应参数

```json
{
  "code": 200,
  "message": "更新成功",
  "data": {
    "version": 4
  }
}
```

### 5. 删除脚本

#### 接口描述
删除指定的脚本，同时删除所有相关的版本记录。

#### 请求方式
- **HTTP方法**: DELETE
- **接口路径**: `/api/vwed-script/{id}`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| id | String | 是 | 脚本ID，路径参数 |

#### 响应参数

```json
{
  "code": 200,
  "message": "删除成功",
  "data": null
}
```

### 6. 运行脚本

#### 接口描述
执行指定的脚本，并返回执行结果。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-script/{id}/run`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| id | String | 是 | 脚本ID，路径参数 |

#### 请求示例

```json
{

  "id": "task-001",
}
```

#### 响应参数

```json
{
  "code": 200,
  "message": "执行成功",
  "data": {
    "logId": "log-001",
    "result": {
      "status": "success",
      "output": {
        "processed_rows": 100,
        "duration": 0.25
      }
    },
    "executionTime": 250
  }
}
```

### 7. 停止脚本执行

#### 接口描述
停止正在执行的脚本。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-script/stop`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| logId | String | 是 | 脚本执行日志ID |

#### 请求示例

```json
{
  "logId": "log-001"
}
```

#### 响应参数

```json
{
  "code": 200,
  "message": "已停止执行",
  "data": null
}
```


### 12. 获取脚本执行日志详情

#### 接口描述
获取特定脚本执行日志的详细信息。

#### 请求方式
- **HTTP方法**: GET
- **接口路径**: `/api/vwed-script/log/{logId}`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| logId | String | 是 | 脚本执行日志ID，路径参数 |

#### 响应参数

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "id": "log-003",
    "scriptId": "script-001",
    "scriptName": "数据处理脚本",
    "version": 3,
    "taskRecordId": "task-001",
    "blockRecordId": "block-001",
    "inputParams": "{\"input_file\":\"data.csv\",\"output_file\":\"result.csv\"}",
    "outputResult": "{\"status\":\"success\",\"processed_rows\":100,\"duration\":0.25}",
    "status": 1,
    "errorMessage": null,
    "executionTime": 250,
    "startedOn": "2025-04-12 16:10:45",
    "endedOn": "2025-04-12 16:10:45",
    "code": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\ndef process_data(input_file, output_file):\n    # 版本3的处理逻辑\n    pass\n\nif __name__ == '__main__':\n    process_data('input.csv', 'output.csv')"
  }
}
```

### 13. 导出脚本

#### 接口描述
导出指定脚本的代码文件。

#### 请求方式
- **HTTP方法**: GET
- **接口路径**: `/api/vwed-script/{id}/export`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| id | String | 是 | 脚本ID，路径参数 |

#### 响应参数
返回脚本文件的二进制内容，Content-Type为application/octet-stream或text/plain。

### 14. 导入脚本

#### 接口描述
从Python文件导入脚本。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-script/import`
- **Content-Type**: multipart/form-data

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| file | File | 是 | 要导入的Python脚本文件 |

#### 响应参数

```json
{
  "code": 200,
  "message": "导入成功",
  "data": {
    "id": "script-010"
  }
}
```

## 三、数据结构

### 1. 脚本状态

| 状态码 | 描述 |
|-------|------|
| 1 | 启用 |
| 0 | 禁用 |

### 2. 脚本执行状态

| 状态码 | 描述 |
|-------|------|
| 1 | 成功 |
| 0 | 失败 | 