- Создатель Неизвестный пользователь (a.s.voronin@rt-sk.ru), отредактировано янв 08, 2025

OLD GIT - https://git.gosuslugi.local/ervu/source/mz-xsd-storage/-/tree/master/mnsv-ervu-abroad-forbidden-temporary

GIT (вынесено в отдельный репозиторий в рамках Невозможно найти сервер Jira для этого макроса. Причиной может быть конфигурация ссылки на приложение. ) - https://git.gosuslugi.local/ervu/source/mz-mnsv-ervu-abroad-forbidden-temporary

## Описание

Сервис для работы с ВС "ЕРВУ_Передача сведений о запрете на выезд граждан из РФ" для ФОИВ ФСБ (urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5). Принимает JSON из процессов, преобразует в XML и направляет в кафку для передачи в сервис mz-adapter и последующей отправки в ФОИВ через СМЭВ.

Сервис вынесен в отдельный репозиторий с использованием библиотеки `mzServiceCore`

## Назначение

Сервис реализует передачу данных о введении или отмене временной меры "Запрет на выезд из Российской Федерации". JSON передаётся из процессов, преобразуется в XML сообщение по формату ВС https://lkuv.gosuslugi.ru/paip-portal/#/inquiries/card/b5fd2c89-7113-4883-9d59-1b9fa31df90b

На текущий момент работает с версией ВС 1.0.5

Вид сведений не подразумевает передачу вложений (решение о введении/отмене меры) !!!

## Схема взаимодействия ФОИВ ФСБ по части введения и отмены временных мер

## Примеры запроса

Инициатором сеанса выступает система ЕРВУ, передавая сообщение о введении или отмене временной меры через вид сведений urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary (текущая версия 1.0.5). Сеанс работает в формате рассылка (Тип обмена - Целиковая маршрутизация рассылка), что подразумевает отсутствие ответа от получателя рассылки (ФОИВ ФСБ). Проверить состояние сообщения можно только через функционал "Судьба сообщения СМЭВ3". Подтверждение от ФОИВ приходит по отдельному виду сведений, работающему по формату "запрос - ответ" (см. Описание сервиса подтверждения меры "Запрет на выезд")

### Структура запроса

Поле в xml | Назначение поля | ФЛК | Кол-во возможных вхождений | Комментарий
--- | --- | --- | --- | ---
Поле в xml | Назначение поля | ФЛК | Кол-во возможных вхождений | Комментарий
Начало блока common - основная информация о гражданине
lastName | Фамилия | Кириллица, пробел, дефис. Максимум - 100 символов | 1..1 |
firstName | Имя | Кириллица, пробел, дефис. Максимум - 100 символов | 1..1 |
middleName | Отчество | Кириллица, пробел, дефис. Максимум - 100 символов | 0..1 |
gender | Пол | Справочник | 0..1 |

- 1 (Мужской)
- 2 (Женский)

Начало блока birthDate - сведения о дате рождения гражданина
day | День рождения | Число от 01 до 31 | 1..1 |
month | Месяц рождения | Число от 01 до 12 | 1..1 |
year | Год рождения | Число от 1900 до 2099 | 1..1 |
Конец блока birthDate - сведения о дате рождения гражданина
birthPlace | Место рождения | Кириллица, дефис, цифры, пробел, точка, запятая. Максимум - 250 символов | 1..1 |
snils | СНИЛС | 11 цифр | 0..1 |
idERN | Номер записи в едином регистре населения | 12 цифр | 0..1 |
Конец блока common - основная информация о гражданине
Начало блока passport - сведения о паспорте гражданина
series | Серия |  | 1..1 |
number | Номер |  | 1..1 |
issueDate | Дата выдачи |  | 1..1 |
Конец блока passport - сведения о паспорте гражданина
Начало блока measuresTemporary - информация о временных мерах
measureId | Уникальный идентификатор | Латиница, дефис, цифры. Максимум - 85 символов | 1..1 |
status | Статус меры | boolean | 1..1 |

- true
- false

