Skip to content

feat(certificates): удобный редактор шаблона и понятный запуск выдачи - #504

Merged
TThanos3000 merged 4 commits into
devfrom
feat/dev-certificate-editor-usability-20261024
Oct 25, 2026
Merged

TThanos3000 merged 4 commits into
devfrom
feat/dev-certificate-editor-usability-20261024

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Что изменено

Редактор сертификата позволяет загрузить полностью готовый фон и оставить только персональное имя. Все остальные элементы удаляются и возвращаются через список. Холст получил понятные инструменты перемещения/размера, выравнивание по двум осям, undo/redo, масштаб и расширенный режим.

На шаге автовыдачи несохраненные настройки больше не оставляют непонятно отключенную кнопку: «Перейти к запуску» с пояснением о сохранении выполняет PUT и открывает отдельное подтверждение. Ошибки сохранения сохраняют введенные данные и не запускают выдачу.

Зачем

Внешний готовый дизайн не должен получать дополнительные надписи поверх фона. Прежнее расположение и управление элементами мешали настройке, а условие dirty отключало запуск без причины рядом с действием.

Реализация

  • Обязательное имя, восемь независимых необязательных элементов, действие «Только имя» и сохранение геометрии скрытых слоев.
  • Выбор из списка, drag/resize, стрелки/Shift, Delete, размер текста, центрирование, Ctrl/Cmd+Z и повтор.
  • Подпись сначала вписывается в существующую область; при изменении размера изображение сохраняет пропорции.
  • Длинное ФИО переносится и уменьшается по реальным метрикам Mont и высоте области, как в парном PDF renderer.
  • Сохранение перед preview/test-mail/launch; явное подтверждение после сохраненной revision; ошибки видны и внутри модального окна.
  • Активная очередь ведет в журнал, ноль получателей и неверная дата получают текстовую причину. Ошибка даты связана с полем через aria-describedby.
  • Нормализация legacy draft, включая ответы управления очередью, не теряет несохраненные правки.

API

Зависит от API #821: optional hidden_elements / hiddenElements. Existing revision/409, аудитории, расписание, очередь и журнал сохранены. Новые endpoints не добавлялись.

UI

Три шага сертификатов используют общую плотность и иерархию существующего управления программой. Mont, UI foundation Button/Field/Choice, compact management controls и app-modal сохранены; глобальный UI Kit не менялся.

  • Инструменты холста: 12px, высота 32px. Подписанный селект масштаба 164 × 32px: «По размеру окна», 125%, 150%, 200%. Шрифт не увеличивается до 16px на мобильной ширине.
  • Выравнивание остается одной группой; мобильная шапка имеет два столбца действий. Короткие подписи сохраняют явные доступные названия.
  • Панель сохранения помещается в один ряд даже на 320px, закрывает нижний отступ диалога и не пропускает под собой содержимое. Режим по размеру окна резервирует место для инструментов и пробного PDF.
  • Поля письма и поиск используют 12px; форма сохраняет геометрию Field, textarea имеет спокойное скругление. Фильтры отправок переносятся без уменьшения до 10px.
  • Пробный PDF, письмо себе и переход к запуску имеют стабильные компактные подписи. Сохранение перед действием объясняется рядом с кнопкой.
  • Контурные кнопки показывают клавиатурный фокус одной усиленной границей на существующем контуре, светлой заливкой и темным текстом.

Полный AC audit и снимки редактора, автовыдачи и журнала. Реальная Angular сборка проверена на 320/390/1030/1440 и в окне 1280 × 720. Физические touch-устройства и Safari не проверялись.

Permissions

Не менялись. Вкладка остается внутри существующего управления программой; server-side access/foreign asset/private PDF regression tests выполнены в парном API.

Проверки

  • Tests: certificate-layout.spec.ts + certificates.component.spec.ts — 26 passed.
  • Build: npm run build:pr — success на frontend head 417b5d0; существующие Sass deprecation warnings.
  • Checks: ESLint по измененным TS, Prettier по TS/HTML/Markdown, Stylelint по двум SCSS, git diff --check.
  • Browser: настоящая Angular сборка + Django API, изолированная localhost программа 1. Фон/подпись, все восемь элементов, drag/resize/keyboard/history, сохранение и reload, preview download.
  • Browser: селект масштаба — все четыре значения, возврат к исходному размеру, ArrowDown/Home, 320/390 без overflow, видимый селект 164 × 32px и текст 12px.
  • Browser: 320/390/1030/1440 и 1280 × 720, длинное имя внутри области, без переполнения документа; expanded editor и zoom.
  • Browser: audience change → save → separate confirmation; active batch → journal; missing/before-completion date explanation.
  • Negative tests: PUT 400/409/500/network failure retains draft and suppresses activation/preview/test-mail; activation error visible in confirmation and retry succeeds.
  • Paired API CI: полный PostgreSQL suite — success на API head 17b08a27.
  • Paired PDF verification: два разных ФИО, один и тот же фон, одностраничный A4 landscape, PNG inspection без обрезки букв.

Acceptance criteria

  • AC1–AC4: готовый фон, независимые элементы, обязательное имя и legacy compatibility — UI + парный API/PDF tests.
  • AC5–AC6: инструменты, подпись, история, длинное имя и адаптив — browser/geometry tests.
  • AC7–AC9: сохранение перед подтверждением, ошибки и понятные ограничения — browser/component tests.
  • AC10: существующие server-side отказы — парные API regression tests.

Не проверено

Новая версия еще не развернута на dev. Реальная рассылка участникам, native touch и другие браузерные движки не запускались. Полный frontend suite повторно не запускался; выполнены относящиеся к изменению 26 тестов и Angular build.

Риски / migration

Миграции не нужны. Старые шаблоны сохраняют видимость/координаты, ранее выданные PDF не перегенерируются. Сначала merge/deploy API #821, после успешного API deploy — этот PR и приемка на dev. Реальную программу 6 при локальной проверке не меняли, письма участникам не отправляли.

@TThanos3000
TThanos3000 merged commit 04f19d4 into dev Oct 25, 2026
@TThanos3000
TThanos3000 deleted the feat/dev-certificate-editor-usability-20261024 branch October 25, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants