> ## 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.

# 重试审核任务

> 通过 REST API 重试审核任务或审核任务中的某条规则

<Tip>
  本文介绍如何通过 REST API 重试审核任务。当审核任务执行失败或需要重新审核时，可以重试整个审核任务，或者只重试审核任务中的某条规则。
</Tip>

审核任务支持两种重试方式：

1. **重试整个审核任务**：重新执行整个审核任务的所有规则
2. **重试某条规则**：只重新执行审核任务中的某条特定规则

## 重试整个审核任务

重新执行整个审核任务，会对任务中的所有规则重新进行审核：

<CodeGroup>
  ```bash curl icon=terminal wrap theme={null}
  curl -X POST \
    -H "Content-Type: application/json" \
    -H "x-ti-app-id: <your-app-id>" \
    -H "x-ti-secret-code: <your-secret-code>" \
    -d '{
      "workspace_id": "<your-workspace-id>",
      "task_id": "31415926"
    }' \
    "https://docflow.textin.com/api/app-api/sip/platform/v2/review/task/retry"
  ```

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

  ti_app_id = "<your-app-id>"
  ti_secret_code = "<your-secret-code>"
  workspace_id = "<your-workspace-id>"
  task_id = "31415926"

  host = "https://docflow.textin.com"
  url = "/api/app-api/sip/platform/v2/review/task/retry"

  payload = {
      "workspace_id": workspace_id,
      "task_id": task_id
  }

  resp = requests.post(
      url=f"{host}{url}",
      json=payload,
      headers={
          "x-ti-app-id": ti_app_id,
          "x-ti-secret-code": ti_secret_code,
      },
      timeout=60,
  )

  result = resp.json()
  if result.get("code") == 200:
      print("审核任务重试成功")
  else:
      print(f"重试失败: {result.get('msg')}")
  ```
</CodeGroup>

**请求参数：**

* `workspace_id` (必填): 工作空间ID
* `task_id` (必填): 审核任务ID

**响应示例：**

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

## 重试审核任务中的某条规则

只重新执行审核任务中的某条特定规则，适用于只需要重新审核某个规则的情况：

<CodeGroup>
  ```bash curl icon=terminal wrap theme={null}
  curl -X POST \
    -H "Content-Type: application/json" \
    -H "x-ti-app-id: <your-app-id>" \
    -H "x-ti-secret-code: <your-secret-code>" \
    -d '{
      "workspace_id": "<your-workspace-id>",
      "task_id": "31415926",
      "rule_id": "31415926"
    }' \
    "https://docflow.textin.com/api/app-api/sip/platform/v2/review/task/rule/retry"
  ```

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

  ti_app_id = "<your-app-id>"
  ti_secret_code = "<your-secret-code>"
  workspace_id = "<your-workspace-id>"
  task_id = "31415926"
  rule_id = "31415926"

  host = "https://docflow.textin.com"
  url = "/api/app-api/sip/platform/v2/review/task/rule/retry"

  payload = {
      "workspace_id": workspace_id,
      "task_id": task_id,
      "rule_id": rule_id
  }

  resp = requests.post(
      url=f"{host}{url}",
      json=payload,
      headers={
          "x-ti-app-id": ti_app_id,
          "x-ti-secret-code": ti_secret_code,
      },
      timeout=60,
  )

  result = resp.json()
  if result.get("code") == 200:
      print("规则重试成功")
  else:
      print(f"重试失败: {result.get('msg')}")
  ```
</CodeGroup>

**请求参数：**

* `workspace_id` (必填): 工作空间ID
* `task_id` (必填): 审核任务ID
* `rule_id` (必填): 审核规则ID

**响应示例：**

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

## 参数说明

### 审核任务ID (task\_id)

审核任务ID是已创建的审核任务的标识。可以通过以下方式获取：

* 通过[创建审核任务](./create_task)接口创建任务时返回
* 通过[获取审核结果](./get_result)接口查询任务时获取

### 审核规则ID (rule\_id)

审核规则ID是审核任务中某条规则的标识。可以通过以下方式获取：

* 通过[获取审核结果](./get_result)接口查询任务结果，从 `groups[].review_tasks[].rule_id` 字段获取
* 通过[规则库管理](./rule_management)接口获取规则库中的规则ID

**示例：从审核结果中获取规则ID**

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

ti_app_id = "<your-app-id>"
ti_secret_code = "<your-secret-code>"
workspace_id = "<your-workspace-id>"
task_id = "31415926"

host = "https://docflow.textin.com"
url = "/api/app-api/sip/platform/v2/review/task/result"

# 获取审核结果
payload = {
    "workspace_id": workspace_id,
    "task_id": task_id
}

resp = requests.post(
    url=f"{host}{url}",
    json=payload,
    headers={
        "x-ti-app-id": ti_app_id,
        "x-ti-secret-code": ti_secret_code,
    },
    timeout=60,
)

result = resp.json()
if result.get("code") == 200:
    review_result = result.get("result", {})
    groups = review_result.get("groups", [])
    
    # 遍历所有规则，获取规则ID
    rule_ids = []
    for group in groups:
        review_tasks = group.get("review_tasks", [])
        for review_task in review_tasks:
            rule_id = review_task.get("rule_id")
            rule_name = review_task.get("rule_name")
            if rule_id:
                rule_ids.append({
                    "rule_id": rule_id,
                    "rule_name": rule_name
                })
    
    print(f"找到 {len(rule_ids)} 条规则:")
    for rule in rule_ids:
        print(f"  规则ID: {rule['rule_id']}, 规则名称: {rule['rule_name']}")
```

## 使用场景

### 重试整个审核任务

适用于以下场景：

1. **审核任务执行失败**：当审核任务整体执行失败时，可以重试整个任务
2. **规则库更新后**：当规则库中的规则被更新后，可以重试整个审核任务以应用新规则
3. **抽取结果更新后**：当关联的抽取任务结果被更新后，可以重试审核任务以基于新的抽取结果重新审核

### 重试某条规则

适用于以下场景：

1. **单条规则执行失败**：当某条规则执行失败时，可以只重试该规则，而不影响其他规则
2. **规则配置调整后**：当某条规则的配置被调整后，可以只重试该规则
3. **提高效率**：当只需要重新审核某个特定规则时，重试单条规则比重试整个任务更高效

## 注意事项

1. **异步执行**：重试操作是异步执行的，重试后需要通过[获取审核结果](./get_result)接口查询审核状态
2. **任务状态**：确保审核任务存在且可以重试，已删除的任务无法重试
3. **规则状态**：重试规则时，确保规则ID正确且属于指定的审核任务
4. **重试频率**：建议控制重试频率，避免频繁重试导致系统负载过高
5. **结果覆盖**：重试会重新生成审核结果，原有的审核结果会被覆盖

## 相关页面

* [创建审核任务](./create_task) - 学习如何创建审核任务
* [获取审核结果](./get_result) - 学习如何获取审核结果
* [规则库管理](./rule_management) - 学习如何管理审核规则库