number | Номер решения о введении меры | Цифры, дефис. Максимум - 250 символов | 1..1 |
date | Дата решения о введении меры | Дата в формате dd.mm.yyyy | 1..1 |
militaryCommissariatName | Наименование организации, принявшей решение о введении меры | Кириллица, цифры, пробел, спецсимволы. Максимум - 512 символов | 0..1 |
measureCode | Код временной меры | Справочник | 1..1 |

- 1 (Запрет на выезд из Российской Федерации)

measureName | Тип временной меры | Кириллица, пробел. Максимум - 100 символов | 1..1 |
militaryComissar | Фамилия военного комиссара | Кириллица, пробел, дефис. Максимум - 100 символов | 1..1 |
militaryComissarFirstName | Имя военного комиссара | Кириллица, пробел, дефис. Максимум - 100 символов | 1..1 |
militaryComissarMiddleName | Отчество военного комиссара | Кириллица, пробел, дефис. Максимум - 100 символов | 0..1 |
Конец блока measuresTemporary - информация о временных мерах
sender | Передача кода маршрутизации | 1-7 символов | 1..1 |

### Пример сообщения рассылки в формате XML

request_example Развернуть исходный код
expand source?

1 2 3 4 5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
`<``measuresTemporaryData` `xmlns``=``"urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5"``>`
`<``common``>`
`<``lastName``>Иванов</``lastName``>`
`<``firstName``>Сергей</``firstName``>`
`<``middleName``>Федорович</``middleName``>`
`<``gender``>1</``gender``>`
`<``birthDate``>`
`<``day``>02</``day``>`
`<``month``>05</``month``>`
`<``year``>1984</``year``>`
`</``birthDate``>`
`<``birthPlace``>Москва</``birthPlace``>`
`<``snils``>08301894460</``snils``>`
`<``idERN``>456712331234</``idERN``>`
`</``common``>`
`<``passport``>`
`<``series``>4502</``series``>`
`<``number``>160381</``number``>`
`<``issueDate``>12.10.2011</``issueDate``>`
`</``passport``>`
`<``measuresTemporary``>`
`<``measureId``>50-12345678-26-004-2-1-01-10072023-111111-d8a15d38-ee63-4c17-be27-6b653816329e</``measureId``>`
`<``status``>true</``status``>`
`<``number``>123-2023</``number``>`
`<``date``>24.05.2023</``date``>`
`<``militaryCommissariatName``>Военный комиссариат Ивановского района</``militaryCommissariatName``>`
`<``measureCode``>1</``measureCode``>`
`<``measureName``>Запрет на выезд из Российской Федерации</``measureName``>`
`<``militaryComissar``>Воеводов</``militaryComissar``>`
`<``militaryComissarFirstName``>Сергей</``militaryComissarFirstName``>`
`<``militaryComissarMiddleName``>Анатольевич</``militaryComissarMiddleName``>`
`</``measuresTemporary``>`
`<``sender``>MNSV116</``sender``>`
`</``measuresTemporaryData``>`

### Атрибут sender

В данном атрибуте передаётся код маршрутизации с мнемоникой стенда, с которого отправлено сообщение. Это необходимо для передачи в сообщение о подтверждении введения/отмены меры (для отправки сообщения на корректный стенд). Значение атрибута передаётся не из процессов, а закладывается в переменной окружения SENDER_CODE, установленной в сервисе

Пример на стенде TEST

## Kafka

### Consumer

- mz.in.request
- mz.out.response
- smev.status.handler

### Producer

- pgs.proxy.endpoints.access.info
- mz.impl.info
- mz.impl.mock
- mz.scenario.info
- mz.out.request
- mz.in.response
- mz.in.json.response
- smev.status.handler

## S3

Сервис имеет доступ к корзине mz-attachment с правами READ, WRITE

## БД mz_ervu_restriction_info

В данной БД хранится информация о мерах, действующих и отменённых, по каждому из видов сведений (каждому ФОИВ)

