Первичная настройка, повторная проверка: копии без ключевых носителей СКЗИ (--one-file-system, без keymedia), без отпечатка железа и списка компонентов; восстановление на новый сервер — пароль базы bj из копии, база и пользователь ИШ; ключ для контура без канала запоминается и подключается при настройке канала; первый настроенный канал становится рабочим контуром; справочник сертификатов перечитывается после ключа и смены контура; шлюз НРД — шаг 7, ключ — шаг 8 (ключ ставится в профиль ИШ); подсказка контура ключа по сертификату; ИШ: параметры работающего шлюза не перезаписываются; без чужого кода отправителя и получателя по умолчанию; прокси для выхода в интернет; установка с образа без интернета; HTTPS — новый сертификат при смене адреса; bj-network — без cloud-init; проверка готовности: справочник участников, сетевые доступы, учётные записи, последний обмен с НРД
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -82,12 +82,19 @@ func (s *Service) CreateClaim(ctx context.Context, in CreateClaimRequest) (Creat
|
||||
// ReferenceID, реквизиты) БЕЗ отправки и без создания заявки. Нужно, чтобы
|
||||
// сначала положить запрос в БД Fancy на проверку, а отправить позже.
|
||||
func (s *Service) BuildRequest(ctx context.Context, in CreateClaimRequest) (*m2m.M2MTransferRequest, error) {
|
||||
if s.defaultSender == "" {
|
||||
return nil, errors.New("организация не задана: укажите код участника НРД (мастер настройки, шаг «Организация») — без него перевод не сформировать")
|
||||
}
|
||||
in = withNSDSecCodes(in)
|
||||
domainClaim, err := dtoToClaim(in)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
||||
}
|
||||
receiver := s.receiverFor(in)
|
||||
if in.ReceiverCodeOverride == "" && handbookCodeByINN(in.ReceivingDepositoryINN) == "" && handbookLoaded() && !devMode(globalRC) {
|
||||
// запасной код получателя из настроек — чужой участник: НРД отклонит перевод (M2M15). Лучше сказать сразу.
|
||||
return nil, fmt.Errorf("%w: ИНН %s", errReceiverUnknown, in.ReceivingDepositoryINN)
|
||||
}
|
||||
req, err := m2mcore.EnrichRequest(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
||||
SenderCode: s.defaultSender,
|
||||
ReceiverCode: receiver,
|
||||
@@ -98,6 +105,15 @@ func (s *Service) BuildRequest(ctx context.Context, in CreateClaimRequest) (*m2m
|
||||
return req, nil
|
||||
}
|
||||
|
||||
// errReceiverUnknown — депозитария получателя нет в справочнике участников M2M НРД.
|
||||
var errReceiverUnknown = errors.New("депозитарий получателя не найден в справочнике участников M2M НРД")
|
||||
|
||||
// handbookLoaded — справочник участников M2M получен (без него получателя не определить ни для кого).
|
||||
func handbookLoaded() bool {
|
||||
raw, err := readHandbook()
|
||||
return err == nil && len(raw) > 200
|
||||
}
|
||||
|
||||
// receiverFor — код получателя (зачисляющего депозитария) в заголовке запроса: явный (робот НРД,
|
||||
// тест-кейсы) → по ИНН зачисляющего депозитария из справочника участников M2M → из настроек.
|
||||
// Без справочника заявки ЛК уходили с кодом из настроек, и НРД отвечал M2M15 (29.09.2026).
|
||||
|
||||
Reference in New Issue
Block a user