Мониторинг связи с НРД: участки Шлюз/НРД/M2M/Отправка, сквозная проверка справочником раз в 10 мин, история за сутки на «Статусе», цепочка в шапке (30 с), автоповтор недоставленных до 24 ч, баннер и статус «ожидает отправки» в кабинете клиента
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
|
||||
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/m2m"
|
||||
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/m2mcore"
|
||||
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/nsdadapter/igw"
|
||||
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/nsdxml"
|
||||
)
|
||||
|
||||
@@ -71,6 +72,8 @@ func lkStatusRu(s string) string {
|
||||
return "На проверке"
|
||||
case "ready":
|
||||
return "Проверена, отправляется в НРД"
|
||||
case "queued":
|
||||
return "Принята, ожидает отправки в НРД"
|
||||
case "sent":
|
||||
return "Отправлена в НРД"
|
||||
case "rejected":
|
||||
@@ -246,6 +249,16 @@ func (s *Service) CreateLKTransfer(ctx context.Context, rc *RuntimeConfig, u LKU
|
||||
sender = lkEmuSender
|
||||
}
|
||||
if _, err := s.SendBuiltRequestVia(ctx, sender, req, lkInvestorUUID(u.Contract), nil); err != nil {
|
||||
var nd *igw.NotDeliveredError
|
||||
if errors.As(err, &nd) {
|
||||
// НРД сейчас не принимает пакеты: заявка сохранена и уйдёт сама, когда связь восстановится
|
||||
// (nsdhealth.go, автоповтор) — клиенту это не ошибка.
|
||||
_ = lkMarkStatus(ctx, rc, id, "queued")
|
||||
return LKTransferResult{
|
||||
OK: true, RequestID: id, GUID: string(req.Header.GUID), Status: "queued",
|
||||
Message: "Заявка принята. Обмен с НРД сейчас временно недоступен — заявка будет отправлена автоматически, как только связь восстановится. Статус — в разделе «Мои заявки».",
|
||||
}, nil
|
||||
}
|
||||
_ = lkMarkStatus(ctx, rc, id, "error")
|
||||
return res, fmt.Errorf("заявка сохранена, но не отправлена: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user