# イベント

> 何が起きたかについてのステーションの記録。警報、発生記録、インターロックの永続する時系列と、その隣にある実時間の診断コンソール。検索、絞り込み、CSV と JSON のエクスポートが付きます。

イベントは「何が起きたのか」に答えるページです。ナビゲーションバーの下側のまとまり（検証、イベント、エージェント、設定、アカウント）にあり、4 つのタブを持ちます。**警報**、**発生記録**、**インターロック**はステーションのイベントの記録簿から読む永続する時系列で、**コンソール**はどの下位の仕組みも書き込む実時間の診断の流れです。ページの見出しには「残り続ける、警報、発生記録、インターロックの履歴と、実時間の診断コンソールです。」と出ます。

このページを見るには**イベントの表示**の権限（システムの領域）が要ります。ナビゲーションバーの項目も `/events` のアドレスも、これで守られます。工場出荷のどのロールも既定でこれを持ち、「未サインイン」も含まれます。管理者は常に持ちます。空で作ったロールはこれを持たずに始まり、管理者は管理者以外のどのロールからもこれを外せます。どのタブからでもエクスポートするには、さらに**履歴のエクスポートとインポート**が要ります。

## タブとそのアドレス {#the-tabs-and-their-addresses}

| タブ | 何を並べるか | アドレス | ページ |
| --- | --- | --- | --- |
| 警報 | 今答えを待っている警報を、警報の状態遷移の永続する時系列の上に重ねて並べます | `/events?view=alarms` | [警報](events-alarms) |
| 発生記録 | 実行中に、または実行外の「常時」の監視によって観測された、発生記録のすべての変わり目です | `/events?view=occurrences` | [発生記録](events-occurrences) |
| インターロック | ユニットの停止インターロックのラッチのすべての遷移です | `/events?view=interlocks` | [インターロック](events-interlocks) |
| コンソール | 動いているプログラムの、直近 500 件の診断のエントリです | `/events?view=console` | [コンソール](events-console) |

ページは警報で開きます。タブを押すとアドレスが書き換わり（置き換えなので、タブの帯がブラウザーの戻る履歴を埋めることはありません）、`view=` を持つリンクはそのタブに着きます。ページが知らない値なら、警報で開いたままです。状態バーの警報の表示（「発生中 N 件（未確認 M 件）」の付いた鈴で、警報が発生中か確認を待っている間だけ描かれます）が警報の一覧に届くのも、この道です。押すと `/events?view=alarms` へ移動します。数えているものを読み、それに答える画面であって、警報を設定する Logic のページではありません。

コンソールはほかのタブの後ろで生きたままなので、末尾への追従の状態とたどった位置は、タブを切り替えても残ります。3 つの時系列も、行き来する間、それぞれの検索、絞り込み、行、選択を保ちます。

## 誰が見られて、誰が出せるか {#who-can-see-and-export}

| 権限 | このページで何を開くか | それがないとき |
| --- | --- | --- |
| イベントの表示 | ナビゲーションバーの項目、アドレス、すべてのタブ | 項目は描かれず、アドレスは拒まれます |
| 履歴のエクスポートとインポート | どのタブの**エクスポート**（CSV、JSON）も、コンソールの**サポートパッケージを作成**も | エクスポートのボタンは描かれません。それでも処理に届いた押下には、操作ログ帯が「イベントのエクスポートには「履歴のエクスポートとインポート」の権限が必要です。」と答えます |
| Logic の操作 | 警報のタブの**確認**と**すべて確認** | 操作は描かれません。行は読めるままです |
| 設定の変更 | コンソールの**記録を開始**と**記録を停止** | ボタンは描かれません。記録の状態は、それでも読み上げに伝えられます |

権限は接続ごとに決まるので、別のユーザーとしてサインインしているブラウザーの回線は自分自身のボタンの組を見ます。サインイン、サインアウト、ロールの編集をすると、その場で描き直されます。目録は[権限](users-permissions)にあります。

## 3 つの時系列のふるまい {#how-the-three-timelines-behave}

警報、発生記録、インターロックのタブは 1 つのふるまいを共有するので、タブを切り替えても規則が変わることはありません。

