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

## Полезные ссылки

https://git.gosuslugi.local/ervu/source/ervu-object-diff-calc GIT

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

Сервис вычисляет разницу между двумя объектами ЕРВУ по полям (добавлено, изменено, удалено)

Вынесен в отдельный сервис для взаимодействия через REST API с сервисом ervu-application-calc (изначально контроллер находился в ervu-import-history-service)

Сервис обеспечивает следующие функции:
Предоставляет информацию об изменениях между двумя объектами, им могут пользоваться любые другие сервисы, которым необходимо получить список изменений между объектами
Вычисляет изменения между объектами, для этого он раскладывает объекты в плоскую мапу и смотрит разницу. Если хотя бы один из объектов null - вернет null.
Возвращает 1 объект ObjectDiffs с следующими "группами" :

updateDiffs - обновлено
deleteDiffs - удалено
addedDiffs - добавлено

С s3 сервис не взаимодействует

## KAFKA

Сервис имеет доступ к топику pgs.proxy.endpoints.access.info в роли PRODUCER (Пишет)

?

`topics:` `` `- name: pgs.proxy.endpoints.access.info` `` `operation: Create` `` `patternType: literal` `` `- name: pgs.proxy.endpoints.access.info`
`` `operation: Write`
`` `patternType: literal`

### Пример сообщения

?

`[{``"appName"``:``"ervu-object-diff-calc"``,``"pkg"``:``"rtl.pgs.ervu.objectdiffcalc.controller.DiffController"``,``"method"``:``"Post"``,``"ingressPath"``:``"/service/ervu-object-diff-calc"``,``"path"``:``"/diffs/compute"``,``"rules"``:{}}]`

## REST API контроллеры

Сервис имеет единственный эндпоинт, который принимает на вход 2 объекта, и возвращает разницы между этими объектами - так называемые diffs, которые представляют из себя массив новых, измененных и удаленных полей.

### POST /service/ervu-object-diff-calc/diffs/compute

#### Запрос

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

`{` `` `"oldObject"``: {` `` `"id"``:` `"ed55987a-594b-4092-9639-1945b0bcf010"``,` `` `"recruitId"``:` `"940e792d-a06f-411b-b240-ba23a7749c10"``,` `` `"dateTime"``:` `"2024-02-13T07:30:46.676Z"``,`
`` `"event"``:` `"Гражданин не явился на мероприятие в военный комиссариат"``,`
`` `"action"``:` `"Action"``,`
`` `"status"``:` `"5"``,`
`` `"userInfo"``: {`
`` `"userId"``:` `null``,`
`` `"userName"``:` `"Система"``,`
`` `"userDomainId"``:` `null``,`
`` `"userDomainName"``:` `"arm"``,`
`` `"userRecruitmentName"``:` `null`
`` `},`
`` `"targetRecruitmentId"``:` `null``,`
`` `"currentRecruitmentId"``:` `null``,`
`` `"cause"``:` `null``,`
`` `"description"``:` `null`
`` `},`
`` `"newObject"``: {`
`` `"id"``:` `"b4475036-3ed2-4788-9470-d583d258356f"``,`
`` `"recruitId"``:` `"e071c766-32d7-40ca-8fef-ef76117d65de"``,`
`` `"dateTime"``:` `"2024-02-13T06:06:32.736Z"``,`
`` `"event"``:` `"Ожидается подтверждение от реализаторов временных мер"``,`
`` `"action"``:` `"Action"``,`
`"lastName"``:` `"Мохов"``,`
`` `"status"``:` `"11.6"``,`
`` `"userInfo"``: {`
`` `"userId"``:` `null``,`
`` `"userName"``:` `"Система"``,`
`` `"userDomainId"``:` `null``,`
`` `"userDomainName"``:` `"arm"``,`
`` `"userRecruitmentName"``:` `null`
`` `},`
`` `"targetRecruitmentId"``:` `null``,`
`` `"currentRecruitmentId"``:` `null``,`
`` `"cause"``:` `null``,`
`` `"description"``:` `null`
`` `},`
`` `"skipDeletions"``:` `true`
`}`

#### Успешное выполнение операции

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

`{` `` `"updated"``: [` `` `{` `` `"path"``:` `"id"``,` `` `"oldValue"``:` `"ed55987a-594b-4092-9639-1945b0bcf010"``,`
`` `"newValue"``:` `"b4475036-3ed2-4788-9470-d583d258356f"`
`` `},`
`` `{`
`` `"path"``:` `"recruitId"``,`
`` `"oldValue"``:` `"940e792d-a06f-411b-b240-ba23a7749c10"``,`
`` `"newValue"``:` `"e071c766-32d7-40ca-8fef-ef76117d65de"`
`` `},`
`` `{`
`` `"path"``:` `"dateTime"``,`
`` `"oldValue"``:` `"2024-02-13T07:30:46.676Z"``,`
`` `"newValue"``:` `"2024-02-13T06:06:32.736Z"`
`` `},`
`` `{`
`` `"path"``:` `"event"``,`
`` `"oldValue"``:` `"Гражданин не явился на мероприятие в военный комиссариат"``,`
`` `"newValue"``:` `"Ожидается подтверждение от реализаторов временных мер"`
`` `},`
`` `{`
`` `"path"``:` `"status"``,`
`` `"oldValue"``:` `"5"``,`
`` `"newValue"``:` `"11.6"`
`` `}`
`` `],`
`` `"added"``: [`
`` `{`
`` `"path"``:` `"lastName"``,`
`` `"newValue"``:` `"Мохов"`
`` `}`
`` `]`
`}`

В случае, если запрос неверный (к примеру отсутствует newObject ) - ответом вернётся 400 Bad Request

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

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

`{` `` `"oldObject"``:` `null``,` `` `"newObject"``: {` `` `"id"``:` `"b4475036-3ed2-4788-9470-d583d258356f"``,` `` `"recruitId"``:` `"e071c766-32d7-40ca-8fef-ef76117d65de"``,`
`` `"dateTime"``:` `"2024-02-13T06:06:32.736Z"``,`
`` `"event"``:` `"Ожидается подтверждение от реализаторов временных мер"``,`
`` `"action"``:` `"Action"``,`
`` `"status"``:` `"11.6"``,`
`` `"userInfo"``: {`
`` `"userId"``:` `null``,`
`` `"userName"``:` `"Система"``,`
`` `"userDomainId"``:` `null``,`
`` `"userDomainName"``:` `"arm"``,`
`` `"userRecruitmentName"``:` `null`
`` `},`
`` `"targetRecruitmentId"``:` `null``,`
`` `"currentRecruitmentId"``:` `null``,`
`` `"cause"``:` `null``,`
`` `"description"``:` `null`
`` `},`
`` `"skipDeletions"``:` `true`
`}`

Ответ

## Взаимодействие с другими сервисами

### Схема взаимодействия

## Примеры вычисления разницы

### Добавление объекта

Нравится Станьте первыми кому понравится это

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

## 1 комментарий

1. #### Неизвестный пользователь (a.s.voronin@rt-sk.ru)

   TODO: описать computeRecruit

   - Постоянная ссылка
   - Ответить
   - Нравится
   - янв 07, 2025

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

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

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

- Абзац

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

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

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

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

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

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

- Ссылка

- Таблица

- Вставить

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

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

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

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

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