Исходящие: карточка «Регистрация участника M2M» (отправка анкеты + ответ НРД)

На странице «Исходящие» (/admin/claims) сверху показываем карточку регистрации
участника: когда отправили анкету, пакет, наименование и вердикт НРД («принял»
/ «отклонил» с текстом, напр. M2M37). Данные — из participant-reg.json
(template-функция participantRegHTML). Карточки нет, пока анкету не отправляли.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-21 18:30:47 +03:00
parent 07866526eb
commit 551448216c
3 changed files with 27 additions and 2 deletions
+24
View File
@@ -37,6 +37,30 @@ type admin struct {
// русификация статусов и других технических обозначений (см. требование
// «всё UI на русском, кроме программных терминов»).
var templateFuncs = template.FuncMap{
// Карточка «Регистрация участника M2M» для «Исходящих»: когда отправили анкету и вердикт НРД.
"participantRegHTML": func() template.HTML {
reg := loadParticipantReg()
if reg.SentAt.IsZero() {
return ""
}
esc := template.HTMLEscapeString
var b strings.Builder
b.WriteString(`<div class="card"><h2>Регистрация участника M2M (анкета)</h2><p>Анкета отправлена ` + reg.SentAt.Format("02.01.2006 15:04") + `, пакет ` + esc(reg.PkgID))
if reg.Name != "" {
b.WriteString(`, наименование «` + esc(reg.Name) + `»`)
}
b.WriteString(`. `)
switch {
case reg.RespAt.IsZero():
b.WriteString(`Ответ НРД пока не получен.`)
case strings.EqualFold(reg.Status, "ERROR"):
b.WriteString(`<b style="color:var(--err,#c0392b)">НРД отклонил</b> ` + reg.RespAt.Format("02.01 15:04") + `: ` + esc(reg.RespText) + `.`)
default:
b.WriteString(`<b style="color:#1a7f37">НРД принял</b> ` + reg.RespAt.Format("02.01 15:04") + `. ` + esc(reg.RespText))
}
b.WriteString(` <a href="/admin/setup/participant-form">открыть анкету →</a></p></div>`)
return template.HTML(b.String())
},
"ru": russianText,
"ruState": russianState,
"ruOutcome": russianOutcome,