Анкета участника: ловить ответ НРД (M2MER с нулевым GUID) и показывать отправку/ответ
Ответ НРД на анкету приходит как M2MTransferResponse (M2MER) с нулевым GUID — раньше он уходил в обработку перевода, «сделка не найдена», и отбрасывался. Теперь нулевой GUID распознаётся как ответ на регистрацию участника: - сырой XML сохраняется (captureNSDReply → nsd-replies); - отправка анкеты и ответ НРД пишутся в participant-reg.json (время, пакет, наименование, статус, коды, текст НРД); - на странице «Регистрация участника M2M» показываем: когда отправили и вердикт НРД («принял»/«отклонил» с текстом, напр. M2M37 «Некорректно указано наименование участника в анкете»). Текст берётся из самого ответа (serviceErrorTexts) — карту кодов не трогаем. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -176,6 +176,16 @@ func (s *Server) applyIncoming(ctx context.Context, p igw.Package) error {
|
||||
}
|
||||
log.Printf("lk-gateway: поллер M2MTransferResponse id=%d: статус=%s коды=[%s] GUID=%s",
|
||||
p.ID, resp.StatusCode, strings.TrimSpace(codes), resp.GUID)
|
||||
if gs := string(resp.GUID); gs == "" || gs == zeroGUID {
|
||||
// Нулевой GUID — ответ не на перевод (сделки нет), а на регистрацию участника
|
||||
// (анкета #M2MPF) или служебное сообщение сервиса МОСТ. Фиксируем и показываем
|
||||
// на странице анкеты, а не отбрасываем как «сделка не найдена».
|
||||
raw, _ := captureNSDReply(p, unpacked.DocXML, "participant-form")
|
||||
recordParticipantReply(string(resp.StatusCode), resp, raw)
|
||||
log.Printf("lk-gateway: поллер ОТВЕТ НРД на анкету участника id=%d: %s [%s] %q (сохранён %s)",
|
||||
p.ID, resp.StatusCode, strings.TrimSpace(codes), strings.Join(serviceErrorTexts(resp), "; "), raw)
|
||||
return nil
|
||||
}
|
||||
if err := s.svc.ApplyServiceResponse(ctx, resp, unpacked.DocXML); err != nil {
|
||||
// Сделка может быть не найдена (ответ на чужой/старый GUID) —
|
||||
// логируем, но помечаем обработанным, чтобы не зациклиться.
|
||||
|
||||
Reference in New Issue
Block a user