Skip to content

/mypage 失敗通知 Slack 連携 E2E手順

目的

求職者向け /mypage/:token のスケジュール操作で以下を確認する。

  • 画面上でエラーメッセージ(トースト/表示)が出る
  • フロントから /api/v1/public/candidates/:token/schedule-errors が呼ばれる
  • バックエンドから Slack Webhook へ通知される

前提

  • SLACK_WEBHOOK_URL が有効値で設定されている
  • Backend が起動している(http://127.0.0.1:8787
  • Frontend が起動している
  • テスト用の有効な public_token を1つ用意している
  • Slack 側で通知先チャンネルを確認できる

起動

bash
# backend
npm run dev --workspace=backend

# frontend(別ターミナル)
npm run dev --workspace=frontend

http://localhost:3000/mypage/<public_token> を開き、スケジュール タブへ移動する。


1. GET失敗の通知確認(Queryエラー)

手順

  1. ブラウザDevToolsを開く
  2. Network request blocking に次を追加して有効化する
    */api/v1/public/candidates/*/schedules*
  3. /mypageスケジュール タブを再読み込みする

期待結果

  • 画面にエラー表示
    エラーが発生しました。時間をおいて再試行してください。
  • schedule-errors への POST が発生し、202 が返る
  • schedule-errors リクエストBodyに以下が含まれる
    • source: "query"
    • message: "エラーが発生しました。時間をおいて再試行してください。"
  • Slack に /mypage スケジュールエラー通知 が届く

確認後、request blocking は無効化する。


2. 更新失敗の通知確認(Mutationエラー)

手順(簡易: ネットワーク失敗を意図的に作る)

  1. DevTools の request blocking に次を追加して有効化
    */api/v1/public/candidates/*/schedules/*
  2. 既存の「空き」スケジュールを1件開き、削除を実行する
    空き枠がない場合は先に1件作成してから削除操作する

期待結果

  • トーストが表示される
    • 例: エラーが発生しました。時間をおいて再試行してください。
  • schedule-errors への POST が発生し、202 が返る
  • schedule-errors リクエストBodyに以下が含まれる
    • source: "mutation"
  • Slack に通知が届く

確認後、request blocking は無効化する。


3. 429(レート制限)の通知確認

分単位制限(20回/分)を先に消費し、次のUI操作で 429 を発生させる。

手順

  1. 以下で同一トークンに対して POST /schedules を20回実行する
bash
TOKEN="<public_token>"
for i in $(seq 1 20); do
  curl -s -o /dev/null -w "%{http_code}\n" \
    -X POST "http://127.0.0.1:8787/api/v1/public/candidates/${TOKEN}/schedules" \
    -H "Content-Type: application/json" \
    -d '{"start_time":"2026-02-09T10:00:00+09:00","end_time":"2026-02-09T11:00:00+09:00","adaptability":"どちらも可"}'
done
  1. 1分以内に /mypage 画面から空き時間の作成または削除を1回実行する

期待結果

  • UIにレート制限メッセージ
    • アクセスが集中しています。しばらく待ってから再試行してください。
  • schedule-errors への POST が発生し、202 が返る
  • schedule-errors リクエストBodyに以下が含まれる
    • source: "mutation"
    • code: "RATE_LIMITED"
  • Slack に通知が届く

4. Slack送信成功の確認ポイント

DevTools で schedule-errors リクエストを開き、Response が次であること:

json
{ "data": { "success": true, "skipped": false } }
  • success: true = Webhook送信成功
  • skipped: true = SLACK_WEBHOOK_URL 未設定などで送信未実行

補足(直接送信確認)

UIを使わず通知経路だけ確認する場合:

bash
curl -i -X POST \
  "http://127.0.0.1:8787/api/v1/public/candidates/<public_token>/schedule-errors" \
  -H "Content-Type: application/json" \
  -d '{"source":"mutation","code":"RATE_LIMITED","message":"実送信テスト"}'

202{"data":{"success":true,"skipped":false}} が返れば送信成功。