a8cdeeb838
- internal/nsdadapter/igw/client.go: REST-клиент ИШ (SendPackage, GetStatus, ListIncoming) с base64-JSON, ретраями на 5xx, 4xx без ретраев - internal/nsdadapter/router.go: маршрутизация MessageKind -> PackageType ЭДО (#M2MTR, #M2MTD, #M2MER, SUBBR/SUBER/SUB16, Assets_investment) - internal/nsdadapter/sender.go: реализация m2mcore.NSDSender (Send/SendDecision) через REST ИШ, сериализация Request/Decision в windows-1251 - internal/nsdadapter/config.go: профили guest/test3/prod × gost/rsa (URL ИШ, канал, контейнер ключа, retry) - internal/nsdadapter/onyx/onyx.go: скелет резервного канала WS ONYX (ждёт PR-6 crypto-service для подписи) - cmd/nsd-adapter/main.go: HTTP /healthz + фоновый поллер входящих по типам ЭДО; idle-режим без BJ_NSD_PROFILE make ci зелёный. Без внешних Go-зависимостей. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
59 lines
2.1 KiB
Go
59 lines
2.1 KiB
Go
package nsdadapter
|
|
|
|
import "fmt"
|
|
|
|
// PackageType — тип пакета ЭДО НРД. Используется при отправке через ИШ.
|
|
type PackageType string
|
|
|
|
// Известные типы пакетов M2M и связанных сервисных сообщений.
|
|
const (
|
|
PackageM2MTransferRequest PackageType = "#M2MTR"
|
|
PackageM2MTransferDecision PackageType = "#M2MTD"
|
|
PackageM2MTransferError PackageType = "#M2MER"
|
|
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 PackageAssetsInvestment, nil
|
|
}
|
|
return "", fmt.Errorf("nsdadapter: не задан PackageType для kind=%q", kind)
|
|
}
|
|
|
|
// IncomingPackageKinds — типы входящих пакетов, которые нужно опрашивать
|
|
// и обрабатывать на нашей стороне.
|
|
func IncomingPackageKinds() []PackageType {
|
|
return []PackageType{
|
|
PackageM2MTransferDecision,
|
|
PackageM2MTransferError,
|
|
PackageSUBBR,
|
|
PackageSUBER,
|
|
PackageSUB16,
|
|
}
|
|
}
|