Оповещения: группа «Администратор системы», блок «Кому писать» открыт; копии: адрес хранилища как в проводнике
Администратору (адрес из «Почты») — сбои (ИШ, связь с НРД, службы bj, DEPO) и обновления (новый выпуск bj, ИШ, лицензия, сертификаты); отделам — переводы и поручения. Существующие установки: администратор получает всё, что получал. Новые оповещения: «Доступно обновление bj» (раз на выпуск), «Служба … не работает / снова работает» (модули и служба ключей Валидаты). Резервные копии: \\сервер\папка или сервер + общая папка по полям → //сервер/папка; понятная причина отказа доступа. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -28,9 +28,9 @@ func dispatchAlert(rc *RuntimeConfig, title, body string) {
|
||||
cfg := rc.Snapshot()
|
||||
a := cfg.Alerts
|
||||
if a.SMTP.Enabled {
|
||||
// адрес алертов + группы по маршруту типа (сроки поручений / QUIK / системные)
|
||||
// администратор системы и отделы — по маршруту типа (сроки поручений / QUIK / сбои / обновления / прочие)
|
||||
s := a.SMTP
|
||||
s.To = mergeEmails(a.SMTP.To, cfg.Incoming.Recipients(alertKind(title)))
|
||||
s.To = notifyRecipients(cfg, alertKind(title))
|
||||
if strings.TrimSpace(s.To) != "" {
|
||||
if err := sendSMTP(s, "[bj] "+title, body); err != nil {
|
||||
log.Printf("lk-gateway: алерт SMTP не доставлен: %v", err)
|
||||
@@ -298,13 +298,29 @@ func readFull(conn net.Conn, buf []byte) (int, error) {
|
||||
return total, nil
|
||||
}
|
||||
|
||||
// alertKind — тип оповещения по заголовку (для маршрутизации по группам адресов).
|
||||
// alertKind — тип оповещения по заголовку (маршрут «какой тип кому» — в настройках уведомлений). Сбои и
|
||||
// обновления — администратору системы: падение ИШ или службы отделам ни к чему, им — переводы и поручения.
|
||||
func alertKind(title string) string {
|
||||
has := func(prefixes ...string) bool {
|
||||
for _, p := range prefixes {
|
||||
if strings.HasPrefix(title, p) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
switch {
|
||||
case strings.HasPrefix(title, "НРД: депо-поручение") || strings.HasPrefix(title, "НРД: истёк срок"):
|
||||
case has("НРД: депо-поручение", "НРД: истёк срок"):
|
||||
return "orders"
|
||||
case strings.Contains(title, "QUIK"):
|
||||
return "quik"
|
||||
case has("ИШ НРД", "Перезапуск ИШ НРД", "НРД не отвечает", "НРД всё ещё не отвечает", "НРД снова на связи",
|
||||
"Проверка связи с НРД", "Сбой компонента", "Компонент не отвечает", "Служба ", "DEPO: bj не может",
|
||||
"DEPO: вход логином", "DEPO: обработчик", "Резервная копия"):
|
||||
return "infra"
|
||||
case has("Доступно обновление", "ИШ обновлён", "ИШ не обновлён", "Лицензия", "Поддержка bj", "Модуль «",
|
||||
"Сертификат", "Версия внешней системы"):
|
||||
return "updates"
|
||||
}
|
||||
return "system"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user