# 查询文件处理链路

从 Catalog 文件查看其关联的工作流处理、生成产物和处理拓扑。

```text
GET https://moi.matrixorigin.cn/newmoi/lineage/catalog-files/{file_id}/overview
```

## 调用前准备

先[查询文件产物](../../resource-center/catalog/list-file-artifacts.md)，仅当响应中的 `data.has_artifact` 为 `true` 时再调用本接口。准备有目标工作区访问权限的个人访问令牌、目标工作区 ID 和 Catalog 文件 ID。

下方示例使用：

- `$AI_STUDIO_API_KEY`：实际个人访问令牌，通过 `X-API-Key` Header 传递。
- `$WORKSPACE_ID`：目标工作区 ID，通过 `X-Workspace-ID` Header 传递。
- `$FILE_ID`：要查询处理链路的 Catalog 文件 ID。

`file_id` 必须是已经由工作流处理并登记了 DataAsset 的 Catalog 文件。仅上传或挂载到 Volume、但尚未经过处理的原始文件不会自动产生处理链路。

## 路径参数

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_id` | string | Catalog 文件 ID。 |

## 查询参数

| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `case_id` | string | 否 | 文件关联多个 Case 时，用于指定要读取的 Case。 |

## 请求示例

```bash
curl "https://moi.matrixorigin.cn/newmoi/lineage/catalog-files/$FILE_ID/overview" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID"
```

## 成功响应

`data` 返回文件入口、关联产物、工作流调用和处理拓扑。保存其中的 `artifact_id` 和 `node_id`；文件名或节点显示名称不能替代这些 ID。

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {
    "artifact": {
      "artifact_id": "art-001",
      "root_asset_id": "asset-001",
      "case_id": "case-001",
      "parsed_file_available": true
    },
    "workflow": {
      "workflow_id": "wf-001",
      "workflow_version_id": "ver-001"
    },
    "workflow_invocation": {
      "input": {},
      "vars": {}
    },
    "topology": {
      "nodes": [
        {
          "node_id": "node-001",
          "label": "解析文件"
        }
      ],
      "edges": [],
      "producer_node_id": "node-001"
    },
    "entry": {
      "catalog_file_id": "file-001"
    }
  }
}
```

响应字段如下。

本文中，字段路径中的 `[]` 表示数组中的每一项。例如，`items[].name` 表示 `items` 数组中每一项的 `name` 字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `code` | string | 成功时为 `OK`。 |
| `msg` | string | 成功时为 `OK`。 |
| `data.artifact.artifact_id` | string | 产物 ID。 |
| `data.artifact.root_asset_id` | string | 根数据资产 ID。 |
| `data.artifact.case_id` | string | 关联案例 ID。 |
| `data.artifact.raw_file_id` | string | 原始文件 ID；仅在有值时返回。 |
| `data.artifact.parsed_file_id` | string | 解析后的文件 ID；仅在有值时返回。 |
| `data.artifact.parsed_file_available` | boolean | 解析后的文件是否可用。 |
| `data.workflow.workflow_id` | string | 工作流 ID；仅在有值时返回。 |
| `data.workflow.workflow_version_id` | string | 工作流版本 ID；仅在有值时返回。 |
| `data.workflow_invocation.input` | object | 工作流调用输入；仅在有值时返回。 |
| `data.workflow_invocation.vars` | object | 工作流调用变量；仅在有值时返回。 |
| `data.topology.nodes[]` | array | 处理拓扑的节点。 |
| `data.topology.edges[]` | array | 处理拓扑的边。 |
| `data.topology.producer_node_id` | string | 产生当前产物的节点 ID；仅在有值时返回。 |
| `data.entry.catalog_file_id` | string | Catalog 文件 ID；仅在有值时返回。 |

## 错误响应

`msg` 为服务端返回的本地化公共错误信息；调用方应使用 HTTP 状态码和 `code` 判断错误类型。

```json
{
  "code": "ErrNotFound",
  "msg": "资源不存在",
  "data": null
}
```

### 常见 HTTP 错误

```{list-table}
:header-rows: 1
:widths: 12 22 32 34

* - HTTP 状态码
  - 错误代码
  - 常见原因
  - 建议操作
* - `400`
  - `ErrParamInvalid`
  - `file_id` 为空。
  - 传入 Catalog 文件 ID。
* - `404`
  - `ErrNotFound`
  - 文件不存在，或文件尚未产生 DataAsset / 可追溯处理记录。
  - 先确认 `GET /catalog/file-artifacts/{file_id}` 的 `data.has_artifact` 为 `true`。
* - `403`
  - `ErrPermissionDenied`
  - 当前身份没有工作区读取权限。
  - 检查工作区成员资格和授权。
* - `409`
  - `ErrConflict`
  - 文件关联多个可选 Case，且未能唯一确定要读取的链路。
  - 提供 `case_id`。
* - `500`
  - `ErrServer`
  - 服务端无法读取文件处理链路。
  - 记录请求时间和错误信息后重试。
* - `503`
  - `ErrServiceUnavailable`
  - 血缘依赖服务不可用。
  - 稍后重试。
```

## 后续操作

[查询产物处理链路](get-artifact-lineage.md)。
