コンテンツにスキップ

Report & Email Agent

役割

Report Agent は BWTS IOT パイプラインにおける最終配信ステップです。IOT Manager から完全にコンパイルされた調査文脈 — 根本原因、確信度、すべての専門家からの証拠、修復手順 — を受領し、メールで配信される整形済み HTML レポートに変換します。分析、統合、データクエリは一切行いません。


仕組み

  1. 入力を検証

    Report Agent は IOT Manager から report_request_v1 ペイロードを含むタスクを受領します。すべての必須フィールド — アラート・メタデータ、データ所見、PMS 所見、ケースファイル所見、確信度を持つ確定原因、修復手順、緊急度分類 — が存在することを検証します。

    必須フィールドが欠落または不正な形式の場合、エージェントは即座に説明的なエラーでタスクを失敗とします — 部分的レポートの生成を試みることはありません。

  2. コンテキスト JSON を書き出す

    検証済みペイロードはエージェントの作業ディレクトリ内の構造化 JSON ファイルに書き出されます。このファイルは report_builder.py の入力として機能し、ロギングとデバッグの目的で保存されます。

    shared/IOT-manager/report-agent/{alert_ids}_{timestamp}_context.json
  3. report_builder.py validate を実行

    エージェントは report_builder.pyvalidate モードで呼び出し、ビルド前にコンテキスト JSON のスキーマレベル・チェックを実行します。

    Terminal window
    python report_builder.py validate --input context.json

    これにより、ビルド・ステップの前に構造的問題(欠落ネスト・フィールド、型不一致)を捕捉し、不正な形式の HTML ではなく明確なエラー・メッセージを生成します。

  4. report_builder.py build を実行

    検証が通ると、エージェントは report_builder.pybuild モードで呼び出して HTML レポートを生成します。

    Terminal window
    python report_builder.py build --input context.json --output report.html

    ビルダーは緊急度ベースの色分けを適用し、テーブルを整形し、すべての証拠を自己完結型の HTML 文書に埋め込みます。

  5. プレーンテキスト・メール本文を作成

    エージェントは主要な所見を要約する簡潔なプレーンテキストのメール本文を書きます。これにより、HTML 添付を取り除いたりブロックしたりするメール・クライアントでもレポートが読めることが保証されます。プレーンテキスト本文には以下が含まれます:

    • 船舶名と機器タグ
    • 緊急度分類
    • 確信度付きの最上位根本原因
    • 完全な HTML レポートが添付されている旨のメモ
  6. gmail_send.py 経由で送信

    エージェントは gmail_send.py を呼び出し、HTML レポートを添付してメールを配信します。

    Terminal window
    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
  7. 配信を確認

    gmail_send.py が成功を返した後、エージェントは自身のタスクを完了とマークし、親タスクに確認コメントを投稿します。IOT Manager はこの確認を使って調査ループを閉じます。


レポート構造

HTML レポートは3つの主要セクションに分かれており、それぞれがアラートをレビューするエンジニアリングチームに対して明確な目的を果たします。

調査に含まれるすべてのアラートのテーブルで、即時的な文脈を提供します。

説明
Alert ID一意のアラート・インスタンス識別子
Equipment TagBWTS 機器識別子(例:BWTS-UV-003)
Parameter違反しているセンサーパラメータ(例:uv_intensity)
Current Valueアラート時の最新センサー読み値
Threshold違反された設定済みしきい値
Triggered Atアラート発火の ISO 8601 タイムスタンプ
SeverityCRITICALWARNINGINFO

緊急度の色分け

HTML レポートは、IOT Manager が決定した緊急度分類に基づき、上部に色分けバナーを適用します。

緊急度バナー色意味
IMMEDIATE赤 (#dc2626)次の BWTS 運転前に対応が必要。コンプライアンス違反または安全リスク。
SHORT-TERMオレンジ (#f59e0b)次の入港時に対応。劣化トレンドまたは保全期日。
MONITOR青 (#3b82f6)観察と記録。軽微な偏差または早期警告信号。

メール形式

フィールド
Fromalerts@your-domain.example
Toops-team@your-domain.example
Subject[BWTS REPORT] {SEVERITY} — {Parameter} — {Vessel} — {Date}
Body主要所見のプレーンテキスト要約
Attachmentreport.html — 完全な整形済みレポート

してはならないこと

分析しない

センサーデータを解釈しない、トレンドを特定しない、パラメータを相関させない。Report Agent が呼び出される前にすべての分析が完了しています。

統合しない

所見を相互参照しない、確信度を付与しない、根本原因を判定しない。それは IOT Manager の排他的責任です。

データクエリしない

PostgreSQL に接続しない、Dashboard API を呼ばない、機器マニュアルを問い合わせない。受領したコンパイル済みペイロードからのみ動作します。


ツール

ツールスクリプト目的
Report Builderreport_builder.py validateビルド前に report_request_v1 スキーマに対してコンテキスト JSON を検証
Report Builderreport_builder.py build検証済みコンテキストから整形済み HTML レポートを生成
Email Sendergmail_send.py sendSMTP 経由で HTML 添付付きのレポート・メールを配信