Sibur
Описание команд всех сервисов, которые входят в состав Sibur.
risk-checker: сервис анализатора
Сервис принимает запросы для работы с рисками. Состояние хранится в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик risk_checker_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
- domain, в котором содержатся все доменные модели и их различные представления.
- commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.
- infrastructure, в котором содержится описание взаимодействия с другими сервисами.
- storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.
- service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.
- boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу localhost:5432/riskchecker_db
- Kafka по адресу localhost:9092
- Consul по адресу localhost:8500
- Адрес Kafka будет указан в application.conf
- Добавлены необходимые переменные окружения:
- RISK_CHECKER_DB_HOST
- RISK_CHECKER_DB_PORT
- RISK_CHECKER_DB_NAME
- RISK_CHECKER_DB_USER
- RISK_CHECKER_DB_PASSWORD
Запуск из консоли с помощью SBT
RISK_CHECKER_DB_HOST=localhost RISK_CHECKER_DB_PORT=5432 RISK_CHECKER_DB_NAME=riskchecker_db RISK_CHECKER_DB_USER=postgres RISK_CHECKER_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса risk-checker
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| RISK_CHECKER_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| RISK_CHECKER_HTTP_PORT | int | нет | 8192 | Порт, на котором слушает HTTP-сервер |
| RISK_CHECKER_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| RISK_CHECKER_KAFKA_TOPIC | string | нет | "risk_checker_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| RISK_CHECKER_KAFKA_DATAMODEL_EVENTS_TOPIC | string | нет | "risk_checker_datamodel_events" | Название кафка-топика для получения событий из datamodel по сущностям |
| RISK_CHECKER_KAFKA_DATAMODEL_RELATION_EVENTS_TOPIC | string | нет | "risk_checker_datamodel_relation_events" | Название кафка-топика для получения событий из datamodel по отношениям |
| RISK_CHECKER_KAFKA_MARKER_EVENTS_TOPIC | string | нет | "risk_checker_marker_events" | Название кафка-топика для получения событий из marker-service |
| RISK_CHECKER_KAFKA_CONSUMER_GROUP | string | нет | "risk_checker_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| RISK_CHECKER_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| RISK_CHECKER_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| RISK_CHECKER_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| RISK_CHECKER_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| RISK_CHECKER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах RISK_CHECKER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| RISK_CHECKER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который RISK_CHECKER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| RISK_CHECKER_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| RISK_CHECKER_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены. |
| RISK_CHECKER_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka. |
| RISK_CHECKER_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| RISK_CHECKER_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| RISK_CHECKER_KAFKA_AUTH_MODE | string | нет | "" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| RISK_CHECKER_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig] |
| RISK_CHECKER_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| RISK_CHECKER_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| RISK_CHECKER_SYNC_PAGE_SIZE | int | нет | 100 | Размер страницы запросов данных для синхронизации. |
| RISK_CHECKER_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| RISK_CHECKER_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| RISK_CHECKER_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| RISK_CHECKER_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| RISK_CHECKER_DISCOVERABLE_ID | string | нет | "another_RISK_CHECKER_service_instance" | ID сервиса в ServiceDiscovery |
| RISK_CHECKER_DISCOVERABLE_NAME | string | нет | "riskchecker" | Имя сервиса в ServiceDiscovery |
| RISK_CHECKER_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| RISK_CHECKER_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| RISK_CHECKER_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| RISK_CHECKER_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| RISK_CHECKER_SERVICE_TITLE | string | нет | "risk-checker" | Название сервиса для отображения |
| RISK_CHECKER_SERVICE_DESCRIPTION | string | нет | "Service RISK_CHECKER" | Описание сервиса для отображения |
| RISK_CHECKER_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| RISK_CHECKER_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| RISK_CHECKER_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| RISK_CHECKER_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| RISK_CHECKER_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| RISK_CHECKER_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| RISK_CHECKER_DB_HOST | string | да | Хост БД | |
| RISK_CHECKER_DB_PORT | int | да | Порт БД | |
| RISK_CHECKER_DB_NAME | string | да | Имя базы в БД | |
| RISK_CHECKER_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| RISK_CHECKER_DB_USER | string | да | Пользователь БД | |
| RISK_CHECKER_DB_PASSWORD | string | да | Пароль пользователя БД | |
| RISK_CHECKER_AUTHZFORCE_ADDR | string | нет | "http://localhost:8080/authzforce-ce" | Адрес AuthZforce server |
| RISK_CHECKER_AUTHZFORCE_DOMAIN | string | нет | "" | Доступный DomainID в AuthZforce server |
| RISK_CHECKER_EXTERNAL_MIGRATIONS_RETRY_DELAY | duration string | нет | 15 seconds | Задержка между повторными попытками запуска внешних миграций |
| RISK_CHECKER_EXTERNAL_MIGRATIONS_RETRY_ATTEMPTS | int | нет | 5 | Максимальное количество попыток запуска внешних миграций |
| RISK_CHECKER_EXTERNAL_MIGRATIONS_SKIP_MIGRATIONS | bool | нет | false | Игнорировать ли внешние миграции |
| RISK_CHECKER_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| RISK_CHECKER_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| RISK_CHECKER_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| RISK_CHECKER_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| RISK_CHECKER_LOG_LEVEL_SLICK_STATEMENT | string | нет | DEBUG | Уровень логирования запросов, отправляемых slick в БД |
| RISK_CHECKER_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| RISK_CHECKER_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| RISK_CHECKER_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| RISK_CHECKER_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| RISK_CHECKER_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| RISK_CHECKER_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| RISK_CHECKER_LOG_LEVEL_TEAM_ROUTES | string | нет | TRACE | Уровень логирования для роутов /team |
| RISK_CHECKER_RUN_RISK_MIGRATIONS | string | нет | false | Применять ли риски из стандартного Json при запуске сервиса |
| RISK_CHECKER_COMPLEX_RISK_PARALLELISM | int | нет | 1 | Параллелизм выполнения сложных рисков |
| RISK_CHECKER_LAMP_BUFFER_SIZE | int | нет | 10 | LAMP: размер буфера на отправку сообщений |
| RISK_CHECKER_LAMP_RECONNECT_SCHEDULE | schedule string | нет | I(2 seconds) | LAMP: стратегия переподключения (формат см. lamp.transport.model.Schedule) |
| RISK_CHECKER_LAMP_HOST | url string | нет | lamp-dev.dev.embedika.ru | LAMP: адрес |
| RISK_CHECKER_LAMP_PORT | int | нет | 443 | LAMP: порт |
| RISK_CHECKER_LAMP_TLS | boolean | нет | false | LAMP: использовать защищенное соединение или нет |
| RISK_CHECKER_LAMP_TLS_CERTIFICATE | string | нет | LAMP: путь файла с сертификатом для защищенного подключения | |
| RISK_CHECKER_LAMP_TLS_PRIVATE_KEY | string | нет | LAMP: путь файла с приватным ключем для защищенного подключения | |
| RISK_CHECKER_LAMP_TLS_ROOT_TRUSTED_CERTS | string | нет | LAMP: путь файла с центром сертификации (Certification Authority, CA) для защищенного подключения | |
| RISK_CHECKER_LAMP_TIMEOUT | duration string | нет | 1 minute | LAMP: таймаут отправки сообщения и получения результатов |
| RISK_CHECKER_LAMP_MAX_MESSAGE_SIZE | int | нет | 524288000 | LAMP: максимальный допустимый размер сообщений |
| RISK_CHECKER_FS_URI | url string | нет | http://localhost:9000 | Адрес S3 файлового хранилища minio |
| RISK_CHECKER_FS_ACCESS_KEY_ID | string | нет | minioadmin | Идентификатор доступа к minio |
| RISK_CHECKER_FS_SECRET_ACCESS_KEY | string | нет | minioadmin | Секретный ключ доступа к minio |
| RISK_CHECKER_FS_UPLOAD_PARALLELISM | int | нет | 4 | Параллелизм загрузки файлов в minio |
| RISK_CHECKER_FS_ERIKA_TEMPLATE_BUCKET | string | нет | erika-templates | Название бакета в minio для erika шаблонов |
Список команд сервиса risk-checker
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе предусмотрены следующие команды:
- Список рисков с указанными ID
- Список сущностей с указанными ID
- Анализ документа
- Выгрузка по анализу документа
- Синхронизация всех данных
ListRisksByIds
На входе список ID рисков
[
"7ec0f476-fbf8-4913-897f-4129ea3727db",
"d37b08c7-b3bb-48af-b93b-31d976302a3a"
]
На выходе список рисков
[
{
"id": "d37b08c7-b3bb-48af-b93b-31d976302a3a",
"riskType": "Simple",
"name": "Simple Risk 1",
"code": "Risk code",
"degreeId": "3876a56b-5b8b-4f30-ae74-a19c4537e233",
"documentTypeId": "5d4e8e36-1024-4ee8-a4b6-1d8d8dcf8c40",
"documentSubjectId": "a4c96e71-9872-4b9e-9345-419dff2dd3e3",
"calculationTypeId": "acfac69f-e02d-4ba6-a19a-f81e01f4a3e5",
"entityIds": [
"290d4199-4f18-42e3-8441-21cd03a8f939"
],
"found": false,
"recommendation": "Recommend",
"checklistRequirement": null,
"checklistName": null,
"checklistSection": null,
"included": true,
"version": 1
},
{
"id": "7ec0f476-fbf8-4913-897f-4129ea3727db",
"riskType": "Complex",
"name": "Complex Risk 1",
"code": "Other risk code",
"degreeId": "98e56e70-4f3b-4b0a-b2ea-4e5e90efd0f8",
"documentTypeId": null,
"documentSubjectId": null,
"calculationTypeId": null,
"entityIds": [
"e446f944-629c-44f8-9939-f8c606e52a86",
"ed3228e6-0df5-4287-8343-7e57a0f0ae10"
],
"found": null,
"recommendation": "Recommend",
"checklistRequirement": null,
"checklistName": null,
"checklistSection": null,
"included": true,
"version": 1
}
]
Возвращает список рисков с указанными в запросе ID. Могут встречаться риски разных типов. Риски приведены к обобщенному виду.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| riskchecker_http_ListRisksByIds | HTTP POST "/v1/risk/listByIds" |
- На входе: List[UUID]
- На выходе: List[Risk]
ListEntitiesByIds
На входе список ID сущностей
[
"7ec0f476-fbf8-4913-897f-4129ea3727db",
"d37b08c7-b3bb-48af-b93b-31d976302a3a"
]
На выходе список сущностей
[
{
"id": "00704e65-318b-47c0-afe2-9b3213b19e06",
"code": "nerField5",
"name": "Длинное название для сущности",
"projectId": "ae8328ec-700d-423d-8122-f54e77665fea",
"projectName": "Проект в работе с временными рамками (Выделение сущностей + задания (по кол-ву заданий))",
"archived": false,
"version": 1
},
{
"id": "62810e59-cc4b-4fea-b580-8ae016a39537",
"code": "nerField1",
"name": "зеленая сущность",
"projectId": "db7e5b92-7141-46ca-bdc1-b5779255fcb9",
"projectName": "Новый проект с новыми настройками",
"archived": false,
"version": 1
}
]
Возвращает список сущностей с указанными в запросе ID.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| riskchecker_http_ListEntitiesByIds | HTTP POST "/v1/entity/listByIds" |
- На входе: List[UUID]
- На выходе: List[NamedEntity]
GetAnalysis
На входе данные анализируемого документа
{
"url": "somebucket/3a0d88fb-42cf-4171-8feb-ed98c01b2da7",
"documentTypeId": "3a0d88fb-42cf-4171-8feb-ed98c01b2da7",
"documentSubjectId": "3a0d88fb-42cf-4171-8feb-ed98c01b2da7",
"calculationTypeId": "3a0d88fb-42cf-4171-8feb-ed98c01b2da7"
}
На выходе результат анализа
[
{
"id": "4a44b30b-189e-44a7-a9a6-d83a13b18391",
"code": "code1",
"degreeId": "176ba8c5-22de-4532-a289-9bb7c99a08ba",
"recommendation": "Recommendation 1",
"riskType": "Simple",
"entities": [
{
"id": "a4cc8585-2f9a-4cef-94bd-c63349b238c8",
"code": "code11",
"span": {
"start": 15,
"length": 20
},
"found": true
}
]
},
{
"id": "26146d2f-42c9-4601-9123-bc0d831aac62",
"code": "code2",
"degreeId": "dc75c541-96cf-43d2-ad58-9db02cada955",
"recommendation": "Recommendation 2",
"riskType": "Complex",
"entities": [
{
"id": "5ab7eac6-be67-4c5e-98cc-556049bfb981",
"code": "code21",
"span": {
"start": 25,
"length": 10
}
},
{
"id": "8c97549b-7d97-4f85-8eba-dc65636e4382",
"code": "code22",
"span": null
}
]
},
{
"id": "854e1268-64e2-418f-92bb-f1dcdecf07d2",
"code": "code4",
"degreeId": "1a449e18-84e3-46fd-a970-fd1dd632421d",
"recommendation": "Recommendation 4",
"riskType": "Complex",
"entities": []
}
]
Команда запускает процесс анализа документа и возвращает результат. Этот процесс может занимать длительное время, рекомендуется вызывать асинхронно.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| riskchecker_kafka_GetAnalysis | Kafka Topic "risk_checker_commands" |
- На входе: GetAnalysis
- На выходе: List[RiskAnalysis]
ExportAnalysis
На входе результат анализа (с некоторыми изменениями)
{
"fileName": "analysis.pdf",
"risks": [
{
"id": "9f2d4d25-77c3-40ef-be6f-c98f7ace5e5d",
"code": "stub-2",
"name": "Право на одностороннее изменение",
"degreeId": "e843c59c-42d6-45d9-b331-5c89959139b0",
"recommendation": "Убрать право на одностороннее изменение",
"riskType": "Complex",
"entities": [
{
"id": "002715fb-2755-4556-979f-acf511668e4f",
"code": "nerField22",
"span": "kzkzkzkzkkляляляяллялял ляляляляля",
"found": null
},
{
"id": "0e9587f9-1a58-46cc-9120-70081c769895",
"code": "nerField13",
"span": "dfhdfhdfhdf sdgsdg sdf gsd",
"found": null
}
]
}
]
}
На выходе url pdf-файла с выгрузкой
"pdf/b80bd9b1-21e0-4e28-a58e-f695a48d1537"
Команда принимает результат анализа документа и возвращает ссылку на сгенерированный отчет. Входные данные аналогичны результату анализа с одной правкой: в поля "span" нужно указывать конкретные выделенные строки, а не объекты-спаны.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| riskchecker_kafka_ExportAnalysis | Kafka Topic "risk_checker_commands" |
- На входе: AnalysisInput
- На выходе: String
SyncAll
Входные и выходные данные отсутствуют.
Команда синхронизирует данные сервиса, симулируя получение событий из других сервисов. Делается это за счет запроса списков объектов и конвертации их в события. Команда может выполняться очень долго, рекомендуется вызывать асинхронно.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| riskchecker_kafka_SyncAll | Kafka Topic "risk_checker_commands" |
- На входе: ничего
- На выходе: ничего
ApplyRiskMigrations
На входе описание рисков для добавления/обновление (или ничего)
[
{
"riskType": "SimpleRisk",
"name": "test",
"code": "test",
"degreeCode": "riskDegree_low",
"documentTypeCode": "documentType_agreement",
"documentSubjectCode": "documentSubject_contract",
"calculationTypeCode": "mutSettlementsType_expandable",
"entityField": "nerField1",
"found": false,
"recommendation": "none",
"included": false
},
{
"riskType": "ComplexRisk",
"name": "test2",
"code": "test2",
"degreeCode": "riskDegree_low",
"recommendation": "none",
"included": false,
"entityFields": ["nerField1"]
}
]
На выходе список Id рисков
[
"e326cb31-7098-4137-842e-edb0abd3bbc6",
"900f42af-0686-4647-aaa4-dd1e6e9f6023"
]
Сохраняет/обновляет риски в базе по Json со стандартными рисками, или переданному в аргументах Json.
Поддерживается синхронный и асинхронный вызов.
- На входе: RiskMigrationDto
- На выходе список Id рисков
Объекты сервиса
Типы данных, которые принимает на вход команд сервис или возвращает в результате работы команды.
Risk
Обобщенный вид для всех типов рисков.
Возможные типы:
Simple- ПростойComplex- Сложный
В таблице ниже в колонках "Простой" и "Сложный" указано, обязательно ли поле в том или ином типе рисков. Да - обязательно, нет - необязательно, прочерк - отсутствует в рисках данного типа.
| Поле | Тип | Простой | Сложный | Описание |
|---|---|---|---|---|
| id | uuid | да | да | ID риска |
| riskType | string | да | да | Тип риска |
| name | string | да | да | Наименование риска |
| code | string | да | да | Код риска |
| degreeId | uuid | да | да | Степень риска |
| documentTypeId | uuid | да | - | Тип документа |
| documentSubjectId | uuid | да | - | Предмет документа |
| calculationTypeId | uuid | да | - | Вид взаиморасчетов |
| entityIds | uuid[] | да | да | ID сущностей |
| found | boolean | да | - | Найдена или нет |
| recommendation | string | да | да | Рекомендация |
| checklistRequirement | string | нет | нет | Требование чек-листа |
| checklistName | string | нет | нет | Наименование чек-листа |
| checklistSection | string | нет | нет | Раздел чек-листа |
| included | string | да | да | Включен или нет |
NamedEntity
Информация о сущности
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID сущности |
| code | string | да | Код сущности |
| name | string | да | Название сущности |
| projectId | uuid | да | ID проекта |
| projectName | string | да | Название проекта |
GetAnalysis (DTO)
Запрос анализа документа
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| url | string | да | Ссылка на анализируемый файл |
| documentTypeId | string | нет | Тип документа |
| documentSubjectId | string | нет | Предмет документа |
| calculationTypeId | string | нет | Вид взаиморасчетов |
RiskAnalysis
Информация по отдельному риску в результате анализа документа
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID риска |
| code | string | да | Код риска |
| degreeId | uuid | да | Степень риска |
| recommendation | string | да | Рекомендация |
| riskType | string | да | Тип риска |
| entities | AnalysisEntity[] | да | Список сущностей |
AnalysisEntity
Информация о сущности в результате анализа документа
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID сущности |
| code | string | да | Код сущности |
| span | TextSpan | нет | Позиция в тексте |
| found | boolean | нет | Присутствует ли сущность в тексте (только простые риски) |
TextSpan
Позиция сущности в тексте
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| start | int | да | Позиция первого символа сущности от начала текста |
| length | int | да | Длина сущности в символах |
AnalysisInput
Входные данные для отчета по анализу
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fileName | string | да | Имя возвращаемого файла |
| risks | RiskAnalysisInput[] | да | Выделенные риски |
RiskAnalysisInput
Информация по отдельному риску в результате анализа документа (входные данные для отчета)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID риска |
| code | string | да | Код риска |
| degreeId | uuid | да | Степень риска |
| recommendation | string | да | Рекомендация |
| riskType | string | да | Тип риска |
| entities | AnalysisEntityInput[] | да | Список сущностей |
AnalysisEntityInput
Информация о сущности в результате анализа документа (входные данные для отчета)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID сущности |
| code | string | да | Код сущности |
| span | string | нет | Выделенный текст, соответствующий сущности |
| found | boolean | нет | Присутствует ли сущность в тексте (только простые риски) |
RiskMigrationDto
Общие поля:
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| riskType | "SimpleRisk" или "ComplexRisk" | да | Какой тип риска |
| name | string | да | Название риска |
| code | string | да | Код риска |
| degreeCode | string | да | Степень риска |
| recommendation | string | да | Рекомендация |
| checklistRequirement | string | нет | Требование чек-листа |
| checklistName | string | нет | Название чек-листа |
| checklistSection | string | нет | Раздел чек-листа |
| included | boolean | да | Включен или нет |
SimpleRisk:
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| documentTypeCode | string | да | Тип документа |
| documentSubjectCode | string | да | Предмет документа |
| calculationTypeCode | string | да | Вид взаиморасчетов |
| entityField | string | да | Поле именованной сущности |
| found | boolean | да | Присутствует ли сущность в тексте |
ComplexRisk:
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityFields | string[] | да | Поля именованных сущностей |