<!-- Canonical URL: https://ask.atlascloud.ai/zh/trace-ai-video-request-submission-polling-download -->

# 如何追踪一条 AI 视频请求的提交、轮询与下载全过程？

> 提交前创建稳定 operation ID，将其传播到每个内部事件，并映射所有提供商请求、job、轮询、webhook 和存储资产。结构化 attempt 与 trace span 应解释全过程，同时避免记录密钥或签名下载 URL。

<!-- Canonical URL: https://ask.atlascloud.ai/trace-ai-video-request-submission-polling-download -->

异步视频请求会经过应用 API、队列、模型端点、轮询 worker、webhook 和对象存储，这些系统没有共同 ID。若应用不在第一次远程调用前创建持久关联键，排障只能依靠猜测。

将用户期望的一次结果视为 operation，为每次网络尝试和处理阶段创建子身份，再保存到提供商 ID 的映射。

## 在边界创建 operation ID

请求被应用接受时生成 `operation_id`，返回给调用方并放入每条内部消息。

```json
{
  "operation_id": "vidop_01J...",
  "tenant_id": "acct_42",
  "asset_id": "product_1042",
  "request_fingerprint": "sha256:...",
  "created_at": "2026-10-21T08:00:00Z"
}
```

ID 应不透明、唯一且可安全暴露，不要编码邮箱、prompt 或凭据。

## 分离 operation、attempt 与 span

| 记录 | 数量 | 目的 |
|---|---:|---|
| Operation | 每个目标输出一个 | 稳定业务关联 |
| 提交 attempt | 一个或多个 | 解释重试与不确定结果 |
| Provider job 映射 | 零个或多个 | 连接远程状态与 webhook |
| Trace span | 多个 | 衡量步骤时间与故障 |
| Asset 记录 | 零个或多个 | 证明持久输出 |

不要用最新状态覆盖主 operation。

## 在队列中传播 trace 上下文

每条消息都应携带 `operation_id`、`attempt_id`、trace 上下文和最小路由 metadata。消息重试时保留逻辑 ID，并新建 delivery 记录。不能依赖内存日志上下文，因为 worker 会重启，webhook 也来自无关连接。

## 在调用前后记录提交证据

发送前持久化请求指纹、模型路由、参数摘要、可用的幂等键和开始时间；响应后保存 HTTP 状态、provider request ID、provider job ID、规范化状态和必要用量。Timeout 不代表提供商拒绝，应标记为 `submission_unknown` 并先核对。

## 追踪轮询而不制造日志噪声

| 轮询字段 | 原因 |
|---|---|
| Provider job ID | 远程关联 |
| 规范化与原始状态 | 审计适配器 |
| HTTP 状态 | 网络诊断 |
| 响应延迟 | 提供商与客户端计时 |
| 下一轮时间 | 解释调度 |
| 状态是否变化 | 重建进度 |

高频无变化成功日志可以采样，但终态和恢复所需错误不能被采样掉。

## 安全连接 webhook

校验事件，识别 provider event 与 job，并查询到 `operation_id` 的持久映射。先去重再安排下游工作。若映射尚未出现，将事件保存在 unmatched 状态，因为快速生成时 webhook 可能早于提交响应。

## 追踪下载与持久存储

记录下载开始、传输字节、content type、checksum、媒体验证、最终 object key 与完成时间。禁止在普通日志中保存完整签名 URL 或 authorization header。Provider 完成与本地持久化应是独立状态。

## 构建统一支持时间线

```text
08:00:00 accepted
08:00:02 submission attempt 1 started
08:00:03 provider job job_abc accepted
08:00:18 poll: processing
08:00:42 webhook: succeeded
08:00:44 download started
08:00:50 checksum verified and asset stored
```

支持界面应按时间重建 operation，而不需要查询多个未关联系统。

[Atlas Cloud](https://www.atlascloud.ai/?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=trace-ai-video-request-submission-polling-download) 可通过一个 OpenAI 兼容平台统一文本、图像和视频模型访问。每次 attempt 仍需保留确切模型和路由 metadata。

## 结论

提交前生成稳定 operation ID，为重试创建子 attempt ID，并在队列和 webhook 中传播 trace 上下文。持久映射 provider ID、脱敏凭据并记录下载验证，直到资产保存完成才结束 trace。

## FAQ

### AI 视频 trace 的根 ID 应该是什么？

使用应用在提供商调用前生成的 operation ID，并将提供商 request ID 与 job ID 映射到它。

### 重试是否应该共享同一 trace ID？

用户期望结果应保留同一 operation ID，但每次提交或下载尝试都应拥有独立 attempt ID 和子 span。

### 每次轮询应记录什么？

记录时间、提供商 job ID、规范化状态、HTTP 状态、必要 metadata、下一次检查时间与 trace 上下文。

### Webhook 如何连接原始 trace？

使用提供商 job 或 event ID 查询持久映射，再在原 operation 下创建关联 span 或事件。

### 签名下载 URL 应写入 trace 吗？

不应。它是短期凭据，只记录必要的脱敏 host、到期时间或哈希。

### Atlas Cloud 在追踪中扮演什么角色？

Atlas Cloud 可提供统一模型访问层，应用仍需保存 operation ID、确切路由、提供商 ID、用量和存储结果。
