Skip to content

通知トリガー × チャネルマトリクス

概要

Issue Outsource Platform における全通知イベントと、各通知チャネルへの配信ルールを定義する。 通知チャネルは Slack / Discord / メール / プラットフォーム内通知 の4系統とし、トリガーごとに対象者と配信先を制御する。


通知チャネル定義

チャネル用途特性
Slack社内PM・レビュワー向けリアルタイム通知Block Kit によるアクション付きメッセージ
Discord委託者コミュニティ向け通知Embed + ボタンコンポーネント
メール重要イベント(報酬確定・期限)のフォールバックダイジェスト配信対応
PF内プラットフォーム内の通知ベル全イベント記録、既読管理あり

通知マトリクス

凡例

  • : デフォルト有効(即時配信)
  • : デフォルト有効(ダイジェスト配信可)
  • : オプション(ユーザー設定で有効化)
  • : 配信なし

Issue ライフサイクル通知

#トリガー対象者SlackDiscordメールPF内優先度
1新規Issue公開委託者全員Medium
2Issue着手(アサイン)PM, レビュワーMedium
3MR提出レビュワーHigh
4レビューFB(差し戻し)委託者High
5承認・報酬確定委託者, PMCritical
6期限アラート(24h前)委託者, PMHigh
7予算超過アラートPMCritical
8レビュー滞留アラート(3日)レビュワー, PMHigh

補助通知

#トリガー対象者SlackDiscordメールPF内優先度
9コメント追加Issue関係者Low
10Issue取り下げ委託者(着手済み)Medium
11報酬支払完了委託者High
12新規プロジェクト公開委託者全員Low
13レビュワー変更委託者, 旧/新レビュワーMedium
14期限延長委託者, PMMedium

対象者ロール定義

ロール説明主な通知チャネル
PM(プロジェクトマネージャー)Issue発行・管理者。予算・進捗を監視Slack
レビュワーMRレビュー担当。品質管理Slack
委託者Issueを受注・作業するエンジニアDiscord
委託者全員プラットフォーム登録済みの全委託者Discord

優先度別配信ルール

優先度即時配信ダイジェストリトライ説明
Critical必須不可3回(5分間隔)報酬確定・予算超過など
Highデフォルト可(ユーザー設定)2回(10分間隔)MR提出・期限アラートなど
Mediumデフォルト1回(30分間隔)Issue着手・変更通知など
Lowオプションデフォルトなしコメント・プロジェクト公開など

エスカレーションルール

一定時間内に対応がない場合、上位通知チャネルにエスカレーションする。

条件待機時間エスカレーション先
レビュー未着手3日PM へ Slack + メール
期限アラート未対応12時間PM へ Slack メンション
MR差し戻し後未対応2日PM へ進捗確認通知
予算超過アラート未確認1時間PM + 管理者 へメール

通知データモデル

notifications テーブル
├── id: UUID (PK)
├── trigger_type: enum (ISSUE_PUBLISHED, ISSUE_ASSIGNED, MR_SUBMITTED, ...)
├── priority: enum (CRITICAL, HIGH, MEDIUM, LOW)
├── recipient_user_id: FK → users
├── recipient_role: enum (PM, REVIEWER, CONTRACTOR, ALL_CONTRACTORS)
├── channel: enum (SLACK, DISCORD, EMAIL, IN_APP)
├── status: enum (PENDING, SENT, DELIVERED, READ, FAILED)
├── payload: JSONB (通知内容)
├── related_issue_id: FK → issues (nullable)
├── related_mr_id: FK → merge_requests (nullable)
├── retry_count: int (default 0)
├── scheduled_at: timestamp
├── sent_at: timestamp (nullable)
├── read_at: timestamp (nullable)
├── created_at: timestamp
└── updated_at: timestamp

配信フロー

[トリガー発生]

[通知ルーター]
  ├── トリガー種別 → マトリクス参照
  ├── 対象者特定 → ロール解決
  ├── ユーザー設定確認 → ON/OFF・頻度チェック
  └── チャネル別ディスパッチ
        ├── Slack Worker → Slack API
        ├── Discord Worker → Discord API
        ├── Email Worker → メール送信サービス
        └── InApp Worker → DB書き込み + WebSocket Push

[配信結果記録]
  ├── 成功 → status: DELIVERED
  └── 失敗 → リトライキュー投入