> ## Documentation Index
> Fetch the complete documentation index at: https://docs-docflow.textin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 修改文件类别

> 对于普通任务，使用 修改文件类别 接口修改文件类别

## 功能概述

对于已经处理完成的普通任务，如果发现文件类别不正确，可以使用 修改文件类别 接口修改文件类别。修改后，系统会重新使用新的类别进行数据处理。

<Tip>
  只有普通任务支持修改文件类别。文件拆分任务和多图切分任务需要使用对应的参数进行修改。
</Tip>

<Tip>
  修改文件类别后，会以新类别配置的字段自动进行重新抽取，抽取结果将会改变。
</Tip>

## 使用场景

1. **分类错误修正**：自动分类结果不正确，需要手动修正
2. **类别调整**：业务需求变更，需要将文件重新分类

## API 接口

**接口地址**：`POST /api/app-api/sip/platform/v2/file/amend_category`

## 请求参数

| 参数名            | 类型     | 必填 | 说明    |
| -------------- | ------ | -- | ----- |
| `workspace_id` | string | 是  | 空间ID  |
| `task_id`      | string | 是  | 任务ID  |
| `category`     | string | 是  | 新文件类别 |

### 参数说明

* `task_id`：可以通过 `file/fetch` 接口获取任务ID
* `category`：新文件类别名称，必须是已在 DocFlow 空间配置过的文件类别

## 示例代码

<CodeGroup>
  ```bash curl icon=terminal wrap theme={null}
  curl -X POST \
    -H "x-ti-app-id: <your-app-id>" \
    -H "x-ti-secret-code: <your-secret-code>" \
    -H "Content-Type: application/json" \
    -d '{
      "workspace_id": "1234567890",
      "task_id": "1234567890",
      "category": "电子发票（普通发票）"
    }' \
    "https://docflow.textin.com/api/app-api/sip/platform/v2/file/amend_category"
  ```

  ```python Python icon=python expandable theme={null}
  import requests
  import json

  def amend_category(workspace_id, task_id, category, app_id, secret_code):
      """
      修改普通任务的文件类别
      """
      url = "https://docflow.textin.com/api/app-api/sip/platform/v2/file/amend_category"
      
      headers = {
          "x-ti-app-id": app_id,
          "x-ti-secret-code": secret_code,
          "Content-Type": "application/json"
      }
      
      payload = {
          "workspace_id": workspace_id,
          "task_id": task_id,
          "category": category
      }
      
      response = requests.post(url, headers=headers, json=payload)
      return response.json()

  # 使用示例
  if __name__ == "__main__":
      WORKSPACE_ID = "1234567890"
      TASK_ID = "1234567890"
      CATEGORY = "电子发票（普通发票）"
      APP_ID = "<your-app-id>"
      SECRET_CODE = "<your-secret-code>"
      
      result = amend_category(WORKSPACE_ID, TASK_ID, CATEGORY, APP_ID, SECRET_CODE)
      print(json.dumps(result, indent=2, ensure_ascii=False))
  ```
</CodeGroup>

## 获取任务ID

在修改文件类别之前，需要先获取任务的 `task_id`。可以通过 `file/fetch` 接口查询：

<CodeGroup>
  ```bash curl icon=terminal wrap theme={null}
  curl \
    -H "x-ti-app-id: <your-app-id>" \
    -H "x-ti-secret-code: <your-secret-code>" \
    "https://docflow.textin.com/api/app-api/sip/platform/v2/file/fetch?workspace_id=<your-workspace-id>&file_id=<your-file-id>"
  ```

  ```python Python icon=python expandable theme={null}
  import requests

  def get_task_id(workspace_id, file_id, app_id, secret_code):
      """
      获取文件的任务ID
      """
      url = "https://docflow.textin.com/api/app-api/sip/platform/v2/file/fetch"
      
      headers = {
          "x-ti-app-id": app_id,
          "x-ti-secret-code": secret_code
      }
      
      params = {
          "workspace_id": workspace_id,
          "file_id": file_id
      }
      
      response = requests.get(url, headers=headers, params=params)
      data = response.json()
      
      # 从返回结果中提取 task_id
      files = data.get("result", {}).get("files", [])
      if files:
          return files[0].get("task_id")
      return None

  # 使用示例
  WORKSPACE_ID = "1234567890"
  FILE_ID = "202412190001"
  APP_ID = "<your-app-id>"
  SECRET_CODE = "<your-secret-code>"

  task_id = get_task_id(WORKSPACE_ID, FILE_ID, APP_ID, SECRET_CODE)
  print(f"任务ID: {task_id}")
  ```
</CodeGroup>

## 返回结果

成功修改文件类别后，接口会返回成功响应：

```json expandable theme={null}
{
  "code": 200,
  "message": "success"
}
```

## 完整示例

以下是一个完整的示例，展示如何查询文件信息、获取任务ID，然后修改文件类别：

```python Python icon=python expandable theme={null}
import requests
import json

def get_file_info(workspace_id, file_id, app_id, secret_code):
    """获取文件信息"""
    url = "https://docflow.textin.com/api/app-api/sip/platform/v2/file/fetch"
    headers = {
        "x-ti-app-id": app_id,
        "x-ti-secret-code": secret_code
    }
    params = {"workspace_id": workspace_id, "file_id": file_id}
    response = requests.get(url, headers=headers, params=params)
    return response.json()

def amend_category(workspace_id, task_id, category, app_id, secret_code):
    """修改文件类别"""
    url = "https://docflow.textin.com/api/app-api/sip/platform/v2/file/amend_category"
    headers = {
        "x-ti-app-id": app_id,
        "x-ti-secret-code": secret_code,
        "Content-Type": "application/json"
    }
    payload = {
        "workspace_id": workspace_id,
        "task_id": task_id,
        "category": category
    }
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

# 使用示例
WORKSPACE_ID = "1234567890"
FILE_ID = "202412190001"
NEW_CATEGORY = "电子发票（普通发票）"
APP_ID = "<your-app-id>"
SECRET_CODE = "<your-secret-code>"

# 1. 获取文件信息和任务ID
file_info = get_file_info(WORKSPACE_ID, FILE_ID, APP_ID, SECRET_CODE)
files = file_info.get("result", {}).get("files", [])
if files:
    file_data = files[0]
    task_id = file_data.get("task_id")
    current_category = file_data.get("category")
    
    print(f"当前文件类别: {current_category}")
    print(f"任务ID: {task_id}")
    
    # 2. 修改文件类别
    result = amend_category(WORKSPACE_ID, task_id, NEW_CATEGORY, APP_ID, SECRET_CODE)
    print(f"修改结果: {json.dumps(result, indent=2, ensure_ascii=False)}")
```

## 注意事项

1. **任务类型限制**：只有普通任务（非拆分任务、非多图切分任务）才支持通过 `category` 参数修改文件类别
2. **类别必须存在**：指定的 `category` 必须在 DocFlow 空间中已经配置过，否则会返回错误
3. **类别名称匹配**：类别名称必须与配置时完全一致（区分大小写）
4. **中文类别处理**：如果使用中文类别名称，确保请求体使用 UTF-8 编码
5. **修改后重新处理**：修改文件类别后，系统会根据新的类别重新进行数据处理
