Анкета участника: ответ НРД принимается автоматически — квитанция и ответ сервиса
Квитанции ЭДО НРД (пакеты C, «Уведомление о получении Пакетов…») разбираются: для нашей анкеты (#M2MPF…) — отметка «доставлена в НРД» с временем, ошибка первичной обработки — отказ с текстом квитанции. Ответ сервиса: INFO — «принята в обработку», OK — принята, ERROR — отказ с кодом; документ-ответ M2MTransferParticipantForm — регистрация подтверждена. Всё видно в строке «Исходящих», на странице анкеты и в плашке раздела НРД. После запуска bj перечитывает квитанции за день отправки, если отметки ещё нет (22.10 на 9 квитанция пришла раньше). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -75,6 +75,7 @@ func (s *Server) pollIncoming(ctx context.Context) {
|
||||
saveProcessed(processed)
|
||||
}
|
||||
log.Printf("lk-gateway: поллер входящих ИШ запущен (канал %s, интервал %s, обработанных в памяти %d)", s.igwChannel, interval, len(processed))
|
||||
go s.participantReceiptBackfill(ctx)
|
||||
|
||||
for {
|
||||
select {
|
||||
@@ -146,7 +147,13 @@ func (s *Server) applyIncoming(ctx context.Context, p igw.Package) error {
|
||||
unpacked, err := igw.UnpackPackage(zipBytes)
|
||||
if err != nil {
|
||||
// Нет основного .xml — служебный пакет (квитанция/конверт ЭДО).
|
||||
// Не ошибка: помечаем обработанным, чтобы не повторять.
|
||||
// Не ошибка: помечаем обработанным, чтобы не повторять. Квитанция о получении нашей анкеты —
|
||||
// отметка «доставлена в НРД» (nsdreceipt.go).
|
||||
if r, ok := parseNSDReceipt(zipBytes); ok {
|
||||
if applyNSDReceipt(r) {
|
||||
log.Printf("lk-gateway: поллер квитанция id=%d: анкета %s получена НРД %s, без ошибок=%v %s", p.ID, r.Package, r.ReceivedAt.Format("02.01 15:04:05"), r.OK, r.Text)
|
||||
}
|
||||
}
|
||||
log.Printf("lk-gateway: поллер пакет id=%d (%s) — служебный (квитанция/конверт), пропуск", p.ID, p.Type)
|
||||
return nil
|
||||
}
|
||||
@@ -279,6 +286,7 @@ func (s *Server) applyIncoming(ctx context.Context, p igw.Package) error {
|
||||
// Схему ответа фиксируем на боевом контуре — сохраняем подлинный XML, чтобы
|
||||
// затем встроить разбор в систему (для всех клиентов).
|
||||
path, root := captureNSDReply(p, unpacked.DocXML, "participant-form")
|
||||
recordParticipantFormReply(path)
|
||||
log.Printf("lk-gateway: поллер ОТВЕТ НРД на анкету участника id=%d (%s): корень <%s>, сохранён %s", p.ID, p.Type, root, path)
|
||||
return nil
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user