分析しない
センサーデータを解釈しない、トレンドを特定しない、パラメータを相関させない。Report Agent が呼び出される前にすべての分析が完了しています。
Report Agent は BWTS IOT パイプラインにおける最終配信ステップです。IOT Manager から完全にコンパイルされた調査文脈 — 根本原因、確信度、すべての専門家からの証拠、修復手順 — を受領し、メールで配信される整形済み HTML レポートに変換します。分析、統合、データクエリは一切行いません。
入力を検証
Report Agent は IOT Manager から report_request_v1 ペイロードを含むタスクを受領します。すべての必須フィールド — アラート・メタデータ、データ所見、PMS 所見、ケースファイル所見、確信度を持つ確定原因、修復手順、緊急度分類 — が存在することを検証します。
必須フィールドが欠落または不正な形式の場合、エージェントは即座に説明的なエラーでタスクを失敗とします — 部分的レポートの生成を試みることはありません。
コンテキスト JSON を書き出す
検証済みペイロードはエージェントの作業ディレクトリ内の構造化 JSON ファイルに書き出されます。このファイルは report_builder.py の入力として機能し、ロギングとデバッグの目的で保存されます。
shared/IOT-manager/report-agent/{alert_ids}_{timestamp}_context.jsonreport_builder.py validate を実行
エージェントは report_builder.py を validate モードで呼び出し、ビルド前にコンテキスト JSON のスキーマレベル・チェックを実行します。
python report_builder.py validate --input context.jsonこれにより、ビルド・ステップの前に構造的問題(欠落ネスト・フィールド、型不一致)を捕捉し、不正な形式の HTML ではなく明確なエラー・メッセージを生成します。
report_builder.py build を実行
検証が通ると、エージェントは report_builder.py を build モードで呼び出して HTML レポートを生成します。
python report_builder.py build --input context.json --output report.htmlビルダーは緊急度ベースの色分けを適用し、テーブルを整形し、すべての証拠を自己完結型の HTML 文書に埋め込みます。
プレーンテキスト・メール本文を作成
エージェントは主要な所見を要約する簡潔なプレーンテキストのメール本文を書きます。これにより、HTML 添付を取り除いたりブロックしたりするメール・クライアントでもレポートが読めることが保証されます。プレーンテキスト本文には以下が含まれます:
gmail_send.py 経由で送信
エージェントは gmail_send.py を呼び出し、HTML レポートを添付してメールを配信します。
python gmail_send.py send \ --to "ops-team@your-domain.example" \ --from "alerts@your-domain.example" \ --subject "[BWTS REPORT] {SEVERITY} — {Parameter} — {Vessel} — {Date}" \ --body body.txt \ --attachment report.html配信を確認
gmail_send.py が成功を返した後、エージェントは自身のタスクを完了とマークし、親タスクに確認コメントを投稿します。IOT Manager はこの確認を使って調査ループを閉じます。
HTML レポートは3つの主要セクションに分かれており、それぞれがアラートをレビューするエンジニアリングチームに対して明確な目的を果たします。
調査に含まれるすべてのアラートのテーブルで、即時的な文脈を提供します。
| 列 | 説明 |
|---|---|
| Alert ID | 一意のアラート・インスタンス識別子 |
| Equipment Tag | BWTS 機器識別子(例:BWTS-UV-003) |
| Parameter | 違反しているセンサーパラメータ(例:uv_intensity) |
| Current Value | アラート時の最新センサー読み値 |
| Threshold | 違反された設定済みしきい値 |
| Triggered At | アラート発火の ISO 8601 タイムスタンプ |
| Severity | CRITICAL、WARNING、INFO |
統合中に特定された、確信度でランク付けされた根本原因。各エントリには以下が含まれます:
| 列 | 説明 |
|---|---|
| Root Cause | 特定された原因の説明 |
| Confidence | 色指標付きの HIGH、MEDIUM、LOW |
| Supporting Evidence | 各専門エージェントからの証拠の箇条書き |
| Data Trend | Data Agent からの関連センサートレンドの要約 |
| Maintenance Status | PMS Agent からの関連保全所見 |
| Historical Precedent | Casefile Agent からの過去事象(該当する場合) |
緊急度層別にグループ化された修復手順。各アクションには以下が含まれます:
| 列 | 説明 |
|---|---|
| Action | Manual Agent からの手順別プロセス |
| Urgency | IMMEDIATE、SHORT-TERM、MONITOR |
| Manual Reference | PureBallast 3.1 マニュアル内のセクションとページ番号 |
| Safety Warnings | マニュアルからの一字一句引用の安全警告(該当する場合) |
| Required Tools/Spares | 手順に必要な工具と部品 |
HTML レポートは、IOT Manager が決定した緊急度分類に基づき、上部に色分けバナーを適用します。
| 緊急度 | バナー色 | 意味 |
|---|---|---|
| IMMEDIATE | 赤 (#dc2626) | 次の BWTS 運転前に対応が必要。コンプライアンス違反または安全リスク。 |
| SHORT-TERM | オレンジ (#f59e0b) | 次の入港時に対応。劣化トレンドまたは保全期日。 |
| MONITOR | 青 (#3b82f6) | 観察と記録。軽微な偏差または早期警告信号。 |
| フィールド | 値 |
|---|---|
| From | alerts@your-domain.example |
| To | ops-team@your-domain.example |
| Subject | [BWTS REPORT] {SEVERITY} — {Parameter} — {Vessel} — {Date} |
| Body | 主要所見のプレーンテキスト要約 |
| Attachment | report.html — 完全な整形済みレポート |
分析しない
センサーデータを解釈しない、トレンドを特定しない、パラメータを相関させない。Report Agent が呼び出される前にすべての分析が完了しています。
統合しない
所見を相互参照しない、確信度を付与しない、根本原因を判定しない。それは IOT Manager の排他的責任です。
データクエリしない
PostgreSQL に接続しない、Dashboard API を呼ばない、機器マニュアルを問い合わせない。受領したコンパイル済みペイロードからのみ動作します。
| ツール | スクリプト | 目的 |
|---|---|---|
| Report Builder | report_builder.py validate | ビルド前に report_request_v1 スキーマに対してコンテキスト JSON を検証 |
| Report Builder | report_builder.py build | 検証済みコンテキストから整形済み HTML レポートを生成 |
| Email Sender | gmail_send.py send | SMTP 経由で HTML 添付付きのレポート・メールを配信 |