-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
背景
現在、bot/非人間ユーザーの除外が2つの仕組みで行われている:
organizationSettings.excludedUsers— comma-separated テキスト。batch 処理でレビュー/ディスカッションのアクターを除外し、サイクルタイム計算(pickup time, review time)に影響companyGithubUsers.type— feat: add type column to GitHub Users for bot filtering #145 で追加。PR一覧の表示フィルタ(type = 'Bot'を除外)
Copilot は DEFAULT_EXCLUDED_USERS としてハードコードされている。
対応方針
companyGithubUsers.type に統合する:
- batch の
filterActors()でexcludedUsersリストの代わりにcompanyGithubUsers.type = 'Bot'を参照 DEFAULT_EXCLUDED_USERS(Copilot) もtype = 'Bot'で管理organizationSettings.excludedUsersカラムと設定 UI を削除- 既存の
excludedUsers設定値をマイグレーションでcompanyGithubUsers.typeに反映
実装計画
Phase 1: excludedUsers → companyGithubUsers.type 統合
Step 1: tenant DBマイグレーション
- 既存の
excludedUsersの値をcompanyGithubUsersにtype='Bot'として挿入/更新 copilotをtype='Bot'として確実に登録organization_settingsからexcluded_usersカラムを DROPdb/tenant.sqlからexcluded_usersカラム定義を削除
Step 2: 型再生成
pnpm db:apply && pnpm db:generate→tenant-type.tsからexcludedUsersが消える
Step 3: batch処理の変更
batch/db/queries.ts:getTenantData()からexcludedUsersを削除。新関数getBotLogins(organizationId): Promise<Set<string>>を追加batch/github/pullrequest.ts:DEFAULT_EXCLUDED_USERS定数を削除。BuildConfig.excludedUsers→BuildConfig.botLogins: Set<string>。filterActors()をSet.has()に変更batch/github/analyze-repos.ts:organizationSettingの型からexcludedUsersを削除、新パラメータbotLogins: Set<string>を追加batch/usecases/analyze-and-upsert.ts:OrganizationForAnalyzeからexcludedUsersを削除、getBotLogins()で取得して渡す
Step 4: 設定UIの削除
+forms/organization-settings.tsx: excludedUsersフィールドを削除+schema.ts:excludedUsersフィールドを削除+functions/mutations.server.ts:updateOrganizationSettingからexcludedUsersを削除index.tsx: submission.valueとmutation呼び出しからexcludedUsersを削除
Step 5: Copilot自動Bot登録
batch/db/mutations.tsのupsertCompanyGithubUsers()でcopilot(case-insensitive) を自動的にtype='Bot'で登録
Step 6: テスト更新
batch/github/__tests__/buildPullRequests-filter.test.ts:config.excludedUsers→config.botLogins: new Set<string>()
Phase 2: type変更時の自動再計算トリガー(durable execution 導入後)
companyGithubUsers.type を UI で変更した際、サイクルタイムの再計算(upsert)を自動的にバックグラウンド実行する。
- 前提: durable execution 基盤(ジョブキュー)が導入済みであること
- 実装: GitHub Users 設定画面で type を変更 → ジョブキューに upsert ジョブを enqueue → バックグラウンドで全PRを再計算
- 理由: type 変更のたびに手動で
upsertを実行する必要がなくなり、UX が向上する
関連
- Bot PRをauthorTypeカラムで正しくフィルタする #143 — fetcher から
author.__typenameで自動設定 - feat: add type column to GitHub Users for bot filtering #145 —
companyGithubUsers.typeカラム追加
注意点
excludedUsersは PR 作者ではなくレビュアー/コメント者の除外に使われている- 統合後は batch の
buildPullRequestsで tenant DB からcompanyGithubUsersを参照する必要がある - Phase 2 は durable execution 基盤の導入が前提。それまでは type 変更後に手動で batch upsert を実行する必要がある
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels