Files
Bridge-and-Join-s/internal/lkgateway/nsdreceipt_test.go
T
fontvielle 6fc0ff5d3d Анкета участника: ответ НРД принимается автоматически — квитанция и ответ сервиса
Квитанции ЭДО НРД (пакеты 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
2026-10-22 11:14:22 +03:00

24 lines
2.1 KiB
Go

package lkgateway
import "testing"
// Квитанция НРД о получении анкеты (пакет C, 22.10.2026, сервер 9) — текст после снятия тегов.
func TestParseNSDReceipt(t *testing.T) {
ok := `<html><body><h1>Уведомление о получении Пакетов электронных документов</h1><p>Отправитель</p><p>MC0413600000 ООО "ИК "Фонтвьель"</p>
<p>Тема сообщения</p><p>Тема входящего сообщения не указана</p><p>Дата и время получения</p><p>22.10.2026 11:07:31</p>
<p>Результаты первичной обработки Пакетов электронных документов:</p><p>Наименование Пакета электронных документов:</p><p>#M2MPF2210260000000000071.ZIP</p>
<table><tr><td>Проверка типа документа</td><td>Успешно</td></tr><tr><td>Расшифровка</td><td>Успешно</td></tr><tr><td>Распаковка</td><td>Успешно</td></tr></table>
<p>Перечень успешно обработанных вложенных файлов</p><p>#M2MPF2210260000000000071.XML</p><p>Составлено:</p><p>22.10.2026</p></body></html>`
r, found := parseNSDReceiptText(ok)
if !found || !r.OK || r.Package != "#M2MPF2210260000000000071.ZIP" || r.ReceivedAt.Format("02.01.2006 15:04:05") != "22.10.2026 11:07:31" {
t.Fatalf("%+v", r)
}
bad := `<p>Уведомление о получении Пакетов электронных документов</p><p>Дата и время получения</p><p>22.10.2026 11:07:31</p><p>Результаты первичной обработки</p><p>#M2MPF1.ZIP</p><td>Расшифровка</td><td>Ошибка расшифровки</td><p>Составлено</p>`
if r, _ := parseNSDReceiptText(bad); r.OK || r.Text == "" {
t.Fatalf("ошибка не распознана: %+v", r)
}
if _, found := parseNSDReceiptText("<p>Справочник</p>"); found {
t.Fatal("не квитанция")
}
}