> ## Documentation Index
> Fetch the complete documentation index at: https://faq.exode.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Отображение сертификата у пользователя

> Раздел «Мои сертификаты» у ученика, публичная страница проверки и скачивание PDF.

Полученные сертификаты ученик видит в разделе «Мои сертификаты». Оттуда каждый сертификат открывается на публичной странице проверки, где его можно посмотреть, показать по ссылке или сохранить в PDF.

<Note>
  Список сертификатов (`CertificateListPage`, страница `/certificates`) уже реализован в интерфейсе, но данные пока подставляются заглушкой: запрос `certificateFindMany` будет подключён после публикации серверной схемы. Сейчас список отображается пустым, показывая экран-заглушку.
</Note>

## Раздел «Мои сертификаты»

Ученик попадает в раздел двумя путями:

* Прямая ссылка `/certificates` (постранично — `/certificates/:page`).
* Пункт «Сертификаты» в контекстном меню вкладки «Обучение» (`MyCertificatesContextItem`) с подписью «Полученные сертификаты».

Страница называется «Мои сертификаты» и показывает список карточек с счётчиком общего количества. Пагинация выводит по 12 сертификатов на страницу, сортировка — по дате создания (сначала новые).

<img src="https://mintlify.s3.us-west-1.amazonaws.com/exode-faq/images/online-schools/gamification/my-certificates-list.png" alt="Список сертификатов ученика" />

### Карточка сертификата

Каждая карточка (`CertificateCardItem`) показывает:

| Элемент           | Источник данных                                   |
| ----------------- | ------------------------------------------------- |
| Название курса    | `snapshot.courseName`                             |
| Номер сертификата | `id`                                              |
| Дата выдачи       | `issuedAt`                                        |
| Срок действия     | `expireAt` — дата или «Бессрочный», если не задан |
| Кнопка открытия   | Внешняя ссылка на страницу проверки               |

Кнопка со значком внешней ссылки ведёт на публичную страницу сертификата и открывается в новой вкладке.

### Пустой список

Если у ученика ещё нет сертификатов, показывается экран-заглушка (`EmptyCertificatesView`) с текстом о том, что сертификаты появятся здесь, и кнопкой «Перейти в каталог».

<img src="https://mintlify.s3.us-west-1.amazonaws.com/exode-faq/images/online-schools/gamification/certificates-empty.png" alt="Экран без сертификатов" />

## Публичная страница проверки

Клик по сертификату открывает страницу на домене `verify.exode.biz`:

```
https://verify.exode.biz/certificate/<uuid>
```

Страница обслуживается отдельным сервисом (worker), который собирает документ из снимка данных и HTML-шаблона и показывает баннер подлинности. Ссылка публичная — сертификат может открыть любой, кому её показали, в том числе через QR-код на самом документе.

## Скачивание и печать

На странице сертификата доступна кнопка «Скачать PDF». Готовый файл не хранится на сервере — кнопка вызывает стандартное окно печати браузера (`window.print()`), где документ сохраняется как PDF. Печатается только область сертификата (через `@media print` CSS).

<Warning>
  Для корректной печати ссылка должна открываться во внешнем системном браузере, а не во встроенном webview. Поэтому переход на сертификат всегда происходит в новой вкладке (`target="_blank"`).
</Warning>

На мобильных устройствах сохранение работает через системный диалог печати с опцией «Сохранить в Файлы».
