# 警報

> 答えを待っている警報を、それを読むその場で確認します。その下には、警報の状態遷移すべての永続する時系列が続きます。

警報のタブは、警報のための運転の画面です。今何が待っているかと、すでに起きたことの記録が、1 つの画面に積み重なっています。[イベント](events)の最初のタブ（`/events?view=alarms`）で、ページが開くときのタブであり、状態バーの警報の表示を押したときに着く先です。見るには**イベントの表示**が要ります。ここで警報に答えるには **Logic の操作**が要ります。履歴を書き出すには**履歴のエクスポートとインポート**が要ります。警報そのものは [Logic > Alarms](logic-alarms)で定義します。このタブが警報を編集することはありません。

このタブは 2 枚のカードを積みます。上が**現在の警報**で、警報の登録簿から実時間で読みます。下が**履歴**で、永続する記録簿から読みます。

## 現在の警報 {#current-alarms}

このカードは、発生中か、まだ確認を待っているすべての警報を並べます。状態バーが数えている集団とまったく同じなので、2 つが食い違うことはありません。動いている登録簿から直に読み、登録簿自身の合図（どの面からの発生、復帰、確認でも、定義の保存、無効化、削除でも）で描き直され、時計では描き直されません。

### 見出し {#the-head}

| 要素 | 何を見せるか |
| --- | --- |
| 鈴 | 警報の印です。何かが発生中か未確認の間は鳴っている形に変わり、一覧の中でいちばん重い優先度の色になります。 |
| 要約 | 「発生中 N 件（未確認 M 件）」。今この瞬間に条件が真であるものの数と、まだ答えを待っている警報の数です。誰も確認しないうちに復帰した警報も、未確認として数え続けます。文字はいちばん重い優先度の色合いになります。 |
| すべて確認 | 待っているすべての警報に、1 つの指令で答えます。**Logic の操作**を持つロールにだけ描かれます。ランタイムが停止している間（「ランタイム停止中」）と、何も待っていない間（「応答を待っている警報はありません。」）は、理由をツールチップに置いて灰色になります。それ以外のときのツールチップは「応答を待っている警報をすべて確認します」です。操作ログ帯は「すべての警報を確認しました。」と答えます。 |

### 行 {#the-rows}

行は優先度の重い順（重大、高、中、低）に並び、同じ優先度の中では発生の古い順に並ぶので、いちばん答えを要する警報がいちばん上の近くに来ます。表は詰まっていて、高さは最大で 240 ピクセル、カードの中でたどれます。

| 列 | 何であるか |
| --- | --- |
| 名前 | 優先度の色合いの点、続いて警報の名前です。名前に指を置くと、その警報のメッセージが出ます。 |
| アドレス | その警報の、根から書いた Logic のアドレス `Alarms.<folders>.<name>` です。式やダッシュボードがそれを指すときの書き方と同じです。 |
| 状態 | 状態と優先度です。たとえば「発生中・未確認 · 重大」です。状態の言葉は、警報の状態機械の 4 つです。**正常**、**発生中、未確認**、**発生中、確認済み**、そして**復帰、未確認**（誰かが答える前に条件が正常へ戻ったもの）です。 |
| 発生時刻 | 今の発生が始まった日付と時刻です。条件が復帰し、行が確認だけを待っているときは横線になります。 |
| 確認 | まだ未確認の行にだけ、しかも **Logic の操作**を持つロールにだけ描かれます。ツールチップは「確認」に続けて警報の名前を出し、ランタイムが停止している間は「ランタイム停止中」とともに灰色になります。操作ログ帯は警報の名前に続けて「を確認しました。」と答えます。 |

確認は一度に 1 件ずつ送られます。最初のものがまだロジックの待ち行列にある間の 2 度目の押下は、一覧がすでに手放した行に答える代わりに、無視されます。このカードからの確認はどれも、Logic のページが使うのと同じ記録付きの経路を通り、下の履歴に、そのウィンドウでサインインしているユーザーの名前で記録されます。誰もサインインしていなければステーションです。待っているものが何もない警報を確認しても、何も起きません。確認を要しないと定義された警報が未確認として現れることはありません。まっすぐ「発生中、確認済み」に上がり、まっすぐ正常に落ちるので、その行は発生中の間だけ出て、**確認**を持ちません。

