Files
agentic-coding-workflow/internal/infra/notify/dummy.go
T

33 lines
1.1 KiB
Go

package notify
import (
"context"
"log/slog"
)
// DummyNotifier 仅用于本地与测试环境,将通知以结构化日志形式打印,不做任何
// 真实外发。生产环境如未配置真实 Notifier,可注册此实现作为兜底,避免投递
// 流程因缺少 channel 而中断。
type DummyNotifier struct {
log *slog.Logger
}
// NewDummyNotifier 用调用方提供的 logger 构造 DummyNotifier。logger 为 nil 时
// 调用 Send 会 panic,这是显式契约——上层负责传入有效 logger。
func NewDummyNotifier(log *slog.Logger) *DummyNotifier { return &DummyNotifier{log: log} }
// Name 返回 ChannelDummy,标识该 Notifier 的通道身份。
func (d *DummyNotifier) Name() Channel { return ChannelDummy }
// Send 将消息以 Info 级别结构化日志输出。ctx 在 dummy 实现中不消费,
// 真实通道(email/webhook/IM)应尊重 ctx 的取消与超时。
func (d *DummyNotifier) Send(_ context.Context, msg Message) error {
d.log.Info("notify[dummy]",
"topic", msg.Topic,
"severity", string(msg.Severity),
"user_id", msg.UserID.String(),
"title", msg.Title,
)
return nil
}