一括配信 概要
一括配信は、ターゲット条件に合致する連絡先のチャットルームに、メッセージを一括送信する機能です。Fizz サービスが処理を担当します。
ステートマシン
Section titled “ステートマシン”配信は以下の状態遷移に従います。
| ステータス | 説明 |
|---|---|
DRAFT | 下書き。編集・削除可能 |
SCHEDULED | 予約済み。Cron でキューイング待ち |
QUEUED | キュー投入済み。処理待ち |
SENDING | 送信処理中 |
SENT | 送信完了 |
FAILED | 送信失敗(リトライ上限到達) |
CANCELED | キャンセル済み |
配信作成フロー
Section titled “配信作成フロー”| フィールド | 型 | 説明 |
|---|---|---|
id | UUID | 配信 ID |
shopId | UUID | 店舗 ID |
title | text | 配信タイトル |
content | text | メッセージ本文 |
criteria | jsonb | ターゲティング条件 |
status | text | ステータス |
targetCount | int | 対象件数(作成時計算) |
sentCount | int | 実際の送信件数 |
scheduledAt | timestamp | 予約日時 |
sentAt | timestamp | 送信完了日時 |
retryCount | int | リトライ回数 |
lastError | text | 最後のエラーメッセージ |
nextRetryAt | timestamp | 次回リトライ日時 |
createdBy | text | 作成者 ID |
Counter での操作
Section titled “Counter での操作”配信一覧画面
Section titled “配信一覧画面”┌──────────────────────────────────┐│ 一括配信 [+ 新規作成] │├──────────────────────────────────┤│ [下書き] [予約] [送信済] [失敗] │ ← ステータスタブ├──────────────────────────────────┤│ キャンペーンA SCHEDULED ││ 2024/01/15 15:00 ││ [編集] [複製] [キャンセル] │├──────────────────────────────────┤│ キャンペーンB SENT ││ 送信済: 150件 2024/01/14 ││ [詳細] │└──────────────────────────────────┘| 操作 | API | ステータス条件 |
|---|---|---|
| 作成 | POST /api/broadcast | - |
| 編集 | PUT /api/broadcast/{id} | DRAFT, SCHEDULED |
| 削除 | DELETE /api/broadcast/{id} | DRAFT, SCHEDULED |
| キャンセル | POST /api/broadcast/{id}/cancel | SCHEDULED のみ |
| 複製 | 既存配信を複製して DRAFT で作成 | SENT, FAILED |
| 件数プレビュー | POST /api/broadcast/count | - |
- ターゲティング - 対象者の絞り込み
- スケジューリング - Cron + Queue 処理
- Fizz RPC メソッド - 配信関連 RPC
- Cellar 一括配信テーブル - DB スキーマ