Перейти к содержанию

Подписание документа pdf#

Кнопка Подписать#

Кнопка Подписать отображается в окне просмотра только (указано в соответствующих разделах спецификации):

  • для файлов, которые необходимо подписать пользователю
  • пользователю с ролью, которая должна подписать файл

После нажатия на кнопку Подписать запускается процесс подписания, модальное окно НЕ закрывается.

img_4.png

Подписание#

В зависимости от Вида документа file.type и Типа подписания клиента customer.signingType могут применяться разные способы подписания ПФ (указано в соответствующих разделах спецификации):

Необходимый процесс подписания запускается при нажатии пользователем кнопки Подписать в модальном окне просмотра файлов pdf.

При нажатии на кнопку Подписать (вне зависимости от документа и типа подписания), выполняется проверка: указан ли срок действия документа - основания полномочия customer.company.representative.actionBasis.notValidAfter

  • если указан, и текущая дата больше чем notValidAfter (срок истек), то кнопка Подписать становится неактивной, и на кнопке отображается тултип Срок основания полномочий истек. Предоставьте агенту обновленные подтверждающие документы.
  • во всех остальных случаях (срок действия не указан или не истек) запускается Необходимый процесс подписания

Логирование событий#

Система записывает в журнал аудита весь процесс подписания

Для всех видов подписания

  • SIGN_START - пользователь нажал на кнопку Подписать

Для ПЭП

Для ручной

  • SIGN_HANDWRITTEN_DOWNLOAD - пользователь нажал ссылку скачивания исходного файла в процессе подписания
  • SIGN_HANDWRITTEN_UPLOAD - пользователь приложил файл в процессе подписания

Подписание ПЭП#

# Шаг
1. Пользователь открывает ПФ документа на просмотр и нажимает кнопку Подписать
1.a Если для текущего документа код уже был отправлен SPA_OTP_RESEND_TIME секунд назад, то отрывается окно ввода кода с оставшимся до истечения таймером. Переход к шагу 5.
2. Система отправляет СМС с кодом на номер пользователя user.phone
3. Система запускает Таймер ограничения повторной отправки СМС
4. Система отображает модельное окно для ввода кода из СМС
5. Система ожидает ввода пользователем кода из СМС
5.a Если таймер ограничения повторной отправки кода истек, показывает в модельном окне ссылку для повторной отправки кода
5.b Если пользователь запросил Код повторно. Возврат к шагу 2
6 Пользователь вводит код из СМС
7 Система сравнивает введенный код с отправленным
7.1 Если коды не совпадают, система показывает сообщение об ошибке, очищает введенное пользователем значение. Возврат к шагу 5
8 Система сохраняет информацию о подписании
9 Система добавляет штамп ПЭП в ПФ
10 Система отображает сообщение об успешном подписании
11 Система показывает форму просмотра ПФ без кнопки Подписать

Ограничения отправленного кода#

  • Максимальное количество попыток ввода = SPA_OTP_MAX_ATTEMPTS.
    • Считается общее количество по всем подписываемым документам.
    • Обнуляется после удачного ввода кода пользователем.
    • при достижении максимального количества попыток - пользователь блокируется, пользователю показывается системная ошибка.
  • Время на которое блокируется пользователь если превысил количество попыток = SPA_OTP_LOCK_TIME.
    • Измеряется в минутах.
    • При значении 0 - не блокируется.
  • Время жизни токена = SPA_OTP_TIME_TO_LIVE в минутах.
    • если время жизни кода истекло, пользователю показывается системная ошибка

Модальное окно#

  • Модальное окно всегда в центре
  • Вводить в поля можно только цифры
  • При открытии формы активно первое (левое) поле. При вводе цифры, фокус перескакивает на следующее справа поле
  • Таймер равен значению SPA_OTP_RESEND_TIME в секундах.

img_5.png

  • Пользователю показывается ссылка повторного запроса кода только после того, как таймер истек При нажатии на ссылку пользователем:
    • Система отправляет СМС с новым кодом на номер пользователя user.phone
    • Система запускает таймер ограничения повторной отправки СМС
    • Система на этом же модальном окне показывает таймер
    • Система ожидает ввода пользователем кода из СМС

img_6.png

  • Отдельной кнопки сабмита нет, форма сабмитится сразу после ввода последнего 4го символа.
  • Во время проверки кода системой, все поля и ссылки заблокированы, вместо таймера/ссылки повторного запроса кода отображается лоадер.

img_7.png

  • Если код проверен успешно, модальные окна ввода кода и просмотра pdf закрываются, отображается нотификация об успешном подписании img_11.png

  • Если введен неверный код:

    • введенные значения очищаются
    • под полями ввода показывается сообщение об ошибке Неверный код
    • первое поле становится активным
    • при вводе первой цифры нового кода сообщение об ошибке убирается
  • В случае технической ошибки модальное окно ввода кода закрывается, отображается алерт в модалке с документом img_8.png

