Files
Bridge-and-Join-s/internal/nsdadapter/router.go
T
fontvielle af60277411 Анкета участника M2M: отправка в НРД через ИШ пакетом #M2MPF
НРД открыл приём анкеты (M2MTransferParticipantForm) в пром-контуре.
По формату НРД анкета — отдельный тип ЭД M2MPF: тег <package> = "#" +
первые 5 символов имени типа ЭД → "#M2MPF", businessLine=MOST (как и
остальные M2M-сообщения; на ИШ <107.0.0.904 businessLine опускается).
Подпись — боевым ГОСТ-контейнером на стороне ИШ.

- nsdadapter/router.go: тип PackageM2MParticipantForm "#M2MPF";
  KindParticipantForm теперь маппится на него (был ошибочно
  Assets_investment).
- lkgateway/participant_form.go: действие send_igw — упаковка анкеты
  через igw.PackXML(..., "#M2MPF") и отправка igwClient.SendPackage в
  канал профиля (в боевом контуре — prod-gost). Кнопка «Отправить через
  шлюз (боевой ИШ)»; письмо на M2MOST@nsd.ru оставлено запасным каналом.
  Статус готовности ИШ на странице.
- lkgateway/server.go: проброс igwClient/igwChannel в registerParticipantForm.

Образец — sendHandbookRequest (#M2MHR) через тот же ИШ.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XG3zNMMf2LMoDpXo22mwMX
2026-10-16 13:07:40 +03:00

60 lines
2.1 KiB
Go

package nsdadapter
import "fmt"
// PackageType — тип пакета ЭДО НРД. Используется при отправке через ИШ.
type PackageType string
// Известные типы пакетов M2M и связанных сервисных сообщений.
const (
PackageM2MTransferRequest PackageType = "#M2MTR"
PackageM2MTransferDecision PackageType = "#M2MTD"
PackageM2MTransferError PackageType = "#M2MER"
PackageM2MParticipantForm PackageType = "#M2MPF"
PackageSUBBR PackageType = "SUBBR"
PackageSUBER PackageType = "SUBER"
PackageSUB16 PackageType = "SUB16"
PackageAssetsInvestment PackageType = "Assets_investment"
)
// MessageKind — внутренний классификатор доменного M2M-сообщения,
// который мы хотим отправить в НРД.
type MessageKind string
const (
KindTransferRequest MessageKind = "transfer_request"
KindTransferDecision MessageKind = "transfer_decision"
KindTransferResponse MessageKind = "transfer_response"
KindHandbookRequest MessageKind = "handbook_request"
KindParticipantForm MessageKind = "participant_form"
)
// RouteToPackageType подбирает PackageType ЭДО для нашего MessageKind.
func RouteToPackageType(kind MessageKind) (PackageType, error) {
switch kind {
case KindTransferRequest:
return PackageM2MTransferRequest, nil
case KindTransferDecision:
return PackageM2MTransferDecision, nil
case KindTransferResponse:
return PackageM2MTransferError, nil
case KindHandbookRequest:
return PackageAssetsInvestment, nil
case KindParticipantForm:
return PackageM2MParticipantForm, nil
}
return "", fmt.Errorf("nsdadapter: не задан PackageType для kind=%q", kind)
}
// IncomingPackageKinds — типы входящих пакетов, которые нужно опрашивать
// и обрабатывать на нашей стороне.
func IncomingPackageKinds() []PackageType {
return []PackageType{
PackageM2MTransferDecision,
PackageM2MTransferError,
PackageSUBBR,
PackageSUBER,
PackageSUB16,
}
}