| ふるまい | 詳しく |
| --- | --- |
| 範囲 | どのタブも、その検索と絞り込みと選んだ期間に一致するイベントを 1 ページに 500 件ずつ、新しい順に並べます（時刻が並んだときは挿入の順で決めます）。一覧の下の**新しい方へ**と**古い方へ**が、記録簿の残りを 1 ページずつたどります。この帯は、次のページがあるときにだけ描かれます。いちばん新しいページは記録簿をそのまま追いかけ、その後ろのページは動きません。いま届いたイベントが、読んでいる行を下に押しやることはありません。 |
| 期間 | 日付の欄が 2 つ、**開始日**と**終了日**で、それぞれが読み取る期間の端です。空の欄は境目ではないので、両方を空にすると記録簿の全体を読みます。終わりの境目に選んだ日は、その最後の瞬間まで丸ごと入ります。隣の十字が 2 つを消し、タブを最初のページに戻します。 |
| 検索 | 一致させる列を入力例の文字が名指す入力欄です（タブに応じて、名前、メッセージ、信号源、モデル、ユニット、手順、実施者）。一致は「含む」で、大文字と小文字を区別せず、入力を止めてから 250 ミリ秒後に当てはめます。前後の空白は無視します。 |
| レベルの絞り込み | タブごとに 1 つの一覧です。警報では**優先度**、発生記録では**重大度**、インターロックでは**遷移**です。変えると、その場で記録簿を読み直します。 |
| 再読み込み | 丸い矢印のボタンが、求めに応じて記録簿を読み直します。ツールチップはタブを名指します（「警報のイベントを再読み込み」、「発生記録を再読み込み」、「インターロックのイベントを再読み込み」）。読み取りが動いている間は灰色になります。 |
| 実時間の再読み込み | 記録簿に確定したイベントは、開いているタブを自分で問い合わせ直させます。まとめられるので、ひとかたまりの発生でも読み取りは 1 回です（最後の確定からおよそ 200 ミリ秒後）。見ていないタブは、戻ったときに読み直します。 |
| 選択 | 行を押すと、右に詳細のパネルが開きます。選択はイベントの識別子で更新をまたいで保たれ、その行が読み取ったページにないと外れます。パネルの見出しの十字が閉じます。 |
| イベントをコピー | 詳細のパネルの下のボタンが、そのイベントを 1 行の文字としてコピーします。完全な時刻、種類、レベル、名前、遷移の要約、メッセージ、そして発生記録とインターロックには識別情報が入ります。操作ログ帯は「イベントをクリップボードにコピーしました。」、ブラウザーが渡さなかったときは「クリップボードがコピーを受け付けませんでした。」と答えます。 |
| エクスポート | **エクスポート**を押すと、**CSV で書き出す…**と **JSON で書き出す…**のメニューが開きます。書き出すのは、検索と絞り込みと期間に一致するイベントのすべてで、ページを次々にたどり、描かれている行だけではありません。ページが空の間は灰色になります。 |
| 絞り込まれない記録 | 記録簿は、誰がサインインしているかでも、そのロールがほかで何を見てよいかでも絞り込まれません。これはステーションの技術的な記録であり、黙って抜けた行があれば、履歴が嘘をつくことになるからです。 |

### 一覧と詳細のパネル {#the-list-and-the-detail-panel}

どの行も、[地域と書式](settings-localization)で決めた書式によるイベントの日付と時刻、そのレベルの色合いの点、イベントの名前、遷移の 1 行の要約、そして右端にそのレベル自身の言葉（優先度、重大度、または遷移）を持ちます。色合いはどの面でも 1 つの尺度に従います。重大の警報、重大の発生記録、インターロックの作動には重大の色合い、高、警告、「信号源が健全」には注意の色合い、中には気付きの色合い、そのほかは中立です。

詳細のパネルは、レベルのバッジと名前で始まり、続いてミリ秒までの完全な時刻、遷移の要約、メッセージ（定義に何もなかったときは「メッセージは記録されていません。」）、**レベル**と**イベント ID** を持つ **イベント** のカード、そして各タブのページが項目を並べる 1 枚以上のスナップショットのカードが並びます。

### 状態の行 {#the-status-line}

どの時系列の下にもあります。「表示 N 件 · 1 ページ目」で、N は開いているページに並ぶ行の数です。検索かレベルの絞り込みか期間が効いている間は「 · 絞り込みあり」が続きます。読み直しの間は「表示 N 件 · 再読み込みしています…」です。右側には、行を選んでいる間の「1 件を選択中」と、最後に読み取りが成功した時刻を示す「更新 hh:mm:ss」が出ます。

### 読み込み中、空、失敗の状態 {#loading-empty-and-failed-states}

| 状態 | タブに出るもの |
| --- | --- |
| 最初の読み取り | 「警報のイベントを読み込んでいます…」と、「残り続ける記録簿から、条件に合う新しい警報のイベントを読み取っています。」（名詞はタブに従います）。 |
| 何も記録されていない | 「警報のイベントはまだありません」と、そこに何が出るようになるかを伝える 1 行。それぞれのタブのページが自分のものを引きます。 |
| 何も一致しない | 「この絞り込みに合う警報のイベントはありません」と、「優先度や検索の語を変えると、この履歴が広がります。」（タブに応じて優先度、重大度、遷移）。 |
| 記録簿を読めない | 「警報を読み込めませんでした」と、「残り続ける記録簿に、一時的に届きません。コンソールのログには影響しません。」、そして**もう一度試す**のボタン。状態の行は「警報を利用できません」と読めます。 |
| あとの再読み込みが失敗した | 最後に成功した行が画面に残り、操作ログ帯が「警報の再読み込みに失敗しました。」と伝えます。 |

## 時系列を書き出す {#exporting-a-timeline}

