> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Work スキーマ

> セルフホストの work item、heartbeat、キュー統計の構造。

Work API は `self_hosted` Environment に接続された外部 worker によって使用されます。worker はキューに入った Session work をポーリングし、実行するアイテムを確認応答し、heartbeat でリースを維持し、work が完了または中断すべき時にアイテムを停止します。

## Work item オブジェクト

list、poll、get、update metadata、acknowledge、stop の各エンドポイントによって返されます。

| フィールド                 | 型            | 説明                                                |
| --------------------- | ------------ | ------------------------------------------------- |
| `id`                  | string       | `work_` プレフィックス付きの Work item ID                   |
| `type`                | string       | 常に `"work"`                                       |
| `environment_id`      | string       | `env_` プレフィックス付きの Environment ID                  |
| `data`                | object       | work ペイロードの記述子                                    |
| `data.type`           | string       | 現在は常に `"session"`                                 |
| `data.id`             | string       | `sess_` プレフィックス付きの Session ID                     |
| `state`               | string       | Work item の状態。[Work の状態](#work-states) を参照        |
| `created_at`          | string       | UTC での作成時刻                                        |
| `acknowledged_at`     | string\|null | worker がアイテムを確認応答した時刻、ack 前は `null`               |
| `started_at`          | string\|null | 最初の heartbeat でアイテムが `active` へ移行した時刻、開始前は `null` |
| `latest_heartbeat_at` | string\|null | 最新の heartbeat タイムスタンプ、最初の heartbeat 前は `null`     |
| `stop_requested_at`   | string\|null | グレースフル停止がリクエストされた時刻、または `null`                    |
| `stopped_at`          | string\|null | アイテムが `stopped` に到達した時刻、稼働中は `null`               |
| `metadata`            | object       | work item に関連付けられた文字列のみのメタデータ                     |

## Work の状態

| 状態         | 説明                                          |
| ---------- | ------------------------------------------- |
| `queued`   | work item がポーリング可能である、または配信されたがまだ確認応答されていない |
| `starting` | worker がアイテムを確認応答し、実行を開始すべきである              |
| `active`   | worker が heartbeat を送信し、現在のリースを所有している       |
| `stopping` | グレースフル停止がリクエストされた。worker はドレインして停止を確定すべきである |
| `stopped`  | アイテムは稼働しておらず、heartbeat できない                 |

## Work メタデータ

Work メタデータは文字列のみのマップです。Session が work item を作成すると、Session のメタデータがこの文字列マップに投影されます。変更をマージするには [Work item メタデータの更新](/ja/cloud-agents/api/environments/work/update-metadata) を使用します:

* 文字列値はキーを upsert します。
* `null` はキーを削除します。
* `metadata` を省略すると、現在のメタデータは変更されません。

## Work heartbeat オブジェクト

[Work heartbeat の送信](/ja/cloud-agents/api/environments/work/heartbeat) によって返されます。

| フィールド            | 型       | 説明                           |
| ---------------- | ------- | ---------------------------- |
| `type`           | string  | 常に `"work_heartbeat"`        |
| `last_heartbeat` | string  | 受理された heartbeat のサーバータイムスタンプ |
| `lease_extended` | boolean | 成功した heartbeat では常に `true`   |
| `state`          | string  | heartbeat 後の現在の work item 状態 |
| `ttl_seconds`    | integer | 現在のリース TTL（秒）                |

## Work キュー統計オブジェクト

[Work キュー統計の取得](/ja/cloud-agents/api/environments/work/stats) によって返されます。

| フィールド              | 型            | 説明                                                |
| ------------------ | ------------ | ------------------------------------------------- |
| `type`             | string       | 常に `"work_queue_stats"`                           |
| `depth`            | integer      | 現在 worker が取得可能なキュー内アイテム                          |
| `pending`          | integer      | 直近に配信されたがまだ確認応答されていないキュー内アイテム                     |
| `oldest_queued_at` | string\|null | 最も古いキュー内アイテムの作成時刻、キューが空の場合は `null`                |
| `workers_polling`  | integer      | 直近 30 秒間にこの environment をポーリングした一意の `Worker-ID` 値 |

## 関連

<CardGroup cols={2}>
  <Card title="クラウド環境" icon="server" href="/ja/cloud-agents/environments">
    Agent が実行されるコンテナ、ネットワーク、依存関係を選択する。
  </Card>
</CardGroup>