Столбец | Дата тайп | NOT NULL | PK | Комментарий | Пример заполнения
--- | --- | --- | --- | --- | ---
Столбец | Дата тайп | NOT NULL | PK | Комментарий | Пример заполнения
id | UUID | + | + | Идентификатор записи | 7492ff5e-9f0e-4d02-8e6d-a02b9e41a024
request_id | UUID | + |  | Идентификатор запроса | 36aaa4f6-0995-43da-8162-1c87e6f9952b
class | varchar(500) |  |  | Класс вида сведений | MeasuresTemporaryData@urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5
restriction_id | UUID | + |  | Идентификатор временной меры | 6ef19960-8bca-408d-a420-35b972871570
restriction_status | boolean |  |  | Статус временной меры | true
request_stamp | timestamp | + |  | Дата и время отправки запроса | 2024-07-12 21:52:26.562
received_smev_status | varchar(200) |  |  | Полученный статус от СМЭВ |

Владельцем БД номинально числится сервис mz-mnsv-ervu-driving-registration-vehicle, но у всех сервисов, отвечающих за временные меры, есть права на запись в данную таблицу

## Проверка XML на валидность

В сервисе реализована проверка XML согласно XSD-схеме вида сведений. Флаг, отвечающий за функционал, лежит в конфиге сервиса по пути extra_options.validator.xml.enabled с значением true

validator config Развернуть исходный код
expand source?

`extra_options:` `` `validator:` `` `xml:` `` `enabled:` `true`

В такой реализации некорректный JSON, поступающий из процессов и преобразованный в XML, проверяется внутри сервиса на валидность по схеме вида сведений. Схема расположена по пути /src/main/resources в папке с версией ВС

На текущий момент путь до XSD-схемы /src/main/resources/1_0_5/schema/schema.xsd

Если JSON некорректен, в логах сервиса будет ошибка

### Пример ошибки из логов

validation error log Развернуть исходный код
expand source?

`Caused by: org.xml.sax.SAXParseException: cvc-pattern-valid: Value 'Фамилия476592111354' is not facet-valid with respect to pattern '[-А-Яа-яёЁ ]{1,100}' for type 'string-100'.`

В данном случае

Value 'Фамилия476592111354' - значение из процесса

pattern '[-А-Яа-яёЁ ]{1,100}' - паттерн RegExp, установленный для поля

type 'string-100' - тип данных для элемента, установленный в XSD схеме

Самая частая ошибка на тестовых стендах - в ФИО гражданина есть цифры (т.к. большинство записей заводится в таком формате: 'Фамилия476592111354 Имя476592111354 Отчество476592111354'), которые не предусмотрены в XSD

## Дублирование сообщения

По существующей бизнес-логике, при отправке сообщения о введении/отмене меры в ФСБ, также уведомление отправляется в МВД (сервис mz-mnsv-ervu-driving-registration-vehicle) по виду сведений `urn://rostelekom.ru/ERVU-DrivingRegistrationVehicleForbiddenTemporary/1.0.3`

Так как описанный выше вид сведений не подразумевает вложений, то при отправке в ФСБ вложений нет. Однако вид сведений МВД вложения подразумевает, и при уведомлении МВД о введении меры "Запрет на выезд" туда отправляется вложение, которого нет в "исходном" сообщении

Фильтровать данные таблицы Создать сводную таблицу Создать диаграмму
Configure buttons visibility
Нравится Станьте первыми кому понравится это

- Нет меток
- Редактировать метки

Написать комментарий...

Добавить комментарий

Обзор
Инструменты контента
{"serverDuration": 105, "requestCorrelationId": "5f7c3cf623717caa"}
search
recentlyviewed
attachments
weblink
advanced
image-effects
image-attributes

- Абзац

- Жирный
- Курсив
- Подчеркнутый
- Cредство выбора цвета
  Дополнительные цвета
- Форматирование

- Маркированный список
- Нумерованный список

- Список задач

- Убрать отступ
- Сделать отступ

- Выровнить по левому краю
- Выровнить по центру
- Выровнить по правому краю

- Разметка страницы

- Ссылка

- Таблица

- Вставить

- Разметка страницы

- Отменить
- Восстановить

- Найти/Заменить

- Справка по быстрым ссылкам на клавиатуре

Подключение...