Раздел находится в активной разработке (задача ITD-158). Настройка сертификата в админке (
ManageCourseCertificatesPage) и раздел «Мои сертификаты» у ученика уже присутствуют в интерфейсе, но пока не подключены к боевому backend: списки шаблонов и сертификатов используют временные заглушки, сохранение настроек и запрос certificateFindMany будут включены после публикации серверной схемы. Ниже описана целевая механика согласно утверждённой спецификации.Что такое сертификат
Когда ученик завершает курс до конца, платформа фиксирует это событие и создаёт запись о сертификате. Никаких ручных действий не требуется — выдача полностью автоматическая. Действует правило «один ученик — один сертификат на курс»: повторно документ не выдаётся. У каждого сертификата есть уникальный код (uuid) и публичная ссылка вида:
Как это устроено
Сертификат складывается из двух частей: шаблона оформления и снимка данных (snapshot).Снимок данных — неизменяемый документ
В момент выдачи платформа делает снимок всех данных: имя ученика, название курса, куратор, количество уроков, оформление, подпись и печать. Дальше сертификат строится только из этого снимка и не меняется.Публичная проверка через verify.exode.biz
Проверку подлинности выполняет отдельный сервис (worker) на доменеverify.exode.biz. Когда кто-то открывает ссылку сертификата:
- Worker запрашивает данные сертификата у backend по его
uuid. - Загружает HTML-шаблон из хранилища R2.
- Подставляет значения из снимка, добавляет даты, номер и QR-код.
- Показывает готовую страницу с баннером подлинности.
Скачивание PDF через печать
Готовый PDF-файл на сервере не хранится. Кнопка «Скачать PDF» на странице сертификата вызывает стандартное окно печати браузера (window.print()), где документ можно сохранить как PDF. Специальный @media print CSS печатает только область сертификата. На мобильных устройствах это работает через «Сохранить в Файлы».
Что дальше
- Создание сертификата — настройка шаблона курса и условий выдачи.
- Редактирование сертификата — брендовый цвет и переменные шаблона.
- Отображение у пользователя — раздел «Мои сертификаты» и публичная страница.