From fc067a3437286ca4c00cb72a09667ccd38af02e5 Mon Sep 17 00:00:00 2001 From: fontvielle Date: Tue, 13 Oct 2026 12:14:19 +0300 Subject: [PATCH] =?UTF-8?q?DEPO:=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20HANDBOOK=20=D0=B2=20FTV=5FM2M=5FEVENTS=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=81=D0=BB=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После полной перезаписи FTV_M2M_HANDBOOK (при получении нового справочника от НРД и при периодической перезаписи раз в 6 ч) bj вставляет в FTV_M2M_EVENTS строку-сигнал (EVENT_TYPE=HANDBOOK, EVENT_DATE=GETDATE()) — в той же транзакции, что и перезапись. По ней джоба bj2depo узнаёт, что справочник обновился, и может перечитать его. QEv10. Co-Authored-By: Claude Opus 4.8 --- internal/lkgateway/depoevents.go | 8 +++++++- internal/lkgateway/fsql/depoevents_q.go | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/lkgateway/depoevents.go b/internal/lkgateway/depoevents.go index 0d42a79..d965fec 100644 --- a/internal/lkgateway/depoevents.go +++ b/internal/lkgateway/depoevents.go @@ -626,11 +626,17 @@ func depoWriteHandbookCtx(pctx context.Context, rc *RuntimeConfig) error { } n++ } + // Сигнал Fancy, что справочник обновился: событие HANDBOOK в FTV_M2M_EVENTS (в той же + // транзакции, что и перезапись таблицы) — по нему джоба bj2depo может перечитать справочник. + if _, err := tx.ExecContext(ctx, fsql.QEv10); err != nil { + tx.Rollback() + return err + } if err := tx.Commit(); err != nil { return err } depoHandbookWritten = time.Now() - log.Printf("depo-events: справочник участников записан в FTV_M2M_HANDBOOK: %d строк", n) + log.Printf("depo-events: справочник участников записан в FTV_M2M_HANDBOOK: %d строк + событие HANDBOOK", n) return nil } diff --git a/internal/lkgateway/fsql/depoevents_q.go b/internal/lkgateway/fsql/depoevents_q.go index 9b6d509..03c458d 100644 --- a/internal/lkgateway/fsql/depoevents_q.go +++ b/internal/lkgateway/fsql/depoevents_q.go @@ -18,3 +18,8 @@ var QEv08 = "SELECT ISNULL(STATE,'') FROM dbo.FTV_M2M_EVENTS WHERE GUID=@g" // QEv09 — REFERENCE строк перевода (все или по ISIN) var QEv09 = "SELECT REFERENCE FROM dbo.FTV_M2M_LINES WHERE GUID=@g AND (@i = '' OR UPPER(ISIN)=@i) ORDER BY ID" + +// QEv10 — сигнальное событие «справочник участников обновлён»: пишется после полной перезаписи +// FTV_M2M_HANDBOOK (в той же транзакции), без GUID/REFERENCE. По нему джоба bj2depo узнаёт, что +// справочник обновился от НРД, и может перезагрузить его в своих структурах. +var QEv10 = "INSERT INTO dbo.FTV_M2M_EVENTS (EVENT_TYPE, EVENT_DATE) VALUES ('HANDBOOK', GETDATE())"