{
  "issuer": "Astera Technology",
  "resource": "ops-route-channel-capacity",
  "locale": "zh-HK",
  "contract": "本例只有 email、message 兩種渠道。空位按所選渠道的上限減已用位計，同事另須有 exports 技能及 active 狀態。已用位超過上限屬無效資料，不會當作負空位。位數不是工時，也不預測客戶會等多久。",
  "input": {
    "channel": "message",
    "required": [
      "exports"
    ],
    "agents": [
      {
        "id": "A",
        "skills": [
          "exports"
        ],
        "status": "active",
        "capacity": {
          "email": {
            "used": 2,
            "limit": 5
          },
          "message": {
            "used": 2,
            "limit": 2
          }
        }
      },
      {
        "id": "B",
        "skills": [
          "exports"
        ],
        "status": "active",
        "capacity": {
          "email": {
            "used": 5,
            "limit": 5
          },
          "message": {
            "used": 0,
            "limit": 2
          }
        }
      }
    ]
  },
  "output": {
    "ok": true,
    "state": "complete",
    "result": {
      "eligible": [
        "B"
      ],
      "unknown": []
    },
    "trace": [
      {
        "id": "A",
        "skills": true,
        "available": true,
        "spare": false,
        "remaining": 0,
        "decision": "ineligible"
      },
      {
        "id": "B",
        "skills": true,
        "available": true,
        "spare": true,
        "remaining": 2,
        "decision": "eligible"
      }
    ]
  },
  "verificationCases": [
    {
      "name": "baseline",
      "input": {
        "channel": "message",
        "required": [
          "exports"
        ],
        "agents": [
          {
            "id": "A",
            "skills": [
              "exports"
            ],
            "status": "active",
            "capacity": {
              "email": {
                "used": 2,
                "limit": 5
              },
              "message": {
                "used": 2,
                "limit": 2
              }
            }
          },
          {
            "id": "B",
            "skills": [
              "exports"
            ],
            "status": "active",
            "capacity": {
              "email": {
                "used": 5,
                "limit": 5
              },
              "message": {
                "used": 0,
                "limit": 2
              }
            }
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "complete",
        "result": {
          "eligible": [
            "B"
          ],
          "unknown": []
        }
      }
    },
    {
      "name": "material-edit",
      "input": {
        "channel": "email",
        "required": [
          "exports"
        ],
        "agents": [
          {
            "id": "A",
            "skills": [
              "exports"
            ],
            "status": "active",
            "capacity": {
              "email": {
                "used": 2,
                "limit": 5
              },
              "message": {
                "used": 2,
                "limit": 2
              }
            }
          },
          {
            "id": "B",
            "skills": [
              "exports"
            ],
            "status": "active",
            "capacity": {
              "email": {
                "used": 5,
                "limit": 5
              },
              "message": {
                "used": 0,
                "limit": 2
              }
            }
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "complete",
        "result": {
          "eligible": [
            "A"
          ],
          "unknown": []
        }
      }
    },
    {
      "name": "fresh-boundary",
      "input": {
        "channel": "message",
        "required": [
          "exports"
        ],
        "agents": [
          {
            "id": "A",
            "skills": [
              "exports"
            ],
            "status": "active",
            "capacity": {
              "email": {
                "used": 2,
                "limit": 5
              },
              "message": {
                "used": 3,
                "limit": 2
              }
            }
          },
          {
            "id": "B",
            "skills": [
              "exports"
            ],
            "status": "active",
            "capacity": {
              "email": {
                "used": 5,
                "limit": 5
              },
              "message": {
                "used": 0,
                "limit": 2
              }
            }
          }
        ]
      },
      "expected": {
        "ok": false,
        "error": "CAPACITY_INPUT"
      }
    }
  ],
  "meaningOfNull": "該欄位未知或沒有已建立的值；請按逐項結果判斷。",
  "businessSideEffects": false
}
