H-337: fix Web Channel availability and realtime delivery (#60)

* H-337: fix Web Channel availability and realtime delivery

* fix(widget): preserve realtime sender and activity contracts

* fix(widget): keep realtime sender payloads consistent

* fix(widget): make public message persistence atomic

* fix(inbox): keep availability projection out of schema

---------

Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
Rogee
2026-08-20 14:30:05 +08:00
committed by GitHub
co-authored by rogee
parent 55b56ee172
commit 3d9817c9f5
17 changed files with 769 additions and 247 deletions
+6 -5
View File
@@ -4,13 +4,14 @@ package model
// Reference: Chatwoot InboxMember model + P2B M2 spec
type InboxMember struct {
Base
InboxID uint `gorm:"column:inbox_id;not null;index" json:"inbox_id"`
UserID uint `gorm:"column:user_id;not null;index" json:"user_id"`
Role string `gorm:"column:role;size:50;default:agent" json:"role"` // agent, supervisor
AvailabilityStatus string `gorm:"column:availability_status;size:50;default:offline" json:"availability_status"` // online, offline, busy
InboxID uint `gorm:"column:inbox_id;not null;index" json:"inbox_id"`
UserID uint `gorm:"column:user_id;not null;index" json:"user_id"`
Role string `gorm:"column:role;size:50;default:agent" json:"role"` // agent, supervisor
AvailabilityStatus string `gorm:"column:availability_status;size:50;default:offline" json:"availability_status"` // online, offline, busy
AccountAvailability string `gorm:"-" json:"-"`
Inbox Inbox `gorm:"foreignKey:InboxID" json:"inbox,omitempty"`
User User `gorm:"foreignKey:UserID" json:"user,omitempty"`
}
func (InboxMember) TableName() string { return "inbox_members" }
func (InboxMember) TableName() string { return "inbox_members" }