Skip to content

起動時に未取得メッセージをバックフィルする機能を追加#133

Merged
hideack merged 2 commits into
masterfrom
import-passed-messages
May 23, 2026
Merged

起動時に未取得メッセージをバックフィルする機能を追加#133
hideack merged 2 commits into
masterfrom
import-passed-messages

Conversation

@hideack

@hideack hideack commented May 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • 前回アプリ停止〜再起動までのギャップに投稿された Slack メッセージを、起動時に conversations.history API で自動取得する
  • app_heartbeat テーブルを SQLite に追加し、ギャップが5分以上の場合のみバックフィルを実行(通常の再起動では API 呼び出しゼロ)
  • バックフィルは RTM 起動をブロックしないバックグラウンド処理で実行し、1分ごとに進捗・対象時間帯を標準出力に表示する
  • バックフィルで取得した個々のメッセージは標準出力に表示せず、SQLite/TSV へのログ書き込みのみ行う

動作の流れ

起動
  ↓
app_heartbeat を読み取りギャップを計算
  ↓ (ギャップ > 5分のとき)
過去24時間以内に活動があったチャンネルを対象に
conversations.history を5並列でバックグラウンド実行
  ↓
RTM 起動 (リアルタイム受信開始)
  ↓ (バックグラウンドで継続)
1分ごとに進捗表示
  ↓
Backfill complete: N message(s) fetched.

Test plan

  • アプリを停止し、5分以上待ってから再起動 → Backfilling messages for N channel(s) in background... が表示され、完了後に Backfill complete: N message(s) fetched. が表示されること
  • 5分未満で再起動 → バックフィルがスキップされること(API 呼び出しなし)
  • バックフィル中に個々のメッセージが標準出力に表示されないこと
  • SQLite DB にバックフィルで取得したメッセージが保存されること(created_atlogged_at にギャップがある行で確認)
  • バックフィル中もリアルタイムメッセージが正常に受信・表示されること

🤖 Generated with Claude Code

hideack and others added 2 commits May 23, 2026 09:10
- 前回停止からのギャップが5分以上の場合のみ、過去24時間以内に活動があったチャンネルを対象に conversations.history API で差分を取得する
- app_heartbeat テーブルを SQLite に追加し、起動時・1分ごとにハートビートを記録してギャップを判定する
- バックフィルは RTM 起動をブロックしないようバックグラウンドで実行し、1分ごとに進捗・時間帯を標準出力に表示する
- 通常の再起動(5分未満)では API 呼び出しゼロ

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
バックフィル中の個々のメッセージ表示を抑制し、SQLite/TSV へのログ書き込みのみ行う。
進捗・完了メッセージは引き続き標準出力に表示する。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@hideack hideack merged commit edef7f7 into master May 23, 2026
2 checks passed
@hideack hideack deleted the import-passed-messages branch May 23, 2026 12:09
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