Ana içeriğe geç

inbox

inbox, sistem, cihaz alarmı ve kullanıcı mesajlarını tek bir ileti kutusu modeli altında toplayan tablodur. Kullanıcıya doğrudan gönderilen mesajlar ile cihaz bağlamlı bildirimler aynı veri yapısı üzerinden taşınır.

Bu tablo, push bildirimi üretimi, konuşma zinciri (conversation_id) ve mesaj yanıt ilişkisinin (reply_to_id) tek yerde tutulmasını sağlar.

Kritik Kural

receiver_id ve device_id alanları için XOR kuralı geçerlidir: tam olarak biri dolu olmalıdır. Yani kayıt ya kullanıcı hedeflidir ya da cihaz hedeflidir; ikisi birden aynı anda dolu olmamalıdır.

Yapilacaklar (Soft Delete ve Audit)

  • is_deleted ve delete_time alanlari ile mesaj silme davranisi soft-delete standardina tasindi.
  • created_by ve updated_by actor alanlari eklendi; sistem mesajlari icin 0 standardi tanimlandi.
  • create_time ve update_time yasam dongusu alanlari olarak korundu.
  • Mesaj guncelleme/silme islemlerini audit log tablosuna append-only yaz.
  • update_time icin DB trigger zorunlulugu ekle.

FK Davranis Notlari

FKON DELETEON UPDATENot
inbox.sender_id -> users.idSET NULLCASCADEGonderen silinse de mesaj gecmisi korunur.
inbox.receiver_id -> users.idSET NULLCASCADEAlici silinse de mesaj gecmisi korunur.
inbox.device_id -> devices.idSET NULLCASCADECihaz hedefi silinse de mesaj gecmisi korunur.
Bu tabloyu referanslayan FKON DELETEON UPDATENot
message_read_state.message_id -> inbox.idCASCADECASCADEMesaj silinince kullanici okuma durumlari birlikte temizlenir.
rule_events.message_id -> inbox.idSET NULLCASCADEOlay gecmisi korunur, mesaj referansi opsiyonel kalir.

Kolonlar

KolonTipNullAnlamı
idbiginthayırMesaj birincil anahtarı
typevarchar(30)hayırMesaj tipi
sender_idintevetGönderen kullanıcı; users.id
receiver_idintevetAlıcı kullanıcı; users.id
device_idvarchar(21)evetHedef cihaz; devices.id
titletexthayırMesaj başlığı
messagetexthayırMesaj içeriği
tagsjsonevetEtiket/kategori bilgileri
reply_to_idbigintevetYanıtlanan mesaj; inbox.id
conversation_idbigintevetKonuşma zinciri kimliği
payloadjsonevetPush template veya ek yük bilgileri
push_statebooleanhayırPush bildirimi gönderildi mi (DEFAULT: false)
push_sent_attimestampevetPush gönderim zamanı
is_deletedbooleanhayırSoft delete bayrağı (DEFAULT: false)
delete_timetimestampevetSoft delete zamanı
created_byinthayırKaydı oluşturan actor; users.id
updated_byinthayırKaydı güncelleyen actor; users.id
create_timetimestamphayırKayıt oluşturulma zamanı
update_timetimestamphayırSon güncelleme zamanı

İndeksler

İndeksTipAçıklama
idPrimary KeyTablo birincil anahtarı

Örnek Kayıtlar

{
"id": 1,
"type": "system",
"sender_id": null,
"receiver_id": 1,
"device_id": null,
"title": "Hoş Geldiniz",
"message": "Uygulamaya başarıyla giriş yaptınız.",
"tags": {"category":"welcome"},
"reply_to_id": null,
"conversation_id": null,
"payload": {"push_template":{"code":"WELCOME","version":1,"locale":"tr"}},
"push_state": true,
"push_sent_at": "2026-04-03 09:00:05",
"is_deleted": false,
"delete_time": null,
"created_by": 0,
"updated_by": 0,
"create_time": "2026-04-03 09:00:00",
"update_time": "2026-04-03 09:00:05"
}

Özet: Kullanıcı 1'e gönderilmiş sistem kaynaklı hoş geldiniz mesajı.