Сохранение#

Оригинальный не подписанный файл удаляется из системы.

Система сохраняет следующую информацию о подписании:

  • все атрибуты копируются из оригинального файла
  • file.path - новый UUID и добавляется постфикс _sgn
  • file.name - добавляется постфикс _signed
  • file.signature.operationId - уникальный UUID операции.
  • file.signature.signingType - SIMPLE_ELECTRONIC
  • file.signature.signedAt - текущие дата и время
  • file.signature.user - user.id
  • file.signature.userRole - user.role
  • file.signature.smsCode - код из СМС которым пользователь подтвердил подписание
  • file.signature.phone - user.phone
  • file.signature.inn:
    • ЮЛ: - company.inn
    • ФЛ: - person.inn
    • ИП: - person.inn
  • file.signature.kpp:
    • ЮЛ: - company.kpp
    • ФЛ, ИП - пустое
  • file.signature.name:
    • ЮЛ: - company.fullName
    • ФЛ: - пустое
    • ИП: - ИП {person.fio}
  • file.signature.fio:
    • ЮЛ: - {company.representative.fio}
    • ФЛ: - person.fio
    • ИП: - person.fio

Добавление штампа#

Шаблон c примерами

  • Для добавления штампа, система заново генерирует ПФ документа, в которую он вставляется, со всеми актуальными данными подписантов на момент подписания.
  • Место вывода штампа указано в шаблонах, в которых его требуется добавлять
  • Если подписывающий пользователь - клиент ИП или ФЛ, вторая строка в штампе подписи отсутствует.

Отображение на форме#

  • Подписанный ПЭП файл отображается в системе в той же группе файлов где был оригинальный файл.
  • Подписанный ПЭП файл пользователь не может удалить
  • При просмотре подписанного ПЭП файла кнопка Подписать не отображается

img_14.png

Подписание вручную#

# Шаг
1. Пользователь открывает ПФ документа на просмотр и нажимает кнопку Подписать
2. Система показывает модалку со ссылкой для скачивания, пошаговой инструкцией, и ссылкой для загрузки подписанного скана
3. Пользователь скачивает документ, подписывает его и загружает скан
4. Система сохраняет загруженный файл, закрывает модалку просмотра и подписания, отображает в заявке загруженный файл

Модальное окно#

  • Модальное окно всегда в центре
  • Закрыть модалку можно, нажав на иконку крестика или на фон (закрывается только модалка подписания)
  • По ссылке Скачайте документ скачивается файл подписываемого документа

img.png

  • Для загрузки файла пользователь может выбрать только один файл
  • Во время загрузки файла отображается лоадер: img_1.png

  • Если файл не соответствует необходимому формату/размеру, он не загружается на бэк и в списке документов в табе “Документы” не появляется. В модельном окне отображается сообщение об ошибке

img_10.png

img_12.png

  • В случае технической ошибки в модальном окне подписания отображается алерт:

img_13.png

Сохранение#

Оригинальный файл не удаляется из системы. Оба файла отображаются пользователю.

Сохранение загруженного файла:

  • все атрибуты копируются из оригинального файла
  • file.path - новый UUID и добавляется постфикс _sgn
  • file.name - добавляется постфикс _signed
  • file.signature.operationId - уникальный UUID операции.
  • file.signature.signingType - HANDWRITTEN
  • file.signature.signedAt - текущие дата и время
  • file.signature.user - user.id
  • file.signature.userRole - user.role
  • file.signature.inn:
    • ЮЛ: - company.inn
    • ФЛ: - person.inn
    • ИП: - person.inn
  • file.signature.kpp:
    • ЮЛ: - company.kpp
    • ФЛ, ИП - пустое
  • file.signature.name:
    • ЮЛ: - company.fullName
    • ФЛ: - пустое
    • ИП: - ИП {person.fio}
  • file.signature.fio:
    • ЮЛ: - {company.representative.fio}
    • ФЛ: - person.fio
    • ИП: - person.fio

Отображение на форме#

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

img_2.png

  • Если уже существует подписанный загруженный файл, то при просмотре и загруженного подписанного и оригинального файлов, кнопка Подписать не отображается img_3.png

Дополнительная кнопка загрузки подписанного документа вручную#

Кнопка Загрузить подписанный

  • Отображается:
    • в деталке договора:
      • на группе файлов Договор
      • если в статусе требуется ручная подпись пользователем (см. documents.json для договоров
      • если подписанный файл ещё не загружен
  • При нажатии на кнопку:
    • открывается диалоговое окно как при нажатии на кнопку Подписать в окне просмотра pdf

Полный набор макетов

Все макеты и состояния по ссылкам:

Макеты Figma: Подписание клиентом Макеты Figma: Подписание ПЭП