package api import ( "context" "log/slog" "time" "dana/internal/notify" ) // WithNotifier подключает уведомления о заявках. Без него заявки просто сохраняются. func (a *API) WithNotifier(n notify.Notifier) *API { a.notifier = n return a } // notifyLead отправляет уведомление в фоне: посетитель не ждёт почтовый сервер, // а сбой отправки не отменяет уже сохранённую заявку — она видна в админке. func (a *API) notifyLead(id int64) { if a.notifier == nil { return } go func() { ctx, cancel := context.WithTimeout(context.Background(), 45*time.Second) defer cancel() notice, err := a.store.LeadNotice(ctx, id) if err != nil { slog.Error("lead notice", "lead_id", id, "err", err) return } if err := a.notifier.LeadCreated(ctx, notice); err != nil { slog.Error("notify lead", "lead_id", id, "err", err) return } slog.Info("lead notification sent", "lead_id", id) }() }