跳转到主要内容
本文介绍如何通过 REST API 管理审核规则库、规则组和规则。规则库管理采用三层结构:规则库 → 规则组 → 规则。您需要先创建规则库,然后在规则库下创建规则组,最后在规则组下创建规则。
智能审核的规则库管理采用三层结构:规则库(Rule Repository)规则组(Rule Group)规则(Rule)。本文介绍如何通过 REST API 进行规则库管理。

规则库管理

规则库是审核规则的顶层容器,用于组织和管理相关的审核规则。

创建规则库

创建审核规则库:
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>",
    "name": "审核规则库1"
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule_repo/create"
请求参数:
  • workspace_id (必填): 工作空间ID
  • name (必填): 规则库名称,最大长度30
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "repo_id": "31415926"
  }
}

获取审核规则库列表

获取工作空间下的所有审核规则库列表,包含规则库下的规则组和规则信息:
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/review/rule_repo/list?workspace_id=<your-workspace-id>&page=1&page_size=10"
请求参数:
  • workspace_id (必填): 工作空间ID
  • page (选填): 页码,默认为 1
  • page_size (选填): 每页条数,默认为 10
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "repos": [
      {
        "repo_id": "31415926",
        "name": "审核规则库1",
        "category_ids": ["invoice_category_id"],
        "groups": [
          {
            "group_id": "31415926",
            "name": "审核规则组1",
            "rules": [
              {
                "rule_id": "31415926",
                "name": "审核规则1",
                "prompt": "检查发票金额是否大于0且小于1000000,如果不在范围内则审核不通过",
                "category_ids": ["invoice_category_id"],
                "risk_level": 10,
                "referenced_fields": [
                  {
                    "category_id": "invoice_category_id",
                    "category_name": "发票",
                    "fields": [
                      {
                        "field_id": "amount_field_id",
                        "field_name": "发票金额"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ],
    "total": 1,
    "page": 1,
    "page_size": 10
  }
}

获取审核规则库

根据规则库ID获取单个审核规则库的详细信息:
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/review/rule_repo/get?workspace_id=<your-workspace-id>&repo_id=31415926"
请求参数:
  • workspace_id (必填): 工作空间ID
  • repo_id (必填): 审核规则库ID
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "repo_id": "31415926",
    "name": "审核规则库1",
    "category_ids": ["invoice_category_id"],
    "groups": [
      {
        "group_id": "31415926",
        "name": "审核规则组1",
        "rules": [
          {
            "rule_id": "31415926",
            "name": "审核规则1",
            "prompt": "检查发票金额是否大于0且小于1000000,如果不在范围内则审核不通过",
            "category_ids": ["invoice_category_id"],
            "risk_level": 10,
            "referenced_fields": [
              {
                "category_id": "invoice_category_id",
                "category_name": "发票",
                "fields": [
                  {
                    "field_id": "amount_field_id",
                    "field_name": "发票金额"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

更新规则库

更新审核规则库的名称:
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>",
    "repo_id": "31415926",
    "name": "更新后的规则库名称"
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule_repo/update"
请求参数:
  • workspace_id (必填): 工作空间ID
  • repo_id (必填): 规则库ID
  • name (必填): 新的规则库名称,最大长度30

删除规则库

删除审核规则库(可以批量删除):
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>",
    "repo_ids": ["31415926", "31415927"]
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule_repo/delete"
请求参数:
  • workspace_id (必填): 工作空间ID
  • repo_ids (必填): 规则库ID数组
删除规则库会同时删除其下的所有规则组和规则,请谨慎操作。

规则组管理

规则组是规则库下的二级分类,用于对规则进行更细粒度的分组管理。

创建规则组

在规则库下创建规则组:
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>",
    "repo_id": "31415926",
    "name": "审核规则组1"
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule_group/create"
请求参数:
  • workspace_id (必填): 工作空间ID
  • repo_id (必填): 规则库ID
  • name (必填): 规则组名称,最大长度30
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "group_id": "31415926"
  }
}

更新规则组

更新规则组的名称:
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>",
    "group_id": "31415926",
    "name": "更新后的规则组名称"
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule_group/update"
请求参数:
  • workspace_id (必填): 工作空间ID
  • group_id (必填): 规则组ID
  • name (必填): 新的规则组名称,最大长度30

删除规则组

删除规则组:
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>",
    "group_id": "31415926"
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule_group/delete"
请求参数:
  • workspace_id (必填): 工作空间ID
  • group_id (必填): 规则组ID
删除规则组会同时删除其下的所有规则,请谨慎操作。

规则管理

规则是审核的最小执行单元,定义了具体的审核标准和逻辑。

创建规则

在规则组下创建审核规则:
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>",
    "repo_id": "31415926",
    "group_id": "31415926",
    "name": "审核规则1",
    "prompt": "检查发票金额是否大于0且小于1000000,如果不在范围内则审核不通过",
    "category_ids": ["invoice_category_id"],
    "risk_level": 10,
    "referenced_fields": [
      {
        "category_id": "invoice_category_id",
        "category_name": "发票",
        "fields": [
          {
            "field_id": "amount_field_id",
            "field_name": "发票金额"
          }
        ]
      }
    ]
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule/create"

获取分类ID和字段ID

在创建规则之前,需要先获取分类ID(category_id)和字段ID(field_id)。这些ID可以通过以下接口获取:

获取分类列表

获取工作空间下的所有分类,用于获取分类ID:
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/category/list?workspace_id=<your-workspace-id>"
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "total": 10,
    "page": 1,
    "page_size": 1000,
    "categories": [
      {
        "id": "invoice_category_id",
        "name": "发票",
        "description": "发票分类描述",
        "enabled": 1
      },
      {
        "id": "contract_category_id",
        "name": "合同",
        "description": "合同分类描述",
        "enabled": 1
      }
    ]
  }
}
从响应中获取 categories[].id 即为分类ID(category_id)。

获取分类字段列表

获取指定分类下的所有字段,用于获取字段ID:
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/category/fields/list?workspace_id=<your-workspace-id>&category_id=<category-id>"
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "fields": [
      {
        "id": "amount_field_id",
        "name": "发票金额",
        "description": "发票金额描述",
        "enabled": 1
      },
      {
        "id": "invoice_code_field_id",
        "name": "发票代码",
        "description": "发票代码描述",
        "enabled": 1
      }
    ],
    "tables": [
      {
        "id": "invoice_items_table_id",
        "name": "发票明细",
        "description": "发票明细表格",
        "fields": [
          {
            "id": "item_name_field_id",
            "name": "货物名称",
            "description": "货物名称描述",
            "enabled": 1
          }
        ]
      }
    ]
  }
}
从响应中获取:
  • fields[].id 即为普通字段ID(field_id
  • tables[].id 即为表格ID(table_id
  • tables[].fields[].id 即为表格字段ID(field_id
请求参数:
  • workspace_id (必填): 工作空间ID
  • repo_id (必填): 规则库ID
  • group_id (必填): 规则组ID
  • name (必填): 规则名称
  • prompt (必填): 规则提示词,描述审核规则的提示词,用于指导AI进行审核判断
  • category_ids (选填): 适用分类ID数组,规则适用于哪些文档分类。通过获取分类列表接口获取
  • risk_level (选填): 风险等级,可选值:10(高风险)、20(中风险)、30(低风险)
  • referenced_fields (选填): 关联字段数组,规则需要关联的抽取字段。字段ID通过获取分类字段列表接口获取
关联字段结构说明:
{
  "referenced_fields": [
    {
      "category_id": "分类ID",
      "category_name": "分类名称",
      "fields": [
        {
          "field_id": "字段ID",
          "field_name": "字段名称"
        }
      ],
      "tables": [
        {
          "table_id": "表格ID",
          "table_name": "表格名称",
          "fields": [
            {
              "field_id": "字段ID",
              "field_name": "字段名称"
            }
          ]
        }
      ]
    }
  ]
}
响应示例:
{
  "code": 200,
  "msg": "success",
  "result": {
    "rule_id": "31415926"
  }
}

更新规则

更新审核规则:
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>",
    "rule_id": "31415926",
    "group_id": "31415926",
    "name": "更新后的规则名称",
    "prompt": "更新后的规则提示词",
    "category_ids": ["invoice_category_id"],
    "risk_level": 20,
    "referenced_fields": [
      {
        "category_id": "invoice_category_id",
        "category_name": "发票",
        "fields": [
          {
            "field_id": "amount_field_id",
            "field_name": "发票金额"
          }
        ]
      }
    ]
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule/update"
请求参数:
  • workspace_id (必填): 工作空间ID
  • rule_id (必填): 规则ID
  • 其他参数与创建规则相同,用于更新规则属性

删除规则

删除审核规则:
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>",
    "rule_id": "31415926"
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/review/rule/delete"
请求参数:
  • workspace_id (必填): 工作空间ID
  • rule_id (必填): 规则ID

规则创建流程示例

完整的规则创建流程(包含获取分类ID和字段ID):
Python
import requests

ti_app_id = "<your-app-id>"
ti_secret_code = "<your-secret-code>"
workspace_id = "<your-workspace-id>"
host = "https://docflow.textin.com"

# 1. 获取分类列表,获取分类ID
categories_resp = requests.get(
    f"{host}/api/app-api/sip/platform/v2/category/list",
    params={"workspace_id": workspace_id},
    headers={"x-ti-app-id": ti_app_id, "x-ti-secret-code": ti_secret_code},
)
categories = categories_resp.json()["result"]["categories"]
# 假设我们要使用"发票"分类
invoice_category = next((c for c in categories if c["name"] == "发票"), None)
if not invoice_category:
    print("未找到发票分类")
    exit(1)
category_id = invoice_category["id"]
category_name = invoice_category["name"]
print(f"找到分类: {category_name}, ID: {category_id}")

# 2. 获取分类字段列表,获取字段ID
fields_resp = requests.get(
    f"{host}/api/app-api/sip/platform/v2/category/fields/list",
    params={
        "workspace_id": workspace_id,
        "category_id": category_id
    },
    headers={"x-ti-app-id": ti_app_id, "x-ti-secret-code": ti_secret_code},
)
fields_result = fields_resp.json()["result"]
fields = fields_result.get("fields", [])
# 假设我们要使用"发票金额"字段
amount_field = next((f for f in fields if f["name"] == "发票金额"), None)
if not amount_field:
    print("未找到发票金额字段")
    exit(1)
field_id = amount_field["id"]
field_name = amount_field["name"]
print(f"找到字段: {field_name}, ID: {field_id}")

# 3. 创建规则库
repo_payload = {
    "workspace_id": workspace_id,
    "name": "发票审核规则库"
}
repo_resp = requests.post(
    f"{host}/api/app-api/sip/platform/v2/review/rule_repo/create",
    json=repo_payload,
    headers={"x-ti-app-id": ti_app_id, "x-ti-secret-code": ti_secret_code},
)
repo_id = repo_resp.json()["result"]["repo_id"]
print(f"规则库创建成功,ID: {repo_id}")

# 4. 创建规则组
group_payload = {
    "workspace_id": workspace_id,
    "repo_id": repo_id,
    "name": "发票合规性检查"
}
group_resp = requests.post(
    f"{host}/api/app-api/sip/platform/v2/review/rule_group/create",
    json=group_payload,
    headers={"x-ti-app-id": ti_app_id, "x-ti-secret-code": ti_secret_code},
)
group_id = group_resp.json()["result"]["group_id"]
print(f"规则组创建成功,ID: {group_id}")

# 5. 创建规则(使用获取到的分类ID和字段ID)
rule_payload = {
    "workspace_id": workspace_id,
    "repo_id": repo_id,
    "group_id": group_id,
    "name": "发票金额校验",
    "prompt": "检查发票金额是否大于0且小于1000000,如果不在范围内则审核不通过",
    "category_ids": [category_id],  # 使用获取到的分类ID
    "risk_level": 10,
    "referenced_fields": [
        {
            "category_id": category_id,  # 使用获取到的分类ID
            "category_name": category_name,  # 使用获取到的分类名称
            "fields": [
                {
                    "field_id": field_id,  # 使用获取到的字段ID
                    "field_name": field_name  # 使用获取到的字段名称
                }
            ]
        }
    ]
}
rule_resp = requests.post(
    f"{host}/api/app-api/sip/platform/v2/review/rule/create",
    json=rule_payload,
    headers={"x-ti-app-id": ti_app_id, "x-ti-secret-code": ti_secret_code},
)
rule_id = rule_resp.json()["result"]["rule_id"]
print(f"规则创建成功,ID: {rule_id}")

相关页面