Skip to content

Webhook によるリアルタイム PR 更新 #255

@coji

Description

@coji

概要

GitHub App の webhook を活用して PR データをほぼリアルタイムに更新する。現在の 30 分ポーリングからの脱却。

設計

詳細は docs/webhook-realtime-update-plan.md を参照。

主な設計方針

  • Acquisition / Processing 分離: fetch と analyze/upsert を別ジョブに分離
  • fetchedAt ガード: raw データに fetchedAt カラムを追加し、古いデータによる上書きを防止
  • coalesce で trigger 圧縮: N 回の webhook → 最大 2 run(1 running + 1 pending)
  • process ジョブは org 単位で直列化: concurrencyKey: process:${orgId}

実装ステップ

  1. fetchedAt カラム + ガード
  2. process ジョブの作成
  3. crawl ジョブのリファクタリング(fetch 専任化)
  4. recalculate ジョブの廃止(process に統合)
  5. webhook handler の拡張
  6. GitHub App 設定の更新(イベント購読有効化)
  7. ポーリング頻度の調整(将来)

前提条件

  • durably v0.15.0 へのアップグレード(coalesce, waitForRun が必要)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions