January 27, 2025

Тестовое задание (bpmn, Sequence диаграмма, методы и эндпоинты REST API)

Задача 1. Требуется сформировать модель процесса в нотации bpmn

1. Партнер может зарегистрироваться в интернет магазине как продавец на сайте магазина. При регистрации на сайте магазина открывается Форма, доступная к заполнению в течение 3-х часов, если в течении 3-х часов Форма не будет отправлена на согласование -сайт направляет партнера на стартовую страницу.

2. После отправки на согласование Формы -она направляется на согласование СБ.

3. Специалист СБ анализирует полученные Форму и принимает решение о допуске партнера как продавца в магазин.

4. В случае отклонения Формы – она блокируется и партнеру приходит уведомление.

5. В случае согласования Формы - дальнейшие действия осуществляются в соответствии с процессом «Присвоение номера партнера». Партнеру приходит уведомление.

6. При получении уведомления об успешном согласовании Формы и присвоения норма -партнеру приходит уведомление и становится доступен выбор типа договора.

7. При выборе типа договора А – запускается процесс «Оплата обеспечительного платежа»

8. В ходе процесса «Оплата обеспечительного платежа» контролируется наличие у партнера ряда документов Контролером - делопроизводителем. В случае, если какого-то из стандартного списка документов не хватает - Контролер – делопроизводитель связывается со Специалистом поддержки партнеров для обеспечения получения необходимых документов. По их получения – процесс продолжается. Срок получения документов - 30 календарных дней. Если по истечению этого срока документы не предоставляются – весь процесс завершается. Партнеру приходит уведомление.

9. Также срок оплаты обеспечительного платежа по процессу «Оплата обеспечительного платежа» составляет 30 календарных дней. Если по истечению этого срока платеж не производится – весь процесс завершается. Партнеру приходит уведомление.

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

11. При выборе типа договора В – партнеру на сайте доступен типовой договор В для подписания Электронной цифровой подписью.

12. По результатам подписания договора партнеру доступен на сайте личный кабинет продавца магазины- партнер зарегистрирован в интернет магазине как продавец.

13. Данные о сроках регистрации в интернет магазине партнеров как продавцов и дереве потерь анализируются -Аналитиком данных в Отчете Портал\Партнеры в ИС Qlik Science

Примечание: продукт процесса – регистрация партнера в интернет магазине как продавца на сайте магазина

Прикреплю отдельным файлом свое решение. Жду ваших в личку или сюда. Совет от души: не используйте Camunda. Там невозможно расширять блоки с задачами. Все получается очень скомкано и не очень читаемо. Советую: stormbpmn.com

Задача 2. Требуется смоделировать Sequence диаграмму

Клиент на сайте клиента оставляет обращение, оно направляется rest интеграцией во внутренний портал клиентского сервиса компании, далее сотрудник клиентского сервиса может: 1) определить что обращение спам 2) ответить на обращение 3) направить запрос в смежную службу, переведя обращение в статус ожидание и по результатам ответа смежной службы ответить на обращение

Вот решение:

Очень плохой скилл по sequence-диаграммам у меня. Вот список статей, которые смогут вам помочь:

https://habr.com/ru/articles/814769/

https://practicum.yandex.ru/blog/sequence-diagram/ Сама же пообещала себе, что следующая тема, по которой я напишу подробную статью - разбор Sequence-диаграмм.

Задача 3. Требуется предложить методы и эндпоинты REST API для операций:

Есть приложение для организации путешествий: бронирование билетов, отелей, экскурсий.

·        Изменение данных пользователя в личном кабинете

·        Создать бронь с авиабилетами

·        Получить данные о брони с авиабилетами

·        Изменить данные о брони с билетами

Вот решение:

1. Изменение данных пользователя в личном кабинете
Метод: PUT (полная замена) или PATCH (для частичного изменения)
Эндпоинт: /api/users/{userId}

Например, URL: /api/users/123
джейсонина:
{
"email": "newemail@example.com",
"phone": "+79647422052",
"preferences": {
"language": "en",
"currency": "USD"
}
}

2. Создать бронь с авиабилетами
Метод: POST
Эндпоинт: /api/bookings/flights

Например, URL: /api/bookings/flights
джейсонина:
{
"userId": 123,
"flightDetails": {
"departure": "MSK",
"destination": "IRK",
"departureDate": "2025-02-01",
"returnDate": "2025-02-15",
"passengers": [
{
"name": "Mariia Boniachuk",
"age": 23,
"passportNumber": "2515 366118"
}
]
},
"payment": {
"method": "credit_card",
"cardDetails": {
"cardNumber": "1234567812345678",
"expiryDate": "12/36",
"cvv": "123"
}
}
}

3. Получить данные о брони с авиабилетами
Метод: GET
Эндпоинт: /api/bookings/flights/{bookingId}

Например, /api/bookings/flights/123
джейсонина:
{
"bookingId": 123,
"userId": 123,
"flightDetails": {
"departure": "MSK",
"destination": "IRK",
"departureDate": "2025-02-01",
"returnDate": "2025-02-15",
"passengers": [
{
"name": "Mariia Boniachuk",
"age": 23,
"passportNumber": "1234567812345678"
}
]
},
"status": "confirmed",
"paymentStatus": "paid"
}

4. Изменить данные о брони с билетами
Метод: PUT (полная замена) или PATCH (для частичного изменения)
Эндпоинт: /api/bookings/flights/{bookingId}

Например, /api/bookings/flights/123
джейсонина:
{
"flightDetails": {
"returnDate": "2025-02-20"
},
"passengers": [
{
"name": "Mariia Boniachuk",
"age": 23,
"passportNumber": "1234567812345678"
},
{
"name": "Sofiia Boniachuk",
"age": 35,
"passportNumber": "1234567898765677"
}
]
}