package constants // 套餐真流量达量预警的通知投递结果常量。 // // 该结果不落库为独立列,而是由「预警行的可靠通知事件 + tb_outbox_event 状态 + tb_notification 事实」 // 交叉推导,因此枚举值一旦发布不得调整含义。1~4 表示已写入通知事件后的四种结果, // 5 表示触发时店铺没有有效业务员,预警只保存事实不产生通知,也不在未来补发。 const ( // PackageTrafficAlertNotifyNotified 表示通知事件已生成站内通知,接收人可读。 PackageTrafficAlertNotifyNotified = 1 // PackageTrafficAlertNotifyPending 表示通知事件已写入但尚未完成投递。 PackageTrafficAlertNotifyPending = 2 // PackageTrafficAlertNotifyFailed 表示通知事件投递达到最终失败或等待人工重放。 PackageTrafficAlertNotifyFailed = 3 // PackageTrafficAlertNotifyRecipientGone 表示事件已投递但接收人已失效,未生成站内通知。 PackageTrafficAlertNotifyRecipientGone = 4 // PackageTrafficAlertNotifyNoBusinessOwner 表示触发时店铺无有效业务员,只保存预警。 PackageTrafficAlertNotifyNoBusinessOwner = 5 ) // GetPackageTrafficAlertNotifyStatusName 返回通知投递结果的中文名称。 func GetPackageTrafficAlertNotifyStatusName(status int) string { switch status { case PackageTrafficAlertNotifyNotified: return "已通知" case PackageTrafficAlertNotifyPending: return "待投递" case PackageTrafficAlertNotifyFailed: return "投递失败" case PackageTrafficAlertNotifyRecipientGone: return "未通知(接收人已失效)" case PackageTrafficAlertNotifyNoBusinessOwner: return "未通知(无有效业务员)" default: return "未知" } } // IsValidPackageTrafficAlertNotifyStatus 判断通知投递结果枚举是否受支持。 func IsValidPackageTrafficAlertNotifyStatus(status int) bool { switch status { case PackageTrafficAlertNotifyNotified, PackageTrafficAlertNotifyPending, PackageTrafficAlertNotifyFailed, PackageTrafficAlertNotifyRecipientGone, PackageTrafficAlertNotifyNoBusinessOwner: return true default: return false } } // ResolvePackageTrafficAlertNotifyStatus 由通知事件、Outbox 状态与站内通知事实推导投递结果。 // 判断顺序必须与读侧列表、详情与导出保持完全一致,因此该口径只在此处实现一次。 // - hasEvent=false:触发时无有效业务员,只保存预警; // - hasNotification=true:通知已生成,接收人可读; // - Outbox 为最终失败/已投递但无通知/其余未终结状态,分别对应失败、接收人已失效与待投递。 func ResolvePackageTrafficAlertNotifyStatus(hasEvent bool, outboxStatus *int, hasNotification bool) int { if !hasEvent { return PackageTrafficAlertNotifyNoBusinessOwner } if hasNotification { return PackageTrafficAlertNotifyNotified } if outboxStatus == nil { return PackageTrafficAlertNotifyPending } switch *outboxStatus { case OutboxStatusFailed: return PackageTrafficAlertNotifyFailed case OutboxStatusDelivered: // 事件已投递却没有生成通知:接收人在投递期已失效;本能力不允许改投他人。 return PackageTrafficAlertNotifyRecipientGone default: return PackageTrafficAlertNotifyPending } } // PackageTrafficAlertRuleMaxRemarkLength 是预警规则备注的最大长度。 const PackageTrafficAlertRuleMaxRemarkLength = 500 // PackageTrafficAlertScanAggregateType 与 Outbox 事件的聚合类型,标识事件由达量扫描产生。 const PackageTrafficAlertScanAggregateType = "package_traffic_alert" // PackageTrafficAlertEventIDPrefix 是可靠通知事件ID前缀:pta::<阈值万分比>。 const PackageTrafficAlertEventIDPrefix = "pta"