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

# 合同审核场景（无工作空间）

> 在合同审核场景中，调用 DocFlow API 对各类合同进行全面的财务条款、法务合规和文本质量自动化审核。

<Tip>
  本文以**采购合同审核**为业务场景，演示如何通过 API 完成从创建空间、配置类别、上传合同文件、获取抽取结果到智能审核的完整流程。
  如果您刚刚接触 DocFlow，建议先在 [Web 页面](https://docflow.textin.com/) 体验一下产品的基本功能，再阅读本文。
</Tip>

## 01 场景说明

在企业合同管理业务中，法务部门需要对每一份合同进行系统性审核，主要关注以下三个维度：

* **财务条款审核**：金额计算与大小写一致性、税率合规性、付款条件与比例明确性、违约金/滞纳金合理性等。
* **法务合规审核**：必备条款完整性、签约主体信息一致性、权力义务明确性、知识产权归属等。
* **文本质量审核**：数字计算校验、跨条款逻辑一致性、错别字与语义歧义检测等。

通过 DocFlow，您只需将合同文件（PDF 或 Word）上传到工作空间，系统即可自动完成**结构化字段抽取**，并依据预设规则库进行**全面智能审核**，显著降低人工逐条审阅的时间成本。

<Note>
  合同审核场景只需配置**一个文件类别**（采购合同），但规则较多（3 个规则组、22 条规则），覆盖合同审核的常见风险点。
</Note>

## 02 业务流程

<img src="https://mintcdn.com/docflow/NHmfC3xyBtH2bZya/docflow/cn/images/expense_reimbursement_flow.png?fit=max&auto=format&n=NHmfC3xyBtH2bZya&q=85&s=f294139c4cf2119d8d430dfb67107809" alt="合同审核业务流程" width="842" height="301" data-path="docflow/cn/images/expense_reimbursement_flow.png" />

<Note>
  **工作空间、文件类别和审核规则库只需配置一次**，后续可持续复用——直接上传新的合同文件并创建新的审核任务即可。本示例为演示完整流程，将配置步骤和处理步骤放在同一段代码中运行。
</Note>

## 03 先决条件

1. 登录 [TextIn 控制台](https://www.textin.com/console/dashboard/setting)，获取 `x-ti-app-id` 和 `x-ti-secret-code`
2. 下载[示例样本文件](https://github.com/intsig-textin/docflow-docs/tree/master/examples/sample_files/contract_review)，或使用自己的采购合同文件

## 04 类别与字段配置

本示例只配置一个文件类别：**采购合同**。合同是复杂的长文档，字段较多，建议使用 **DF-M1（复杂文档理解）** 以获得更准确的抽取效果。

<AccordionGroup>
  <Accordion defaultOpen title="采购合同（样本：sample_contract.docx）">
    采购合同包含主体信息、标的条款、财务条款、法务条款等多个维度的字段，全部为**基本信息字段**：

    <Tip>
      示例样本文件（Word 文档），可点击[下载查看](https://dllf.intsig.net/download/2026/CustomService/sample_contract.docx)。
    </Tip>

    | 字段名                                                   | 类型     |
    | ----------------------------------------------------- | ------ |
    | <span style={{color: "#3b82f6"}}>合同编号</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>合同名称</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>签订日期</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>生效条件</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>甲方全称</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>甲方统一社会信用代码</span>    | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>甲方联系方式</span>        | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>甲方地址</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>乙方全称</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>乙方统一社会信用代码</span>    | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>乙方联系方式</span>        | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>乙方地址</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>乙方法定代表人/授权委托人</span> | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>标的名称</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>标的规格型号/标准</span>     | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>标的技术/质量标准</span>     | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>标的数量/服务范围</span>     | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>含税总金额（大写）</span>     | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>不含税金额</span>         | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>税额</span>            | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>税率</span>            | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>发票条款</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>付款方式</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>付款条件</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>付款比例</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>账期</span>            | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>收款账户信息</span>        | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>履约期限</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>履约地点</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>交付/验收标准与流程</span>    | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>违约责任</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>免责条款</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>争议解决方式</span>        | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>合同解除与终止条件</span>     | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>保密条款</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>知识产权声明</span>        | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>合同份数</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>附件清单</span>          | 基本信息字段 |
    | <span style={{color: "#3b82f6"}}>签约人签字/盖章</span>      | 基本信息字段 |
  </Accordion>
</AccordionGroup>

## 05 审核规则配置

本示例的审核规则库包含 **3 个规则组、22 条审核规则**，全面覆盖合同审核的常见风险：

<AccordionGroup>
  <Accordion defaultOpen title="规则组 1：财务条款审核（12 条规则）">
    | 规则名称                                                  | 风险等级                                          | 审核逻辑                                     |
    | ----------------------------------------------------- | --------------------------------------------- | ---------------------------------------- |
    | <span style={{color: "#3b82f6"}}>连带责任条款</span>        | <span style={{color: "#eab308"}}>●</span> 中风险 | 若存在三方关系（开票方/付款方/签约主体不一致），合同须明确各方债权债务关系   |
    | <span style={{color: "#3b82f6"}}>履约保证金条款</span>       | <span style={{color: "#eab308"}}>●</span> 中风险 | 若约定保证金/质保金，须明确退还条件、时间节点及不予退还的情形          |
    | <span style={{color: "#3b82f6"}}>滞纳金/违约金合理性</span>    | <span style={{color: "#eab308"}}>●</span> 中风险 | 逾期付款或逾期交付的违约金日费率 ≤ 0.05%                 |
    | <span style={{color: "#3b82f6"}}>验收/交付标准明确性</span>    | <span style={{color: "#eab308"}}>●</span> 中风险 | 合同须明确交付完成的判定标准                           |
    | <span style={{color: "#3b82f6"}}>币别一致性</span>         | <span style={{color: "#eab308"}}>●</span> 中风险 | 合同全文涉及金额的币别须前后一致                         |
    | <span style={{color: "#3b82f6"}}>付款方式明确性</span>       | <span style={{color: "#eab308"}}>●</span> 中风险 | 付款方式须为银行转账、承兑汇票或第三方支付之一                  |
    | <span style={{color: "#3b82f6"}}>付款条件明确性</span>       | <span style={{color: "#eab308"}}>●</span> 中风险 | 付款节点和期限须明确                               |
    | <span style={{color: "#3b82f6"}}>税率合理性</span>         | <span style={{color: "#ef4444"}}>●</span> 高风险 | 税率须为有效值（6%/9%/13%/1%/3%/免税/0%）且与合同标的类型匹配 |
    | <span style={{color: "#3b82f6"}}>付款比例合计</span>        | <span style={{color: "#ef4444"}}>●</span> 高风险 | 分阶段付款比例合计须等于 100%                        |
    | <span style={{color: "#3b82f6"}}>产品明细合计与总金额一致性</span> | <span style={{color: "#ef4444"}}>●</span> 高风险 | 各明细行单价×数量=金额，所有明细行金额合计=合同总金额（允许±0.01元）   |
    | <span style={{color: "#3b82f6"}}>金额合规检测</span>        | <span style={{color: "#ef4444"}}>●</span> 高风险 | 不含税金额×税率=税额；不含税金额+税额=含税总金额（允许±0.01元尾差）   |
    | <span style={{color: "#3b82f6"}}>合同金额大小写一致性</span>    | <span style={{color: "#ef4444"}}>●</span> 高风险 | 大小写金额须一致；仅有大写时校验中文金额书写规范                 |
  </Accordion>

  <Accordion defaultOpen title="规则组 2：法务合规审核（9 条规则）">
    | 规则名称                                              | 风险等级                                          | 审核逻辑                                 |
    | ------------------------------------------------- | --------------------------------------------- | ------------------------------------ |
    | <span style={{color: "#3b82f6"}}>不可抗力条款</span>    | <span style={{color: "#22c55e"}}>●</span> 低风险 | 须包含不可抗力条款且定义清晰（范围、通知时限、责任豁免方式）       |
    | <span style={{color: "#3b82f6"}}>保密条款完整性</span>   | <span style={{color: "#22c55e"}}>●</span> 低风险 | 保密信息定义、保密期限、违约责任三要素齐全                |
    | <span style={{color: "#3b82f6"}}>知识产权归属</span>    | <span style={{color: "#22c55e"}}>●</span> 低风险 | 涉及技术开发/软件开发时，须有明确的知识产权归属条款           |
    | <span style={{color: "#3b82f6"}}>违约金上限合理性</span>  | <span style={{color: "#22c55e"}}>●</span> 低风险 | 违约金须设置上限（如不超过合同总金额的 20%）             |
    | <span style={{color: "#3b82f6"}}>违约对等性检查</span>   | <span style={{color: "#22c55e"}}>●</span> 低风险 | 甲乙双方逾期违约金比例差异不超过设定阈值（如 ≥50% 时标记）     |
    | <span style={{color: "#3b82f6"}}>合同日期合理性</span>   | <span style={{color: "#eab308"}}>●</span> 中风险 | 签订日期 ≤ 生效日期 ≤ 到期日期；生效日期不得早于当前日期      |
    | <span style={{color: "#3b82f6"}}>签约主体名称一致性</span> | <span style={{color: "#ef4444"}}>●</span> 高风险 | 合同首部、尾部签章处、正文中的签约主体名称须完全一致           |
    | <span style={{color: "#3b82f6"}}>签约主体信息完整性</span> | <span style={{color: "#ef4444"}}>●</span> 高风险 | 甲乙双方的名称、地址、联系方式均不为空                  |
    | <span style={{color: "#3b82f6"}}>必备条款完整性</span>   | <span style={{color: "#ef4444"}}>●</span> 高风险 | 须包含主体信息、标的、数量、价款、履行期限、违约责任、争议解决等必备条款 |
  </Accordion>

  <Accordion defaultOpen title="规则组 3：文本质量与一致性审核（3 条规则）">
    | 规则名称                                               | 风险等级                                          | 审核逻辑                                |
    | -------------------------------------------------- | --------------------------------------------- | ----------------------------------- |
    | <span style={{color: "#3b82f6"}}>数字计算校验</span>     | <span style={{color: "#22c55e"}}>●</span> 低风险 | 单价×数量=金额（每行）；各分项金额合计=合同总金额          |
    | <span style={{color: "#3b82f6"}}>内部一致性检测</span>    | <span style={{color: "#eab308"}}>●</span> 中风险 | 跨条款逻辑无矛盾：付款条件与交付条款不冲突、金额前后一致、期限起止合理 |
    | <span style={{color: "#3b82f6"}}>错别字/语义错误检测</span> | <span style={{color: "#22c55e"}}>●</span> 低风险 | 检测错别字、用词不当、语义歧义                     |
  </Accordion>
</AccordionGroup>

## 06 代码结构说明

示例代码将完整的七步流程放在一起运行。在实际生产中，**步骤 1、2、5 只需执行一次**；后续审核新合同时，只需重复**步骤 3、4、6、7**，直接复用已有配置即可。参见 [合同审核场景（已完成配置）](./contract_review_already_configured)。

示例代码中的函数分为两类，理解这一点有助于对照 API 文档进行调试和扩展。

### 两类函数

**REST API 调用函数** — 每个函数直接封装一个 API 端点，函数参数与接口文档一一对应：

| 函数（Python）           | 方法（Java）           | 对应 API 端点                        | 说明                              |
| -------------------- | ------------------ | -------------------------------- | ------------------------------- |
| `create_workspace`   | `createWorkspace`  | `POST /workspace/create`         | 创建工作空间，返回 workspace\_id         |
| `create_category`    | `createCategory`   | `POST /category/create`          | 创建文件类别并上传样本，返回 category\_id     |
| `upload_file`        | `uploadFile`       | `POST /file/upload`              | 异步上传文件，返回 batch\_number，需轮询获取结果 |
| `upload_file_sync`   | `uploadFileSync`   | `POST /file/upload/sync`         | 同步上传文件，直接返回抽取结果，无需轮询            |
| `create_rule_repo`   | `createRuleRepo`   | `POST /review/rule_repo/create`  | 创建审核规则库，返回 repo\_id             |
| `create_rule_group`  | `createRuleGroup`  | `POST /review/rule_group/create` | 在规则库内创建规则组，返回 group\_id         |
| `create_rule`        | `createRule`       | `POST /review/rule/create`       | 在规则组内创建审核规则，绑定适用分类              |
| `submit_review_task` | `submitReviewTask` | `POST /review/task/submit`       | 提交审核任务，返回审核 task\_id            |

**工具辅助函数** — 不直接对应 API 端点，提供公共基础能力或封装轮询/展示逻辑：

| 函数（Python）              | 方法（Java）              | 作用                               |
| ----------------------- | --------------------- | -------------------------------- |
| `_headers`              | `authHeaders`         | 构造鉴权请求头                          |
| `_check`                | `checkResponse`       | 校验响应 code，统一异常处理                 |
| `_mime`                 | `mimeType`            | 根据扩展名推断 MIME 类型                  |
| `wait_for_result`       | `waitForResult`       | 循环轮询 `file/fetch`，等待抽取完成         |
| `display_result`        | `displayResult`       | 格式化打印抽取结果                        |
| `wait_for_review`       | `waitForReview`       | 循环轮询 `review/task/result`，等待审核完成 |
| `display_review_result` | `displayReviewResult` | 格式化打印审核结果                        |

### 逐步代码说明

<AccordionGroup>
  <Accordion defaultOpen title="步骤 2：创建采购合同类别">
    合同字段较多，直接在 `create_category` 的 `fields` 参数中一次性传入所有字段，无需额外调用 `batch_add_category_fields`。

    <Tabs>
      <Tab title="Python">
        ```python theme={null}
        contract_id = create_category(
            workspace_id=workspace_id,
            name="采购合同",
            sample_file_path=os.path.join(SAMPLE_DIR, "sample_contract.docx"),
            fields=[
                {"name": "合同编号"}, {"name": "合同名称"}, {"name": "签订日期"},
                {"name": "甲方全称"}, {"name": "乙方全称"},
                # ... 其余字段
            ],
        )
        ```
      </Tab>

      <Tab title="Java">
        ```java theme={null}
        String contractId = createCategory(
                workspaceId, "采购合同",
                SAMPLE_DIR + "/sample_contract.docx",
                Arrays.asList(
                        field("合同编号"), field("合同名称"), field("签订日期"),
                        field("甲方全称"), field("乙方全称"),
                        // ... 其余字段
                ), "");
        ```
      </Tab>
    </Tabs>
  </Accordion>

  <Accordion defaultOpen title="步骤 3：上传待处理文件">
    DocFlow 提供两种上传方式：

    * **异步上传** `file/upload`：立即返回 `batch_number`，需配合步骤 4 轮询 `file/fetch` 获取结果，适合批量并行上传
    * **同步上传** `file/upload/sync`：等待处理完成后直接返回抽取结果（结构与 `file/fetch` 一致），无需轮询，适合对接简单或文件量少的场景

    两者的请求参数完全一致，仅 URL 路径不同。

    **方式一：异步上传（需配合步骤 4 轮询）**

    <Tabs>
      <Tab title="Python">
        ```python theme={null}
        batch_number = upload_file(workspace_id, os.path.join(SAMPLE_DIR, "sample_contract.docx"))
        ```
      </Tab>

      <Tab title="Java">
        ```java theme={null}
        String batchNumber = uploadFile(workspaceId, SAMPLE_DIR + "/sample_contract.docx");
        ```
      </Tab>
    </Tabs>

    **方式二：同步上传（直接返回抽取结果，跳过步骤 4）**

    <Tabs>
      <Tab title="Python">
        ```python theme={null}
        def upload_file_sync(workspace_id: str, file_path: str) -> dict:
            """同步上传：直接返回抽取结果，无需轮询。"""
            url = f"{BASE_URL}/api/app-api/sip/platform/v2/file/upload/sync"
            with open(file_path, "rb") as f:
                resp = requests.post(url,
                    params={"workspace_id": workspace_id},
                    files={"file": (os.path.basename(file_path), f, _mime(file_path))},
                    headers=_headers(), timeout=300)
            data = _check(resp, "同步上传文件")
            return data["result"]["files"][0]   # 返回结构与 file/fetch 一致

        # 调用示例：上传即得到抽取结果，可直接用于审核
        file_result = upload_file_sync(workspace_id, os.path.join(SAMPLE_DIR, "sample_contract.docx"))
        ```
      </Tab>

      <Tab title="Java">
        ```java theme={null}
        public static JsonObject uploadFileSync(String workspaceId, String filePath) throws IOException {
            File file = new File(filePath);
            HttpUrl url = HttpUrl.parse(BASE_URL + "/api/app-api/sip/platform/v2/file/upload/sync")
                    .newBuilder().addQueryParameter("workspace_id", workspaceId).build();
            MultipartBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
                    .addFormDataPart("file", file.getName(),
                            RequestBody.create(file, MediaType.get(mimeType(file.getName()))))
                    .build();
            Request req = new Request.Builder().url(url).headers(authHeaders()).post(body).build();
            try (Response resp = HTTP.newCall(req).execute()) {
                return checkResponse(resp.body().string(), "同步上传文件")
                        .getAsJsonObject("result").getAsJsonArray("files")
                        .get(0).getAsJsonObject();
            }
        }

        // 调用示例
        JsonObject fileResult = uploadFileSync(workspaceId, SAMPLE_DIR + "/sample_contract.docx");
        ```
      </Tab>
    </Tabs>
  </Accordion>

  <Accordion defaultOpen title="步骤 4：获取抽取结果（使用同步上传时可跳过）">
    <Note>若步骤 3 使用了同步上传 `file/upload/sync`，则已直接获得抽取结果，可跳过本步骤。</Note>

    合同文档较长，处理时间可能比普通票据更长（建议超时时间设为 180s）。结果中的 `fields` 数组包含所有抽取到的字段和值。

    <Tabs>
      <Tab title="Python">
        ```python theme={null}
        # 超时时间设为 180s（合同文档较长）
        file_result = wait_for_result(workspace_id, batch_number, timeout=180)
        display_result(file_result)
        ```
      </Tab>

      <Tab title="Java">
        ```java theme={null}
        JsonObject fileResult = waitForResult(workspaceId, batchNumber, 180, 3);
        displayResult(fileResult);
        ```
      </Tab>
    </Tabs>
  </Accordion>
</AccordionGroup>

### 抽取结果示例

<img src="https://mintcdn.com/docflow/NHmfC3xyBtH2bZya/docflow/cn/images/senario_extract_result.png?fit=max&auto=format&n=NHmfC3xyBtH2bZya&q=85&s=7a2f79ed743421aca3dcf92df0653d9a" alt="抽取结果示例" width="2282" height="1594" data-path="docflow/cn/images/senario_extract_result.png" />

### 审核结果示例

<img src="https://mintcdn.com/docflow/NHmfC3xyBtH2bZya/docflow/cn/images/senario_review_result.png?fit=max&auto=format&n=NHmfC3xyBtH2bZya&q=85&s=2a52846ea3b8711b8e78706fd0c6e9e9" alt="审核结果示例" width="2298" height="1558" data-path="docflow/cn/images/senario_review_result.png" />

## 07 完整示例代码下载

完整可运行代码（含 Python、Java 两个版本）已内置在文档仓库的 `examples/` 目录下：

```
examples/
├── python/
│   ├── contract_review.py         # Python 完整示例
│   ├── requirements.txt
│   └── README.md
├── java/
│   ├── src/main/java/com/docflow/ContractReview.java
│   ├── pom.xml
│   └── README.md
└── sample_files/
    └── contract_review/
        └── sample_contract.docx
```

<CardGroup cols={2}>
  <Card title="Python 示例" icon="python" href="https://github.com/ichaozai/docflow-docs/tree/master/examples/python">
    查看 Python 完整示例代码
  </Card>

  <Card title="Java 示例" icon="java" href="https://github.com/ichaozai/docflow-docs/tree/master/examples/java">
    查看 Java 完整示例代码
  </Card>
</CardGroup>

## 08 运行示例

<Tabs>
  <Tab title="Python">
    **环境要求**：Python 3.8+

    **1. 安装依赖**

    ```bash theme={null}
    cd examples/python
    pip install -r requirements.txt
    ```

    **2. 填写配置**

    打开 `contract_review.py`，填写文件顶部的配置项：

    ```python theme={null}
    APP_ID        = "your-app-id"      # x-ti-app-id
    SECRET_CODE   = "your-secret-code" # x-ti-secret-code
    ```

    **3. 运行**

    ```bash theme={null}
    python contract_review.py
    ```
  </Tab>

  <Tab title="Java">
    **环境要求**：JDK 11+，Maven 3.6+

    **1. 填写配置**

    打开 `src/main/java/com/docflow/ContractReview.java`，填写文件顶部的配置项：

    ```java theme={null}
    private static final String APP_ID        = "your-app-id";
    private static final String SECRET_CODE   = "your-secret-code";
    ```

    **2. 编译并运行**

    ```bash theme={null}
    cd examples/java
    mvn compile -q
    mvn exec:java -Dexec.mainClass="com.docflow.ContractReview"
    ```
  </Tab>
</Tabs>

<Tip>
  运行成功后，可登录 [DocFlow Web 页面](https://docflow.textin.com/)，在对应工作空间下直观查看合同的字段抽取结果和智能审核结果，便于与代码输出对照验证。
</Tip>

### 预期控制台输出

成功运行后，控制台将输出如下内容（workspace\_id、category\_id 等 ID 因运行环境不同而变化）：

```
============================================================
  DocFlow 合同审核场景示例
============================================================
[步骤1] 工作空间创建成功  workspace_id=<workspace_id>
[步骤2] 文件类别创建成功  name=采购合同  category_id=<category_id>

配置完成  workspace_id=<workspace_id>
  采购合同: category_id=<category_id>

开始上传待处理文件...
[步骤3] 文件上传成功  name=sample_contract.docx  batch_number=<batch_number>

开始获取处理结果...
[步骤4] 等待处理结果（batch_number=<batch_number>）......... 完成

============================================================
文件名   : sample_contract.docx
分类结果 : 采购合同

── 普通字段 ──────────────────────────
  合同编号                : HT-2025-001
  合同名称                : 智能硬件设备采购合同
  签订日期                : 2025-01-10
  甲方全称                : 合合信息科技（上海）有限公司
  乙方全称                : 上海某某科技有限公司
  合同金额                : 50,900.00
  税率                   : 6%
  乙方税号                : 91310000XXXXXXXXXX
  支付条款                : 验收合格后 30 日内付款
  违约金条款               : 延迟交货每日按合同总价 0.1% 计算违约金
  ...（共 22 个字段）

开始配置审核规则库...
[步骤5] 规则库创建成功  name=合同审核场景规则库  repo_id=<repo_id>
  规则组创建成功  name=基本条款完整性  group_id=<group_id>
    规则创建成功  name=必填条款完整性校验  rule_id=<rule_id>
    规则创建成功  name=合同金额与税率合规  rule_id=<rule_id>
    规则创建成功  name=双方主体信息完整  rule_id=<rule_id>
    规则创建成功  name=签订日期有效性  rule_id=<rule_id>
  规则组创建成功  name=财务条款合规性  group_id=<group_id>
    规则创建成功  name=付款条款明确性  rule_id=<rule_id>
    规则创建成功  name=发票信息完整性  rule_id=<rule_id>
    规则创建成功  name=税率合规性  rule_id=<rule_id>
  规则组创建成功  name=法务条款审核  group_id=<group_id>
    规则创建成功  name=违约金条款存在性  rule_id=<rule_id>
    规则创建成功  name=争议解决条款完整性  rule_id=<rule_id>
    规则创建成功  name=不可抗力条款存在性  rule_id=<rule_id>
[步骤6] 审核任务提交成功  task_id=<task_id>
[步骤7] 等待审核结果（task_id=<task_id>）................... 完成

============================================================
审核任务状态  : 审核通过
规则通过数    : 11
规则不通过数  : 0

── 规则组：基本条款完整性 ───────────────────
  ✓ [高风险] 必填条款完整性校验: 审核通过
    依据: 合同编号、甲乙方全称、签订日期、合同金额等必填条款均已填写。
  ✓ [高风险] 合同金额与税率合规: 审核通过
    依据: 合同金额 50,900.00 元，税率 6%，符合增值税一般纳税人要求。
  ✓ [中风险] 双方主体信息完整: 审核通过
    依据: 甲方"合合信息科技（上海）有限公司"与乙方"上海某某科技有限公司"信息完整。
  ✓ [中风险] 签订日期有效性: 审核通过
    依据: 签订日期 2025-01-10 格式有效且不晚于当前日期。

── 规则组：财务条款合规性 ───────────────────
  ✓ [高风险] 付款条款明确性: 审核通过
    依据: 支付条款明确规定"验收合格后 30 日内付款"，条款清晰。
  ✓ [中风险] 发票信息完整性: 审核通过
    依据: 开票信息完整，包含税号、开票地址等必要内容。
  ✓ [高风险] 税率合规性: 审核通过
    依据: 合同约定税率 6%，符合现行增值税税率规定。

── 规则组：法务条款审核 ───────────────────
  ✓ [高风险] 违约金条款存在性: 审核通过
    依据: 合同包含明确的违约金条款，按延迟每日 0.1% 计算。
  ✓ [中风险] 争议解决条款完整性: 审核通过
    依据: 合同约定争议解决方式，条款完整。
  ✓ [中风险] 不可抗力条款存在性: 审核通过
    依据: 合同包含不可抗力条款，明确了不可抗力事件的处理方式。

============================================================
  示例运行完成
============================================================
```

## 09 结果说明

### 抽取结果

处理完成后，合同文件将返回分类结果和字段抽取结果。字段抽取结果位于 `data.fields[]`，每个字段包含 `key`、`value` 及坐标 `position`（可用于原文高亮回显）。合同场景使用 **DF-M1（复杂文档理解）**，对长文档的深度理解和字段抽取效果更优。

以下为采购合同样本文件的实际接口返回（来自 `file/fetch`，省略了部分 `position` 坐标）：

<AccordionGroup>
  <Accordion defaultOpen title="sample_contract.docx">
    ```json theme={null}
    {
      "id": "2029124607672344576",
      "name": "sample_contract.docx",
      "format": "docx",
      "category": "采购合同",
      "recognition_status": 1,
      "duration_ms": 12438,
      "data": {
        "fields": [
          { "key": "合同编号",   "value": "HT-2025-001" },
          { "key": "合同名称",   "value": "智能硬件设备采购合同" },
          { "key": "签订日期",   "value": "2025-01-10" },
          { "key": "甲方全称",   "value": "合合信息科技（上海）有限公司" },
          { "key": "乙方全称",   "value": "上海某某科技有限公司" },
          { "key": "合同金额",   "value": "50900.00" },
          { "key": "税率",      "value": "6%" },
          { "key": "乙方税号",   "value": "91310000XXXXXXXXXX" },
          { "key": "支付条款",   "value": "验收合格后 30 日内付款" },
          { "key": "违约金条款", "value": "延迟交货每日按合同总价 0.1% 计算违约金" },
          { "key": "合作期间",   "value": "2025-01-10 至 2025-12-31" }
        ],
        "stamps": [],
        "handwritings": []
      }
    }
    ```
  </Accordion>
</AccordionGroup>

### 审核结果

审核完成后，可从 `review/task/result` 接口获取以下信息：

* **`status`**：任务整体状态（`1`=审核通过，`4`=审核不通过，`2`=审核失败）
* **`statistics`**：规则通过数、不通过数汇总
* **`groups[].review_tasks[]`**：每条规则的详细审核结果，包含：
  * `review_result`：该规则的审核结论（`1`=通过，`4`=不通过）
  * `reasoning`：AI 给出的审核依据说明
  * `anchors`：依据在原文中的坐标位置（可用于高亮回显）

```json theme={null}
{
  "task_id": "31415926",
  "task_name": "合同审核_20250110_143022",
  "status": 1,
  "statistics": { "pass_count": 11, "failure_count": 0, "error_count": 0 },
  "groups": [
    {
      "group_name": "基本条款完整性",
      "review_tasks": [
        {
          "rule_name": "必填条款完整性校验",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "合同编号、甲乙方全称、签订日期、合同金额等必填条款均已填写，审核通过。"
        },
        {
          "rule_name": "合同金额与税率合规",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "合同金额 50900.00 元，税率 6%，符合增值税一般纳税人要求，审核通过。"
        }
      ]
    },
    {
      "group_name": "财务条款合规性",
      "review_tasks": [
        {
          "rule_name": "付款条款明确性",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "支付条款明确规定"验收合格后 30 日内付款"，条款清晰，审核通过。"
        },
        {
          "rule_name": "税率合规性",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "合同约定税率 6%，符合现行增值税税率规定，审核通过。"
        }
      ]
    },
    {
      "group_name": "法务条款审核",
      "review_tasks": [
        {
          "rule_name": "违约金条款存在性",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "合同包含明确的违约金条款，按延迟每日 0.1% 计算，审核通过。"
        }
      ]
    }
  ]
}
```