どちらの形式もブラウザーのダウンロードなので、ステーション自身のウィンドウでも離れたブラウザーでも同じように働きます。操作ログ帯は「N 件のイベントを書き出しました」に続けてファイル名を答えるか、「エクスポートに失敗しました。」と答えます。ファイル名はタブと、並べ替えられる時刻の印を持ちます。`alarm-history-20260902-143000.csv`、`occurrence-history-<stamp>.json`、`interlock-history-<stamp>.csv` のようになります。

どの時刻も設定した表示の書式で書かれ、ファイルは時刻の基準を一度だけ明示します。CSV は最初の列の見出しでそれを名指し（「Timestamp (UTC-03:00)」または「Timestamp (UTC)」）、JSON は最上位の `TimeZone` の項目を `Events` の配列の横に置いた包みです。行に見えているものを超えて、列は凍結されたスナップショットの全体を、識別情報も含めて持ちます（イベントの識別子、警報、発生記録、観測の識別子、モデルとユニットの識別子）。書き出した時系列を実行記録ファイルやレポートと突き合わせられるようにするためです。`=`、`+`、`-`、`@` で始まる CSV のます目には、表計算がそれを式ではなく文字として開くよう、アポストロフィーを前に付けます。列はそれぞれのタブのページに並べます。

## 記録簿が保つもの {#what-the-journal-keeps}

3 つの時系列は `events.db` の中にあります。ステーションのデータのフォルダーで `config.db` と `history-index.db` の隣にある、それ自身のデータベースで、時系列ごとに追記だけの表を 1 つ持ちます。書かれるのはイベントの瞬間に取ったスナップショット（名前、優先度、メッセージ、モデル、ユニット、信号源、観測した値）なので、あとから定義の名前を変えても、編集しても、削除しても、そのときステーションがあなたに告げたことが書き換わることは決してありません。このページでも、アプリのほかのどこでも、行を削除するものはありません。保持は時系列ごとに新しい方から **100,000 行**を保ち、追記のたびに挿入の順で古いものを刈るので、時計を直しても新しいイベントが追い出されることはありません。

記録簿は再起動と構成の復元を生き延びます。[バックアップ](settings-backups)が複製するのは構成のデータベースと資産のフォルダーだけなので、それを復元しても記録簿は一緒に運ばれず、巻き戻りもしません。これは状態ではなく遷移の記録です。再起動のあと、警報の登録簿は最初の周期からすべての警報を導き直し、保留だった確認は失われ、時系列は前と後に何が起きたかをそのまま見せます。

イベントは、ランタイムを決して止めない順序付きの待ち行列を通って記録簿に届きます。作り手はすぐにスナップショットを取り、書き手 1 つが到着の順に確定し、失敗し続ける確定は 10 回まで試されてから、コンソールにエラーの行を残してそのイベントを落とします。**実行中に**観測された発生記録は、まずその実行自身のファイルに書かれ（履歴とレポートが読む源です）、それから同じイベントの識別子と実行の文脈とともに記録簿へ複写されます。「常時」の発生記録が**実行の外で**行った観測は、記録簿にだけ入ります。インターロックと警報の遷移には、記録簿のほかに記録がありません。ログの範囲を開いたエージェントは、`event_history_read` を通して同じ記録簿を読み取り専用で読みます（[許可する範囲](agent-areas)を参照）。

## 記録の隣にあるコンソール {#the-console-beside-the-record}

コンソールは 3 つの時系列とは別のものです。プログラムの診断の流れを、記憶の中で 500 件だけ回して見せるもので、再起動で失われ、**表示を消去**で空になります。2 つが重なるのは、ランタイムが自分のしていることを語るところです。発生記録の変わり目は Process の領域にコンソールの行を残し（発生はその重大度のレベルで、重大はエラー、警告は警告、情報は情報として）、インターロックの遷移も同じです（作動は警告、信号源が健全と再投入は情報）。警報の遷移はコンソールに**現れません**。評価の跡は診断の細部であり、それを記録するのは[詳細記録](events-console#detailed-capture)だけです。時系列が型どおりの記録で、コンソールはその周りのランタイムを説明します。

## イベントがしないこと {#what-events-does-not-do}

- 何も設定しません。警報は [Logic > Alarms](logic-alarms)で、発生記録は [Process > 段取り > 発生記録](process-occurrences)で、停止インターロックは [Process > 定義 > 自動化](process-automation)で定義します。
- インターロックの再投入もしません。それはダッシュボードのインターロックのコンポーネントか、ユニット自身の画面の仕事です。
- ユニットや実行記録による絞り込みはありません。名前で検索するか、その実行記録自身の発生記録を見るために[履歴](histories)でその実行記録を開いてください。
- 何も削除せず、何も編集しません。行を取り除くのは保持だけです。
- ランタイムが停止している間、このページはまったく描かれません。[アカウント](account)以外のすべての画面が一時停止の知らせに置き換わり、時系列もそこに含まれます。記録簿そのものには手を触れず、ランタイムを再起動すれば、以前とまったく同じに読めます。
