Документы НРД по поручению: папки с понятными названиями, опись и PDF
Пакеты НРД из INBOX ИШ (K…, 508…) распознаются по содержимому: квитанция о регистрации (или отказ), уведомление GS036, отчёт о статусе GS116 (сквитовано / не сквитовано), отчёт об исполнении MS010, ошибка. В ZIP ответа НРД и выгрузках для регулятора (16 и 16/1) — папки «01 Квитанция о регистрации поручения — K1699092» и т. д., «Опись.txt» с назначением и реквизитами каждого документа и «Документы НРД.pdf» (читаемое представление, печать через Chromium; без него — HTML). В карточке перевода ответы НРД подписаны так же. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -139,8 +139,8 @@ func submitIncomingOrderFor(ctx context.Context, deps incomingDeps, it *Incoming
|
||||
// writeOrderResponseZip отдаёт на скачивание ZIP с сырыми файлами ответа НРД
|
||||
// (отчёт MS010 + квитанции) по поручению с данным contr_d_id.
|
||||
func writeOrderResponseZip(w http.ResponseWriter, contrDID, fname string) {
|
||||
files := collectOrderResponseRaw(contrDID)
|
||||
if len(files) == 0 {
|
||||
docs := nsdOrderDocs(contrDID)
|
||||
if len(docs) == 0 {
|
||||
http.Error(w, "ответ НРД (MS010) по этому поручению в INBOX ИШ ещё не найден", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
@@ -148,11 +148,7 @@ func writeOrderResponseZip(w http.ResponseWriter, contrDID, fname string) {
|
||||
w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s.zip"`, fname))
|
||||
zw := zip.NewWriter(w)
|
||||
defer zw.Close()
|
||||
for _, f := range files {
|
||||
if wf, e := zw.Create(f.Name); e == nil {
|
||||
_, _ = wf.Write(f.Data)
|
||||
}
|
||||
}
|
||||
writeNSDDocsZip(zw, "", "Документы НРД по поручению № "+contrDID, docs, true)
|
||||
}
|
||||
|
||||
// downloadSentOrder отдаёт на скачивание XML отправленного поручения 16/1
|
||||
@@ -360,8 +356,9 @@ func orderRespKind(pkg, body string) (string, bool) {
|
||||
u := strings.ToUpper(body)
|
||||
low := strings.ToLower(body)
|
||||
switch {
|
||||
case strings.Contains(u, "MS010") || strings.Contains(u, "SESE.025"):
|
||||
return "Отчёт по поручению депо MS010 — операция проведена, бумаги зачислены", true
|
||||
case strings.Contains(u, "MS010") || strings.Contains(u, "SESE.025") || strings.Contains(u, "SESE.024") || strings.Contains(u, "GS036") || strings.Contains(u, "GS116") || strings.Contains(low, "<reg_no>"):
|
||||
d := classifyNSDDoc(pkg, body)
|
||||
return d.Title + " — " + d.About, d.Done
|
||||
case strings.Contains(u, "ERROR") || strings.Contains(strings.ToUpper(pkg), "ERROR") || strings.Contains(low, "ошибк"):
|
||||
return "Ошибка обработки пакета (CERROR)", false
|
||||
case strings.Contains(u, "REORD") || strings.Contains(low, "принят"):
|
||||
|
||||
Reference in New Issue
Block a user