eew-architecture

实现紧急地震速报功能的架构设计,支持多源数据整合与分级缓存管理,区分处理地震动预报和警报电文,按报数独立追踪并依据来源优先级自动合并更新,最终驱动UI实时展示震源参数、预警区域及精度信息。

快捷安装

在终端运行此命令,即可一键安装该 Skill 到您的 Claude 中

npx skills add ingen084/KyoshinEewViewerIngen --skill "eew-architecture"

EEW (緊急地震速報) Architecture

Instructions

EEW関連のコードを修正・理解する際は以下の手順に従う:

  1. 変更対象の特定: 予報電文か警報電文かを判断し、対応するキャッシュとメソッドを特定
  2. 影響範囲の確認: EewControllerの処理フローを追跡し、関連するイベントを確認
  3. ソース優先順位の考慮: 複数ソース間の優先順位ルールを理解した上で修正
  4. テストデータの活用: EewMock.csでテストデータを確認・追加

Key Files

ファイル役割
src/KyoshinEewViewer/Series/KyoshinMonitor/Services/Eew/EewController.csEEW統合管理コントローラ
src/KyoshinEewViewer/Series/KyoshinMonitor/Models/Eew.csEEWデータモデル
src/KyoshinEewViewer/Series/KyoshinMonitor/Controls/EewPanel.axamlEEW表示UI
src/KyoshinEewViewer/Series/KyoshinMonitor/Services/Eew/EewTelegramSubscriber.cs電文受信・振り分け
src/KyoshinEewViewer/Series/KyoshinMonitor/Services/Eew/SignalNowFileWatcher.csSNPファイル監視
src/KyoshinEewViewer/Series/KyoshinMonitor/Models/EewMock.csテスト用モックデータ

Dual Cache Architecture

EewControllerは2つの独立したキャッシュを管理:

キャッシュ処理メソッド電文タイトル
EewCacheUpdate()緊急地震速報(地震動予報)
WarningEewCacheUpdateWarning()緊急地震速報(警報)

重要: 予報電文と警報電文は報数(SerialNo)が別々に管理される。

Processing Flow

[予報電文] → EewTelegramSubscriber → EewController.Update() → EewCache
[警報電文] → EewTelegramSubscriber → EewController.UpdateWarning() → WarningEewCache

InvokeEewUpdated() → 両キャッシュをマージ → EewUpdated イベント発火

Source Priority

EewSource enum と優先順位:

  • Dmdata: 最優先(他ソースを上書き)
  • SignalNowProfessional: 精度情報のみ補完
  • KyoshinMonitor / Axis: 基本ソース

詳細なMixEewロジックはreference.mdを参照。

Examples

予報電文の新しい報数を追加する場合:

  1. EewTelegramSubscriberで電文を受信
  2. EewController.Update()を呼び出し
  3. EewCacheに新規エントリ追加または既存を更新
  4. InvokeEewUpdated()でイベント発火

警報地域を追加表示する場合:

  1. EewWarningAreasモデルを確認(reference.md参照)
  2. EewPanel.axamlのバインディングを確認
  3. 必要に応じてEewController.UpdateWarning()の処理を修正

Additional Resources

詳細なモデル・イベント仕様はreference.mdを参照