Skip to main content
Сертификаты — это документы о завершении курса, которые платформа выдаёт ученику автоматически, когда он полностью проходит курс. Сертификат представляет собой веб-страницу с именем ученика, названием курса, датой выдачи, подписью и печатью школы, доступную по уникальной публичной ссылке.
Раздел находится в активной разработке (задача ITD-158). Настройка сертификата в админке (ManageCourseCertificatesPage) и раздел «Мои сертификаты» у ученика уже присутствуют в интерфейсе, но пока не подключены к боевому backend: списки шаблонов и сертификатов используют временные заглушки, сохранение настроек и запрос certificateFindMany будут включены после публикации серверной схемы. Ниже описана целевая механика согласно утверждённой спецификации.

Что такое сертификат

Когда ученик завершает курс до конца, платформа фиксирует это событие и создаёт запись о сертификате. Никаких ручных действий не требуется — выдача полностью автоматическая. Действует правило «один ученик — один сертификат на курс»: повторно документ не выдаётся. У каждого сертификата есть уникальный код (uuid) и публичная ссылка вида:
По этой ссылке сертификат может открыть кто угодно — сам ученик, работодатель или другая школа. На сертификате размещается QR-код, ведущий на ту же страницу проверки.

Как это устроено

Сертификат складывается из двух частей: шаблона оформления и снимка данных (snapshot).

Снимок данных — неизменяемый документ

В момент выдачи платформа делает снимок всех данных: имя ученика, название курса, куратор, количество уроков, оформление, подпись и печать. Дальше сертификат строится только из этого снимка и не меняется.
Принцип «как бумажный диплом»: что напечатано в день вручения — то и останется. Если в данных ошибка (например, опечатка в имени), сертификат не редактируется, а отзывается и выдаётся заново.

Публичная проверка через verify.exode.biz

Проверку подлинности выполняет отдельный сервис (worker) на домене verify.exode.biz. Когда кто-то открывает ссылку сертификата:
  1. Worker запрашивает данные сертификата у backend по его uuid.
  2. Загружает HTML-шаблон из хранилища R2.
  3. Подставляет значения из снимка, добавляет даты, номер и QR-код.
  4. Показывает готовую страницу с баннером подлинности.

Скачивание PDF через печать

Готовый PDF-файл на сервере не хранится. Кнопка «Скачать PDF» на странице сертификата вызывает стандартное окно печати браузера (window.print()), где документ можно сохранить как PDF. Специальный @media print CSS печатает только область сертификата. На мобильных устройствах это работает через «Сохранить в Файлы».
Ссылка на сертификат должна открываться во внешнем системном браузере (target="_blank"), а не во встроенном webview приложения — иначе печать в PDF может не сработать.
Пример страницы сертификата с проверкой подлинности

Что дальше