Skip to content

feat: 設定ホットリロードと状態永続化を追加#3

Open
yuu1111 wants to merge 3 commits intomainfrom
feat/hot-reload-and-state-persistence
Open

feat: 設定ホットリロードと状態永続化を追加#3
yuu1111 wants to merge 3 commits intomainfrom
feat/hot-reload-and-state-persistence

Conversation

@yuu1111
Copy link
Copy Markdown
Owner

@yuu1111 yuu1111 commented Mar 29, 2026

Summary

  • config.jsonの変更を再起動なしで自動検出・リロードする機能を追加(配信者の追加/削除、ポーリング間隔変更に対応)
  • 配信者状態をdata/state.jsonに永続化し、再起動時の重複オンライン通知を防止
  • StreamerStateにJSONタグを直接追加しpersistedState中間型を削除
  • dirty flagで変更時のみ状態ファイルを書き込むよう最適化
  • オフライン時にtitle/game変更通知が発火するバグを修正
  • ensureDirがMkdirAll失敗時もdone扱いにするバグを修正
  • time.FixedZoneのpackage-level変数化、デッドコード削除、重複ロジック統合

Test plan

  • go vet ./... でコンパイルエラーがないことを確認
  • go build ./cmd/stream-notifier/ でビルド成功を確認
  • 起動→停止→再起動でdata/state.jsonが保存・復元されることを確認
  • 監視中にconfig.jsonを編集し、リロードログが出ることを確認
  • 配信者がオフライン時にtitle変更しても通知が飛ばないことを確認

yuu1111 added 3 commits March 29, 2026 04:51
config.jsonの変更を再起動なしで自動反映する機能と、
配信者状態をdata/state.jsonに永続化して再起動時の
重複通知を防止する機能を追加。
- StreamerStateにJSONタグを直接追加しpersistedStateと変換関数を削除
- MkdirAllをRun初期化時に移動し毎ポーリングのsyscallを排除
- checkConfigReloadのmap構築を1パスに統合
- processStreamerにdirty flagを導入し無変更時の状態保存をスキップ
- 全ファイルのコメント末尾の句点を除去
- DetectChangesで両方IsLiveの場合のみtitle/game変更を検出するよう修正
- ensureDirがMkdirAll失敗時にdone扱いにしないよう修正
- time.FixedZoneをpackage-level変数に変更し毎回の生成を排除
- formatElapsedTime/formatDurationの共通ロジックを抽出
- 未使用のSendToMultipleWebhooksを削除
- findStreamerをfindStreamerIndexベースに統合
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant