チャットNG管理
チャットNG は連絡先に対するメッセージ送受信の制限機能です。3種類のNG タイプがあり、それぞれ制限範囲が異なります。
NG タイプ
Section titled “NG タイプ”| NGタイプ | 設定者 | 制限範囲 | 用途 |
|---|---|---|---|
SHOP_NG | 店舗スタッフ | 双方向ブロック | 迷惑行為への対応 |
USER_NG | システム管理者 | 顧客→店舗の送信ブロック | 運営判断による制限 |
NO_PURELOVERS_USER | システム自動 | 双方向ブロック | purelovers 未連携 |
制限マトリクス
Section titled “制限マトリクス”| 方向 | SHOP_NG | USER_NG | NO_PURELOVERS_USER |
|---|---|---|---|
| 店舗 → 顧客 | x | o | x |
| 顧客 → 店舗 | x | x | x |
チャットNG の設定
Section titled “チャットNG の設定”NG ステータスの変更は全て contact_chat_ng_history テーブルに記録されます。
| フィールド | 説明 |
|---|---|
contactId | 対象連絡先 |
shopId | 店舗 ID |
ngType | NG タイプ |
isActive | 有効/無効 |
reason | 変更理由 |
changedBy | 変更者 |
changedAt | 変更日時 |
Vintage RPC: getContactChatNgHistory({ id, shopId })→ { history: ChatNgHistory[] }NO_PURELOVERS_USER
Section titled “NO_PURELOVERS_USER”purelovers と連携していない連絡先を作成した場合、NO_PURELOVERS_USER が自動的に設定されます。
purelovers 連携が後から行われた場合は、手動で NG を解除する必要があります。
チャット送信時のチェック
Section titled “チャット送信時のチェック”メッセージ送信時に、Fizz サービスがチャットNG を確認します。
// Fizz のメッセージ送信処理内const chatNgStatuses = await db.query.contactChatNg.findMany({ where: { contactId: contact.id, shopId: room.shopId, isActive: true }});
for (const ng of chatNgStatuses) { if (ng.ngType === 'SHOP_NG') { // 双方向ブロック return error(403, 'チャットNG: 店舗NG'); } if (ng.ngType === 'USER_NG' && senderType === 'customer') { // 顧客→店舗のみブロック return error(403, 'チャットNG: ユーザーNG'); } if (ng.ngType === 'NO_PURELOVERS_USER') { // 双方向ブロック return error(403, 'チャットNG: purelovers未連携'); }}一括配信での除外
Section titled “一括配信での除外”チャットNG が設定されている連絡先は、一括配信のターゲットからも自動的に除外されます。
-- システムフィルタとして常に適用SELECT DISTINCT contactIdFROM contact_chat_ngWHERE isActive = true AND ngType IN ('SHOP_NG', 'USER_NG', 'NO_PURELOVERS_USER')
-- 対象から除外WHERE id NOT IN (chatNgContactIds)詳細は ターゲティング を参照してください。
UI での表示
Section titled “UI での表示”チャットルーム一覧
Section titled “チャットルーム一覧”NG が設定されたルームは isBlocked: true フラグで表示されます。
チャットタブがロックアイコンで表示され、メッセージ入力が無効化されます。
[プロフィール] [🔒 チャット]NG 管理画面
Section titled “NG 管理画面”連絡先詳細からNG の有効/無効を切り替え、理由を入力できます。変更履歴も閲覧可能です。
- 連絡先管理 概要 - 連絡先 CRUD
- メッセージ - NG チェックの実装
- ターゲティング - 配信からの除外
- Vintage RPC メソッド - チャットNG RPC
- Cellar 連絡先テーブル - chat_ng テーブル