# 專門工單為何總是去了普通隊列？

逐條看是否符合及先後結果，找出普通規則截走專門工單的情況。

## 符合的規則未必有機會生效

本例按首條符合規則分派。R-general 接任何已知分類往 General；R-exports 只接 exports 往 Exports；沒有符合則去 Intake。分類為 null 時，結果列未明並交具名 Intake 小組，不宣稱已選任何條件路線。這只是草稿，並非正式分派設定。

exports 工單的原規則次序

| 次序／規則 | 條件 | 隊列 | 判斷 |
| --- | --- | --- | --- |
| 1 / R-general | 任何分類 | General | 首條符合 |
| 2 / R-exports | category = exports | Exports | 符合但被截走 |

## 已選及被截走規則一起看

原例選 R-general 去 General，並列 R-exports 符合但被截走。把專門規則放先後，exports 才去 Exports；普通查詢仍去 General。頁面不修改任何正式工單或規則。

1. 看工單分類
2. 依次核規則
3. 選首條明確符合
4. 保留較後符合路線

分類未知先由 Intake 跟，待有分類依據再判。

exports 工單把 R-exports 放先，有甚麼改變？

改由 R-exports 去 Exports，R-general 仍符合但被截走。工單優先分類沒有改動。

## 先測草稿，再整理需求

可改次序及分類，測專門先、普通查詢及欠分類個案。匯出檔包括規則、已選規則及逐條結果，方便同事看草稿。

分類為 null 時，路線未明，Intake 負責覆核，沒有已選規則；不能自行當作 General。最多 30 條不同編號的規則，只用 any 或 equals 及有名稱的隊列。缺欄或不支援欄位便以 RULE_INPUT 拒絕，不在這裏判斷客戶損害、同意或帳戶身分。

商討自訂查詢或客服流程時，可用匯出草稿交代首條符合政策及預設負責小組。影響優先程度另行訂明。

## 完整本地記錄與逐項結果

```json
{
  "issuer": "Astera Technology",
  "resource": "ops-route-first-match-shadowing",
  "locale": "zh-HK",
  "contract": "本例按首條符合規則分派。R-general 接任何已知分類往 General；R-exports 只接 exports 往 Exports；沒有符合則去 Intake。分類為 null 時，結果列未明並交具名 Intake 小組，不宣稱已選任何條件路線。這只是草稿，並非正式分派設定。",
  "input": {
    "category": "exports",
    "fallback": "Intake",
    "rules": [
      {
        "id": "R-general",
        "match": "any",
        "queue": "General"
      },
      {
        "id": "R-exports",
        "match": "equals",
        "value": "exports",
        "queue": "Exports"
      }
    ]
  },
  "output": {
    "ok": true,
    "state": "complete",
    "result": {
      "queue": "General",
      "rule": "R-general",
      "shadowed": [
        "R-exports"
      ]
    },
    "trace": [
      {
        "id": "R-general",
        "queue": "General",
        "matches": true
      },
      {
        "id": "R-exports",
        "queue": "Exports",
        "matches": true
      }
    ]
  },
  "verificationCases": [
    {
      "name": "baseline",
      "input": {
        "category": "exports",
        "fallback": "Intake",
        "rules": [
          {
            "id": "R-general",
            "match": "any",
            "queue": "General"
          },
          {
            "id": "R-exports",
            "match": "equals",
            "value": "exports",
            "queue": "Exports"
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "complete",
        "result": {
          "queue": "General",
          "rule": "R-general",
          "shadowed": [
            "R-exports"
          ]
        }
      }
    },
    {
      "name": "material-edit",
      "input": {
        "category": "exports",
        "fallback": "Intake",
        "rules": [
          {
            "id": "R-exports",
            "match": "equals",
            "value": "exports",
            "queue": "Exports"
          },
          {
            "id": "R-general",
            "match": "any",
            "queue": "General"
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "complete",
        "result": {
          "queue": "Exports",
          "rule": "R-exports",
          "shadowed": [
            "R-general"
          ]
        }
      }
    },
    {
      "name": "fresh-boundary",
      "input": {
        "category": null,
        "fallback": "Intake",
        "rules": [
          {
            "id": "R-exports",
            "match": "equals",
            "value": "exports",
            "queue": "Exports"
          },
          {
            "id": "R-general",
            "match": "any",
            "queue": "General"
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "unknown",
        "result": {
          "queue": "Intake",
          "rule": null,
          "shadowed": []
        }
      }
    }
  ],
  "meaningOfNull": "該欄位未知或沒有已建立的值；請按逐項結果判斷。",
  "businessSideEffects": false
}
```
