Проверка связи M2M (запрос справочника) — раз в час вместо 10 мин, плюс кнопка

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-22 15:16:26 +03:00
parent 52fb43e02f
commit cfc97787d0
4 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -4,7 +4,7 @@ package lkgateway
// пути, у каждого своё доказательство работы: // пути, у каждого своё доказательство работы:
// - Шлюз: ИШ отвечает bj (igwwatch.go); // - Шлюз: ИШ отвечает bj (igwwatch.go);
// - НРД: шлюз успешно опрашивает НРД — по журналу ИШ (nsdlinkwatch.go); // - НРД: шлюз успешно опрашивает НРД — по журналу ИШ (nsdlinkwatch.go);
// - M2M: сквозная проверка — раз в 10 минут bj запрашивает у НРД справочник участников (#M2MHR) // - M2M: сквозная проверка — раз в час и по кнопке «Проверить связь сейчас» bj запрашивает у НРД справочник участников (#M2MHR)
// и ждёт ответ #M2MTH: он проходит весь путь до сервиса M2M и обратно; // и ждёт ответ #M2MTH: он проходит весь путь до сервиса M2M и обратно;
// - Отправка: подтверждение доставки каждого пакета (igw.WithDeliveryHook) и недоставленные переводы. // - Отправка: подтверждение доставки каждого пакета (igw.WithDeliveryHook) и недоставленные переводы.
// Отсутствие ошибок само по себе не считается «работает»: нет свежего подтверждения — жёлтый. // Отсутствие ошибок само по себе не считается «работает»: нет свежего подтверждения — жёлтый.
@@ -27,7 +27,7 @@ import (
) )
const ( const (
nsdProbeEvery = 10 * time.Minute nsdProbeEvery = time.Hour // 22.10.2026: было 10 мин — лишняя нагрузка на НРД; живость между проверками видна по журналу ИШ
nsdProbeWarnAfter = 3 * time.Minute // ответа на проверку нет 3 мин — жёлтый nsdProbeWarnAfter = 3 * time.Minute // ответа на проверку нет 3 мин — жёлтый
nsdProbeErrAfter = 10 * time.Minute // 10 мин — красный nsdProbeErrAfter = 10 * time.Minute // 10 мин — красный
nsdPollErrAfter = 3 * time.Minute // шлюз получает от НРД ошибки 3 мин — красный (до этого жёлтый) nsdPollErrAfter = 3 * time.Minute // шлюз получает от НРД ошибки 3 мин — красный (до этого жёлтый)
@@ -294,7 +294,7 @@ func (s *Server) sendNSDProbe(ctx context.Context) {
} }
} }
// nsdHealthLoop — проверка раз в 10 мин, история раз в минуту, автоповтор недоставленных. // nsdHealthLoop — проверка раз в час, история раз в минуту, автоповтор недоставленных.
func (s *Server) nsdHealthLoop(ctx context.Context) { func (s *Server) nsdHealthLoop(ctx context.Context) {
healthRegister("nsd-health", 3*time.Minute) healthRegister("nsd-health", 3*time.Minute)
nsdHistoryLoad() nsdHistoryLoad()
+1 -1
View File
@@ -332,7 +332,7 @@ type HandbookEntry struct {
} }
// saveHandbook раскладывает справочник в плоский список и пишет в файл. Возвращает, изменился ли // saveHandbook раскладывает справочник в плоский список и пишет в файл. Возвращает, изменился ли
// состав: справочник запрашивается раз в 10 минут (сквозная проверка связи, nsdhealth.go), и без // состав: справочник запрашивается раз в час (сквозная проверка связи, nsdhealth.go), и без
// изменений его не нужно ни рассылать, ни переписывать в DEPO. // изменений его не нужно ни рассылать, ни переписывать в DEPO.
func saveHandbook(hb *m2m.M2MTransferHandbook) (changed bool) { return saveHandbookEx(hb, true) } func saveHandbook(hb *m2m.M2MTransferHandbook) (changed bool) { return saveHandbookEx(hb, true) }
+1 -1
View File
@@ -340,7 +340,7 @@ func (s *Server) Run(ctx context.Context) error {
// Авто-обновление справочника участников M2M раз в сутки (только реальный // Авто-обновление справочника участников M2M раз в сутки (только реальный
// ИШ). Тик суточный — в heartbeat-монитор не регистрируем, только recover. // ИШ). Тик суточный — в heartbeat-монитор не регистрируем, только recover.
go superviseLoop(ctx, "nsd-health", s.rc, s.nsdHealthLoop) // связь с НРД: проверка раз в 10 мин (справочник), история, автоповтор go superviseLoop(ctx, "nsd-health", s.rc, s.nsdHealthLoop) // связь с НРД: проверка раз в час (справочник), история, автоповтор
// QUIK МНП: автоматический цикл M2M (регистрация до отправки — хук в // QUIK МНП: автоматический цикл M2M (регистрация до отправки — хук в
// SendBuiltRequest; подпись/снятие/зачисление по MS010 — опросчик). // SendBuiltRequest; подпись/снятие/зачисление по MS010 — опросчик).
@@ -13,7 +13,7 @@
<td><span class="nsd-dot {{.State}}"></span></td> <td><span class="nsd-dot {{.State}}"></span></td>
<td><strong>{{.Title}}</strong></td> <td><strong>{{.Title}}</strong></td>
<td>{{.Text}}{{with .Detail}}<br><code>{{.}}</code>{{end}}</td> <td>{{.Text}}{{with .Detail}}<br><code>{{.}}</code>{{end}}</td>
<td class="muted" style="font-size:12.5px">{{if eq .Key "igw"}}bj обращается к шлюзу каждые 30 с{{else if eq .Key "nsd"}}журнал шлюза: ответы НРД на опросы входящих{{else if eq .Key "m2m"}}раз в 10 мин запрос справочника участников M2M и ответ на него — весь путь до сервиса M2M и обратно{{else}}подтверждение доставки каждого отправленного пакета{{end}}</td> <td class="muted" style="font-size:12.5px">{{if eq .Key "igw"}}bj обращается к шлюзу каждые 30 с{{else if eq .Key "nsd"}}журнал шлюза: ответы НРД на опросы входящих{{else if eq .Key "m2m"}}раз в час (и по кнопке «Проверить связь сейчас») запрос справочника участников M2M и ответ на него — весь путь до сервиса M2M и обратно{{else}}подтверждение доставки каждого отправленного пакета{{end}}</td>
</tr>{{end}} </tr>{{end}}
</tbody> </tbody>
</table> </table>