predict-assignment について
predict-assignmentは、サービスデスク向けのServiceNowインシデント振り分けスキルです。テキスト情報と過去の解決実績から割り当て先やカテゴリを予測し、信頼度判定と精度追跡を行います。
主な機能
- 01説明文からキーワードを抽出
- 02類似する過去のインシデントを照合
- 03成功率と解決時間でグループを順位付け
- 04カテゴリとサブカテゴリを予測
- 05信頼度に応じて割り当て、精度を追跡
活用シーン
- 01未割り当てインシデントを適切なチームへ振り分け
- 02インシデントのカテゴリとサブカテゴリを設定
- 03信頼度の低いインシデントを手動トリアージへ回す
MCP 対応
ServiceNowのMCPツールでインシデントや履歴を検索し、割り当てとカテゴリを更新して、予測根拠をノートに記録します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill predict-assignmentインストール後、Claude Code で/predict-assignmentを入力して読み込まれたか確認します。
詳細
割り当ての予測
概要
このスキルは、過去の解決パターン、キーワードの頻度、グループのパフォーマンス指標を分析し、受信したインシデントに最適な割り当てグループとカテゴリを予測します。サービスデスクのタッチレスルーティングを実現します。
- 受信したインシデントの短い説明と説明から、キーワードのシグナルを分析します
- 類似したテキストを持つ過去のインシデントを照会し、解決したグループを特定します
- 解決成功率と平均解決時間に基づいて、候補となる割り当てグループを順位付けします
- 内容分析に基づいて、インシデントのカテゴリとサブカテゴリを予測します
- 信頼度スコアとフォールバックルーティングを適用して、予測した割り当てを設定します
- 時間の経過に伴う予測精度を追跡し、ルーティングルールを改善します
使用する場合: 新しいインシデントが未割り当て、または誤ったカテゴリに分類された状態で届き、自動的に適切な割り当てグループとカテゴリを予測して、手動でのトリアージ時間を短縮したい場合に使用します。
前提条件
- ロール:
itil、incident_manager、またはassignment_rule_admin - プラグイン:
com.snc.incident(Incident Management) - アクセス権:
incidentへの読み取り/書き込み、sys_user_group、sys_choice、sn_agent_workspace、sys_cs_channelへの読み取り - 知識: 組織のサポートグループ構成とカテゴリ体系に関する知識
- データ: 信頼性の高い予測を行うために、少なくとも 3~6 か月分の解決済みインシデントデータ
手順
ステップ 1:受信したインシデントを取得する
ルーティングが必要な、新規または未割り当てのインシデントを取得します。
MCP を使用する場合(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: incident
query: active=true^state=1^assignment_groupISEMPTY
fields: sys_id,number,short_description,description,category,subcategory,contact_type,caller_id,cmdb_ci,priority
limit: 25
REST API を使用する場合:
GET /api/now/table/incident?sysparm_query=active=true^state=1^assignment_groupISEMPTY&sysparm_fields=sys_id,number,short_description,description,category,subcategory,contact_type,caller_id,cmdb_ci,priority&sysparm_limit=25
ステップ 2:キーワードとシグナルを抽出する
インシデントの短い説明と説明を解析して、ルーティングのシグナルを抽出します。
| シグナルの種類 | 例 | 重み |
|---|---|---|
| テクノロジーのキーワード | VPN、SAP、Exchange、Oracle、AWS | 0.35 |
| 症状のキーワード | クラッシュ、遅延、エラー、タイムアウト、停止 | 0.20 |
| インフラストラクチャ用語 | サーバー、データベース、ネットワーク、ファイアウォール、ロードバランサー | 0.25 |
| ビジネスコンテキスト | 給与、請求書、注文、出荷、コンプライアンス | 0.20 |
インシデントのテキストからシグナルベクトルを作成し、過去のデータとの照合に使用します。
ステップ 3:パターン照合のために過去のインシデントを照会する
類似した説明を持つ解決済みインシデントを見つけて、ルーティングパターンを特定します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: state=6^resolved_atONLast 180 days@javascript:gs.daysAgoStart(180)@javascript:gs.daysAgoEnd(0)^short_descriptionLIKE[primary_keyword]^assignment_groupISNOTEMPTY
fields: sys_id,number,short_description,category,subcategory,assignment_group,resolved_by,resolve_time
limit: 50
REST API を使用する場合:
GET /api/now/table/incident?sysparm_query=state=6^resolved_atONLast 180 days@javascript:gs.daysAgoStart(180)@javascript:gs.daysAgoEnd(0)^short_descriptionLIKE[primary_keyword]^assignment_groupISNOTEMPTY&sysparm_fields=sys_id,number,short_description,category,subcategory,assignment_group,resolved_by,resolve_time&sysparm_limit=50
ステップ 4:候補となる割り当てグループを順位付けする
過去の結果を集計し、適合度に基づいてグループを順位付けします。
スコア計算式:
group_score = (frequency * 0.40) + (success_rate * 0.30) + (speed_score * 0.30)
ここで:
- frequency:類似するインシデントをこのグループが解決した頻度(0~1 に正規化)
- success_rate:再割り当てなしで解決したインシデントの割合(0~1)
- speed_score:SLA に対する平均解決時間の逆数スコア(0~1)
| 順位 | 割り当てグループ | 頻度 | 成功率 | 平均解決時間 | スコア |
|---|---|---|---|---|---|
| 1 | ネットワーク運用 | 34/50 | 94% | 2.1 時間 | 0.91 |
| 2 | インフラストラクチャチーム | 10/50 | 88% | 3.4 時間 | 0.72 |
| 3 | サービスデスク L2 | 6/50 | 70% | 8.2 時間 | 0.48 |
ステップ 5:カテゴリとサブカテゴリを予測する
有効なカテゴリとサブカテゴリの組み合わせを照会し、内容に基づいて照合します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_choice
query: name=incident^element=category^inactive=false
fields: sys_id,label,value
limit: 100
REST API を使用する場合:
GET /api/now/table/sys_choice?sysparm_query=name=incident^element=category^inactive=false&sysparm_fields=sys_id,label,value&sysparm_limit=100
抽出したキーワードを、類似する過去のインシデントに最も頻繁に関連付けられているカテゴリと照合します。
ステップ 6:Agent Workspace のコンテキストに照らして検証する
追加のコンテキストを確認するため、インシデントが Agent Workspace または会話チャネルから発生したかどうかを確認します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_channel
query: source_record=[incident_sys_id]
fields: sys_id,channel_type,conversation,state
limit: 5
REST API を使用する場合:
GET /api/now/table/sys_cs_channel?sysparm_query=source_record=[incident_sys_id]&sysparm_fields=sys_id,channel_type,conversation,state&sysparm_limit=5
ステップ 7:予測した割り当てを適用する
最上位の割り当てグループと予測したカテゴリをインシデントに適用します。
MCP を使用する場合:
Tool: SN-Update-Record
Parameters:
table_name: incident
sys_id: [incident_sys_id]
data:
assignment_group: [predicted_group_sys_id]
category: network
subcategory: vpn
state: 2
REST API を使用する場合:
PATCH /api/now/table/incident/{sys_id}
Content-Type: application/json
{
"assignment_group": "[predicted_group_sys_id]",
"category": "network",
"subcategory": "vpn",
"state": "2"
}
ステップ 8:予測の根拠を記録する
MCP を使用する場合:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [incident_sys_id]
work_notes: |
=== PREDICTIVE ASSIGNMENT ANALYSIS ===
Model: Keyword-Historical Pattern v1.0
Keywords Detected: "VPN", "disconnect", "remote"
Signal Category: Network / VPN
Assignment Group Predictions:
1. Network Operations (score: 0.91, confidence: HIGH)
- 34/50 similar incidents resolved by this group
- 94% first-touch resolution rate
- Avg resolution: 2.1 hours
2. Infrastructure Team (score: 0.72, confidence: MEDIUM)
3. Service Desk L2 (score: 0.48, confidence: LOW)
Category Prediction: Network > VPN
Based on: 68% of similar incidents categorized as Network/VPN
Action Taken: Assigned to Network Operations (highest score)
Fallback: Infrastructure Team if reassigned within 30 minutes
ステップ 9:予測精度を追跡する
再割り当て率を監視して、予測品質を測定します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: work_notesLIKEPREDICTIVE ASSIGNMENT^sys_updated_onONLast 30 days@javascript:gs.daysAgoStart(30)@javascript:gs.daysAgoEnd(0)
fields: sys_id,number,assignment_group,reassignment_count,state
limit: 200
追跡する主な指標:
- 初回割り当て精度:再割り当てされなかった予測の割合
- カテゴリ精度:予測されたカテゴリが変更されなかった割合
- ルーティングで削減できた時間:作成から割り当てまでの時間と、手動で行った場合の基準時間との差
- 再割り当て率:予測された割り当てが上書きされる頻度
ツールの使用方法
| ツール | 目的 | 使用するタイミング |
|---|---|---|
SN-Natural-Language-Search | 自然言語で未割り当てのインシデントを検索する | 初期候補の発見 |
SN-Query-Table | 履歴データ、カテゴリ、グループをクエリする | パターンの分析と検証 |
SN-Update-Record | 予測された割り当てとカテゴリを適用する | インシデントのルーティング |
SN-Add-Work-Notes | 予測の根拠を記録する | 監査証跡と透明性の確保 |
SN-Get-Table-Schema | インシデントとグループのフィールドを確認する | セットアップと構成 |
ベストプラクティス
- 最低限のデータを必須にする -- short_description が3語未満の場合は予測しないでください
- 信頼度のしきい値を設定する -- スコアが0.75以上の場合にのみ自動割り当てし、それ以外はレビュー対象としてフラグを設定します
- 手動での割り当てを上書きしない -- 人がすでにグループを割り当てている場合は、上書きしないでください
- 優先度のエスカレーションを尊重する -- P1 のインシデントでは、必ず人による確認を行ってください
- 定期的に再学習する -- チームの変更に合わせて、キーワードとグループの関連付けを毎月再計算してください
- 新しいカテゴリを適切に処理する -- 履歴に一致するものがない場合は、Service Desk L2 をデフォルトにします
- CI の関係を考慮する -- cmdb_ci が入力されている場合は、そのサポートグループを強いシグナルとして使用します
- ドリフトを監視する -- 予測精度が80%を下回った場合にアラートを出します
トラブルシューティング
「予測が常に同じグループにルーティングされる」
原因: 履歴上、あるグループが大半のインシデントを解決しており、頻度スコアが偏っています 解決策: 頻度を抑制するか、全体ではなくカテゴリごとに正規化します。
「カテゴリ予測がサブカテゴリと一致しない」
原因: カテゴリとサブカテゴリに親子関係がありますが、予測でその関係が適用されていません
解決策: sys_choice を dependent_value とともにクエリし、有効な組み合わせを確認します。
「ほとんどの予測の信頼度が低い」
原因: 履歴データが不十分か、説明が曖昧すぎます 解決策: 履歴データの対象期間を広げるか、CI ベースのルーティングと組み合わせて、より強いシグナルを得ます。
「Agent Workspace のコンテキストが見つからない」
原因: インシデントが Agent Workspace または Virtual Agent 経由で作成されていません 解決策: ポータルまたはメールで作成されたインシデントでは、これは想定どおりです。テキストのみの分析に切り替えてください。
例
例 1:VPN 接続のインシデント
入力: INC0078901 - 「社内ネットワークに接続すると、VPN が頻繁に切断される」
分析:
- キーワード:「VPN」、「切断」、「接続」、「社内ネットワーク」
- 履歴上の一致:類似するインシデントが42件あり、そのうち36件は Network Operations が解決
- カテゴリの予測:Network > VPN(信頼度86%)
- 最上位のグループ:Network Operations(スコア:0.93)
アクション: Network Operations に割り当て、カテゴリを Network/VPN に設定します。
例 2:SAP の認証エラー
入力: INC0078902 - 「ユーザー JSMITH の SAP トランザクション SU01 で認証エラーが発生する」
分析:
- キーワード:「SAP」、「トランザクション」、「SU01」、「認証」
- 履歴上の一致:類似するインシデントが28件あり、そのうち24件は SAP Basis Team が解決
- カテゴリの予測:Software > ERP(信頼度91%)
- 最上位のグループ:SAP Basis Team(スコア:0.95)
アクション: SAP Basis Team に割り当て、カテゴリを Software/ERP に設定します。
例 3:曖昧なリクエスト
入力: INC0078903 - 「何かが動作しない」
分析:
- キーワード:具体的なものは検出されません
- 履歴上の一致:有効なシグナルが不十分です
- 信頼度:0.22(しきい値未満)
アクション: 手動トリアージの対象としてフラグを設定します。作業メモに「予測割り当てを行うには詳細が不十分です。内容を明確にするため、発信者への問い合わせを推奨します。」と追加します。
関連スキル
itsm/incident-triage- 手動でのトリアージと優先順位付けitsm/case-auto-resolve- 割り当て後の自動解決itsm/incident-lifecycle- インシデント管理の全ワークフローitsm/suggested-steps- 割り当てられたインシデントの解決手順を生成itsm/incident-sentiment- 感情を分析してルーティングの優先順位を付ける