Skip to content

fix: reduce D1 reads for summary candidates - #76

Merged
gitdmnt merged 1 commit into
mainfrom
codex/d1-summary-state
Sep 2, 2026
Merged

gitdmnt merged 1 commit into
mainfrom
codex/d1-summary-state

Conversation

@gitdmnt

@gitdmnt gitdmnt commented Sep 2, 2026

Copy link
Copy Markdown
Owner

概要

  • 自動要約候補の判定を、message の集約走査から channel の状態列参照へ変更しました。
  • 各メッセージの summary_pending とチャンネル別の件数・先頭・末尾をD1トリガーで保持します。
  • 要約後は、実際に取得した最大200件のメッセージIDだけをトランザクション内で処理済みにします。
  • 同一timestampの200件超と、LLM処理中に届く過去メッセージを取りこぼさないようにしました。
  • Worker先行のローリングデプロイでは、旧appのIDなし進捗を安全なno-opにして欠落を防ぎます。
  • 状態統合テストをCIへ追加し、appのデプロイをWorker完了後にしました。

想定される効果

5分ごとの候補取得は channel 表だけを読み、全チャンネルの未要約 message を毎回 COUNT/MIN/MAX しなくなります。

代わりに、メッセージ追加時と最大200件の処理済み確定時に状態更新が発生します。

検証

  • cargo fmt --all -- --check
  • workers/tests/summary_state.sh
  • cargo test --workspace --all-features(88件成功)
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo check --manifest-path workers/Cargo.toml --target wasm32-unknown-unknown
  • fresh local D1へのmigration 0001–0005適用
  • Luna Maxによる実装後の敵対的レビュー: APPROVE

ローリングデプロイ上の注意

migration → Worker → app の順で適用します。

旧appと新Workerが重なる短い期間は同じ範囲を再処理する可能性がありますが、未処理メッセージを欠落させない設計です。

@gitdmnt
gitdmnt merged commit 1962fb3 into main Sep 2, 2026
2 checks passed
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