発生中のものも待っているものもないとき、このカードは「発生中の警報も、応答を待っている警報もありません。」と、「警報が発生すると、確認できるようにここに出ます。」と読めます。

### 拒みの言葉 {#refusals}

| 状況 | 何が起きるか |
| --- | --- |
| ロールが Logic の操作を持たない | **確認**も**すべて確認**も描かれません。行は読めるままです。それでも処理に届いた押下には「お使いのロールは Logic を見られますが、操作（値の書き込み、アクションの実行、警報の確認）はできません。」と答えます。 |
| ランタイムが停止している | どちらの操作も描かれたまま「ランタイム停止中」とともに灰色になります。一覧は、登録簿が持つ状態をそのまま見せます。 |
| 何も待っていない | **すべて確認**が「応答を待っている警報はありません。」とともに灰色になります。どの行も**確認**を持ちません。 |

## 履歴 {#history}

現在の警報の下のカードは永続する時系列です。警報の状態遷移ごとに 1 行で、[イベント](events#how-the-three-timelines-behave)に書いた 3 つの時系列の共通のふるまいに従います。

### 検索と絞り込み {#search-and-filter}

| 操作部 | 値 | 何をするか |
| --- | --- | --- |
| 検索 | 入力例は「名前、メッセージ、信号源を検索」 | その当時のスナップショットのままの、警報の名前、そのメッセージ、遷移の信号源に対する「含む」の一致です。 |
| 優先度 | **すべての優先度**（既定）、**重大**、**高**、**中**、**低** | 起きた当時にその優先度を持っていた警報の遷移だけを残します。 |
| 開始日、終了日 | 日付の欄が 2 つで、最初は空です | 期間に入る遷移だけを残します。欄はそれぞれ期間の端で、空の欄は境目ではありません。**終了日**に選んだ日は、その最後の瞬間まで丸ごと入ります。どちらかの欄に日付があるあいだは、隣の十字（「期間を解除します」）が 2 つを空にします。規則はどの時系列にも共通のもので、[イベント](events#how-the-three-timelines-behave)に書いてあります。 |
| 再読み込み | | 記録簿を読み直します。ツールチップは「警報のイベントを再読み込み」です。 |
| エクスポート | **CSV で書き出す…**、**JSON で書き出す…** | 検索と優先度と期間に一致する遷移をすべて、ページを次々にたどって書きます。今並んでいる行だけではありません。**履歴のエクスポートとインポート**があるときだけ描かれ、一覧が空の間は灰色になります。 |

### 行 {#the-rows-1}

| 行の部分 | 内容 |
| --- | --- |
| 時刻 | その遷移の日付と時刻です。 |
| 点 | 優先度の色合いです。重大には重大、高には注意、中には気付き、低には中立です。 |
| 名前 | 遷移の当時の警報の名前です。 |
| 要約 | 「移る前 → 移った先 · 信号源」です。たとえば「正常 → 発生中・未確認 · Logic」です。 |
| レベル | 優先度の言葉です。 |

状態機械のどの遷移も、何が引き起こしたかにかかわらず記録されます。**信号源**は、その出どころを名指します。

| 信号源 | 意味 |
| --- | --- |
| Logic | ロジックの周期が条件を評価しました。オンディレイのあとの発生か、オフディレイのあとの復帰です。 |
| *ユーザーの名前* | このタブ、Logic のページ、または[警報バー](component-alarm-banner)で、そこにサインインしているユーザーが行った確認です。 |
| ステーション | そこに誰もサインインしていないときの同じ確認と、警報のスナックバーのカードの**確認**です。後者は常にステーションとして記録されます。 |
| エージェント | エージェントが MCP を通して行った確認です。記録簿には MCP として記録されます。 |
| 構成 | 条件、遅れ、確認の要否、有効かどうかが変わった状態で定義が保存されたか、定義が削除されたので、その警報が正常に戻されました。 |

行と詳細のパネルは、信号源をステーションの言語で示します。検索は、その言葉でも、記録簿が記録した値でも信号源を見つけます。コピーした行と書き出したファイルに書かれるのは、記録簿が記録したとおりの値です。Logic、Station、MCP、Configuration、またはユーザーの名前です。

### 詳細のパネル {#the-detail-panel}

行を選ぶと、優先度のバッジと名前、完全な時刻、遷移の要約、その当時に警報が告げたメッセージ（または「メッセージは記録されていません。」）、そして 2 枚のカードを持つパネルが開きます。

| カード | 項目 | 内容 |
| --- | --- | --- |
| イベント | レベル | 優先度です。 |
| イベント | イベント ID | この遷移についての記録簿の識別情報です。 |
| 警報のスナップショット | 遷移 | 状態の言葉による「移る前 → 移った先」です。 |
| 警報のスナップショット | 信号源 | Logic、ユーザーの名前、ステーション、エージェント、構成のいずれかです。 |
| 警報のスナップショット | 警報 ID | 警報の定義の変わらない識別子で、名前を変えても同じです。 |

**イベントをコピー**は、「時刻 | 警報 | 優先度 | 名前 | 移る前 → 移った先 · 信号源 | メッセージ」を 1 行としてコピーし、「イベントをクリップボードにコピーしました。」と答えます。

### エクスポートの列 {#export-columns}

| 列 | CSV | JSON |
| --- | --- | --- |
| 時刻 | 最初の列で、見出しは「Timestamp (UTC-03:00)」（ステーション自身のずれ） | `Timestamp` |
| 優先度 | `Priority` | `Priority` |
| 名前 | `Name` | `Name` |
| 遷移 | `Transition`。「移る前 → 移った先」の形で書きます | `From` と `To` の 2 つの項目 |
| 信号源 | `Source` | `Source` |
| メッセージ | `Message` | `Message` |
| イベントの識別子 | `EventId` | `EventId` |
| 警報の識別子 | `AlarmId` | `AlarmId` |

JSON のファイルは包みで、`{ "TimeZone": "...", "Events": [ ... ] }` です。ファイル名は `alarm-history-<yyyyMMdd-HHmmss>.csv` と `.json` です。CSV はほかのエクスポートと同じく、ステーションの小数の区切り記号の設定に従います。小数点が点なら並びの区切りは `,`、小数点がコンマなら `;` です。`=`、`+`、`-`、`@` で始まるます目には、表計算がそれを文字として読むよう、アポストロフィーを前に付けます。

### 空の状態と状態の行 {#empty-states-and-the-status-line}

- 「警報のイベントはまだありません」と、「ランタイムが警報の遷移を観測すると、ここに出ます。」
- 「この絞り込みに合う警報のイベントはありません」と、「優先度や検索の語を変えると、この履歴が広がります。」
- 状態の行は「表示 N 件 · 1 ページ目」と読め、検索か優先度か期間が効いているときは「 · 絞り込みあり」が続きます。右側には「1 件を選択中」と「更新 hh:mm:ss」が出ます。

## 警報のタブがしないこと {#what-the-alarms-tab-does-not-do}

- 警報を作ることも、編集も、有効化も、無効化も、削除もしません。それは [Logic > Alarms](logic-alarms)の仕事です。
- 警報を棚上げすることも、黙らせることもしません。音も鳴らしません。
- 再起動のあとに確認済みの状態を戻すこともしません。登録簿は最初の周期からすべての状態を導き直すので、保留だった確認はもう一度与えなければなりません。履歴は、その前と後の遷移を保ちます。
- スナックバーのカードの**確認**で誰が答えたかは記録しません。その確認は、誰がサインインしていてもステーションとして記録されます。
- 履歴を警報や状態で絞り込むことはしません。名前で検索するか、**開始日**と**終了日**で期間を狭めるか、その結果を書き出してください。
- 履歴はそれ自身の操作を持ちません。ここで遷移を消すものは何もありません。
