Опрос ЛК ЕСИА Финанс раз в 10 секунд (было раз в минуту), повтор одной ошибки в журнале — не чаще раза в 5 мин

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-09-29 13:13:24 +03:00
parent 91d8584a9c
commit 7de9e3c65b
2 changed files with 16 additions and 7 deletions
+2 -2
View File
@@ -20,8 +20,8 @@
"version": "2026.09.25.14" "version": "2026.09.25.14"
}, },
"bj-server": { "bj-server": {
"fingerprint": "6731e7a62cf3261a5ec9ef4183cc75bb2b540dd08258def173bf685b8f347ebb", "fingerprint": "16dfbfc7331a989f6344379136d8900a5ded00eb1dd9fa29af36980b1ed3f3b2",
"version": "2026.09.25.32" "version": "2026.09.29.2"
}, },
"crypto-service.jar": { "crypto-service.jar": {
"fingerprint": "2c4fd536bc9b1c20c69a70e8dcd374a61847b263aeb2e474c45debb01fbd8233", "fingerprint": "2c4fd536bc9b1c20c69a70e8dcd374a61847b263aeb2e474c45debb01fbd8233",
+14 -5
View File
@@ -257,11 +257,13 @@ type LKPullResult struct {
Errors []string Errors []string
} }
// pollLKClaims — фоновый опрос ЛК ЕСИА Финанс раз в минуту. Время ответов в // pollLKClaims — фоновый опрос ЛК ЕСИА Финанс раз в 10 секунд: подписанная клиентом заявка
// сервисе регламентировано, поэтому чаще опрашивать смысла нет. Ничего не // уходит в работу почти сразу (29.09.2026: минута — долго). Ничего не делает, если активное
// делает, если активное окружение ЛК не настроено (адрес/логин пустые). // окружение ЛК не настроено (адрес/логин пустые). Одинаковая ошибка пишется в журнал не чаще раза в 5 мин.
func (s *Server) pollLKClaims(ctx context.Context) { func (s *Server) pollLKClaims(ctx context.Context) {
const interval = time.Minute const interval = 10 * time.Second
var lastErr string
var lastErrAt time.Time
ticker := time.NewTicker(interval) ticker := time.NewTicker(interval)
defer ticker.Stop() defer ticker.Stop()
log.Printf("lk-gateway: поллер заявок ЛК ЕСИА Финанс запущен (интервал %s)", interval) log.Printf("lk-gateway: поллер заявок ЛК ЕСИА Финанс запущен (интервал %s)", interval)
@@ -281,9 +283,16 @@ func (s *Server) pollLKClaims(ctx context.Context) {
res, err := PullLKClaims(cctx, s.rc, s.svc) res, err := PullLKClaims(cctx, s.rc, s.svc)
cancel() cancel()
if err != nil { if err != nil {
log.Printf("lk-gateway: поллер ЛК: %v", err) if err.Error() != lastErr || time.Since(lastErrAt) > 5*time.Minute {
log.Printf("lk-gateway: поллер ЛК: %v", err)
lastErr, lastErrAt = err.Error(), time.Now()
}
continue continue
} }
if lastErr != "" {
log.Printf("lk-gateway: поллер ЛК: связь с ЛК восстановлена")
lastErr = ""
}
if res.Fetched > 0 || len(res.Errors) > 0 { if res.Fetched > 0 || len(res.Errors) > 0 {
log.Printf("lk-gateway: поллер ЛК: получено %d, отправлено %d, отклонено %d, ошибок %d (имитация НРД: %v)", log.Printf("lk-gateway: поллер ЛК: получено %d, отправлено %d, отклонено %d, ошибок %d (имитация НРД: %v)",
res.Fetched, res.Sent, res.Rejected, len(res.Errors), res.Emulated) res.Fetched, res.Sent, res.Rejected, len(res.Errors), res.Emulated)