Ручной ввод M2M: режим подмены личности как в ЛК-потоке
manualSend выбирал отправителя грубо: при любой включённой эмуляции (и imitate, и substitute) уходил на внутренний имитатор. Теперь логика как в lkemulate.go: imitate — имитатор (в НРД ничего); substitute — реальная отправка в НРД, клиент из списка RealNSDTest.Docs идёт с заменой блока инвестора на тест-инвестора (realTestPut для журнала «кто под кем»), остальные — с настоящими данными; off — реально с настоящими данными. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"regexp"
|
||||
"sort"
|
||||
@@ -569,9 +570,34 @@ func manualSend(ctx context.Context, rc *RuntimeConfig, svc *Service, o *ManualO
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("пакет не прошёл проверку формата НРД: %w", err)
|
||||
}
|
||||
// Выбор отправителя по режиму эмуляции НРД (как в ЛК-потоке, lkemulate.go):
|
||||
// imitate — внутренний имитатор, в НРД ничего не уходит;
|
||||
// substitute — реальная отправка в НРД; клиент из списка подмены идёт с заменой блока
|
||||
// инвестора на тест-инвестора, остальные — с настоящими данными;
|
||||
// off — реальная отправка в НРД с настоящими данными.
|
||||
sender := svc.sender
|
||||
if emu, _ := lkEmulateNSD(rc); emu && lkEmuSender != nil {
|
||||
sender = lkEmuSender
|
||||
switch nsdEmuMode(rc) {
|
||||
case "imitate":
|
||||
if lkEmuSender != nil {
|
||||
sender = lkEmuSender
|
||||
}
|
||||
case "substitute":
|
||||
inv := claim.Investor
|
||||
switch {
|
||||
case svc.sender == nil:
|
||||
// шлюз НРД не настроен — реально отправить нельзя, падаем на имитатор
|
||||
if lkEmuSender != nil {
|
||||
sender = lkEmuSender
|
||||
}
|
||||
case realTestMatch(rc, inv.Document.Series, inv.Document.Number):
|
||||
asInv, asText := realTestInvestor(rc, req.Data.InvestorInformation.IdentityDocument.DocumentType)
|
||||
realTestPut(RealTestRec{GUID: string(req.Header.GUID), At: time.Now(), As: asText,
|
||||
Client: strings.TrimSpace(fmt.Sprintf("%s %s %s, %s %s", inv.LastName, inv.FirstName, inv.MiddleName, inv.Document.Series, inv.Document.Number))})
|
||||
sender = substituteSender{real: svc.sender, inv: asInv}
|
||||
log.Printf("lk-gateway: ручной ввод %s: подмена личности — в НРД (%s) как %s", o.Number(), rc.Snapshot().NSD.Profile, asText)
|
||||
default:
|
||||
log.Printf("lk-gateway: ручной ввод %s: в НРД (%s) с настоящими данными (вне списка подмены)", o.Number(), rc.Snapshot().NSD.Profile)
|
||||
}
|
||||
}
|
||||
if o.QuikMode != "auto" {
|
||||
ctx = context.WithValue(ctx, manualQuikSkipKey{}, true)
|
||||
|
||||
Reference in New Issue
Block a user