...
Код | Текст | Пояснення |
1 | Could not authenticate you або Authentication credentials were not provided | Помилка аутентифікації. |
2 | Invalid or expired token | Недіючий або некоректний токен. |
3 | Your account is not permitted to access this resource | Відповідь надається разом із HTTP статусом 403. Користувач, з використанням токену якого було виконано аутентифікацію, не має достатніх прав для виконання запиту. |
4 | Sorry, that page does not exist | Відповідь надається разом із HTTP статусом 404. Сторінка до якої виконується запит не знайдена. |
5 | Paiment required | Відповідь надається разом із HTTP статусом 402. Недостатньо коштів для виконання платного запиту. |
6 | Parse Error або `search_date` has wrong format | Відповідь надається разом із HTTP статусом 400. Не правильний формат одного або декількох параметрів запиту. |
9 | Rate limit exceeded | Відповідь надається разом із HTTP статусом 429. Вичерпано кількість запитів, дозволених виконати протягом проміжку часу. |
10 | `code` or `passport` parameter must be provided. | У запиті не надано параметрів необхідних для виконання пошуку. |
11 | `passport` parameter has wrong value. | Один або більше параметрів запиту має невірний формат. |
20 | Internal error | Відповідь надається разом із HTTP статусом 500. |
Правила обробки помилок
| HTTP code | Дія системи |
|---|---|
| 400 | Slack alert, дані не записуються |
| 401 | Slack alert, спроба оновити token |
| 402 | Slack alert, дані не записуються |
| 403 | Slack alert, дані не записуються |
| 404 | Slack alert, дані не записуються |
| 406 | Slack alert, дані не записуються |
| 429 | Slack alert, дані не записуються |
| 500 | Retry до 3 разів |
| 502 | Retry до 3 разів |
User Story 1
| Як | ЦБД Prozorro.Sale |
| я хочу | автоматично отримувати та зберігати інформацію про кінцевих бенефіціарних власників (КБВ) з ЄДР при створенні award |
| щоб | забезпечити актуальність, централізацію та зменшити залежність від ручного введення даних |
USE CASE 1 — Успішне отримання та збереження КБВ
Назва | Отримання та запис КБВ з ЄДР в award |
| Актори |
|
| Передумови |
|
| Основний сценарій |
|
| Результат | award містить список КБВ (може бути декілька) |
Acceptance Criteria
1 | Given | Всі умови виконані |
When | Створюється award | |
Then | Відправляється запит до ЄДР | |
2 | Given | ЄДР повернув валідні дані |
When | Дані проходять валідацію | |
Then | Вони записуються в award.beneficiaries | |
3 | Given | Дані записані |
Then | оновлюються всі dateModified:
|
...
USE CASE 2 — Дані не можуть бути внесені
Назва | Відмова у записі КБВ |
| Актори |
|
| Передумови | Отримано HTTP код: |
| Основний сценарій |
|
| Результат | award без змін |
Acceptance Criteria
1 | Given | Дані не відповідають моделі |
When | Виконується валідація | |
Then | Дані не записуються |
...
USE CASE 3 — Retry при помилках 500 / 502
Назва | Повторна спроба отримання даних |
| Актори |
|
| Передумови | Отримано HTTP код: |
| Основний сценарій |
|
| Альтернативний сценарій | після 3 невдалих спроб → fallback |
| Результат |
|
Acceptance Criteria
1 | Given | Отримано 500/502 |
When | Виконується retry | |
Then | Система повторює запит до 3 разів | |
2 | Given | Всі retry невдалі |
Then | Записується повідомлення: |
...
USE CASE 4 — Логування помилок в Slack
Назва | Моніторинг інтеграції з ЄДР |
| Актори |
|
| Передумови |
|
| Основний сценарій |
|
| Результат |
|
Acceptance Criteria
1 | Given | Отримано помилку зі списку |
When | Обробляється відповідь | |
Then | Відправляється повідомлення в Slack |
...
USE CASE 5 — Інтеграція не запускається
Назва | Неініціювання запиту до ЄДР |
| Актори |
|
| Передумови | Будь-яка з умов НЕ виконується:
|
| Основний сценарій |
|
| Результат | Жодних запитів до ЄДР |
Acceptance Criteria
1 | Given | Умови не виконані |
When | Створюється award | |
Then | запит до ЄДР не виконується |
...
USE CASE 6 — Обробка множинних КБВ
Назва | Запис кількох бенефіціарів |
| Актори |
|
| Передумови |
|
| Основний сценарій |
|
| Результат | Збережено всі КБВ |
Acceptance Criteria
Acceptance Criteria
1 | Given | ЄДР повертає кілька КБВ |
When | Відбувається запис | |
Then | Всі КБВ зберігаються в масиві |
User Story 2
| Як | ЦБД Prozorro.Sale |
| я хочу | зупиняти направлення запитів до ЄДР після першого отримання помилки 402 або 429 |
| щоб | не створювати зайве навантаження на сервіс, не витрачати ліміти та уникати повторних неуспішних запитів до моменту відновлення доступу/поповнення коштів. |
| додатково | Після внесення коштів або відновлення ліміту система має відновити направлення запитів до ЄДР. |
USE CASE 1 — Зупинка запитів після отримання 402
Назва | Отримання та запис КБВ з ЄДР в award |
| Актори |
|
| Передумови |
|
| Основний сценарій |
|
| Результат | award містить список КБВ (може бути декілька) |
Acceptance Criteria
1 | Given | Всі умови виконані |
When | Створюється award | |
Then | Відправляється запит до ЄДР | |
2 | Given | ЄДР повернув валідні дані |
When | Дані проходять валідацію | |
Then | Вони записуються в award.beneficiaries | |
3 | Given | Дані записані |
Then | оновлюються всі dateModified:
|
Use Case 1 —
Назва
Автоматичне призупинення інтеграції з ЄДР при помилці 402 Payment Required
Актори
- ЦБД
- ЄДР
- Адміністратор/відповідальна команда
- Slack канал
Передумови
- Інтеграція з ЄДР активна
- ЦБД направляє запит до ЄДР для отримання даних КБВ
- ЄДР повертає HTTP
402 - У вимогах уже передбачено фіксацію таких помилок у Slack.
Основний сценарій
- ЦБД направляє запит до ЄДР.
- ЄДР повертає відповідь
402 Payment Required. - ЦБД фіксує факт отримання помилки.
- ЦБД змінює внутрішній статус інтеграції з ЄДР на умовний:
suspended;- або
payment_required; - або
temporarily_disabled.
- ЦБД припиняє направлення нових запитів до ЄДР.
- ЦБД відправляє повідомлення в Slack канал.
- Для нових awards, які підпадають під умови інтеграції, запит до ЄДР не виконується.
- У відповідному полі/технічному статусі фіксується причина:
Запити до ЄДР тимчасово призупинено через необхідність оплати.
Результат
- Нові запити до ЄДР не направляються.
- Команда отримала повідомлення про необхідність внесення коштів.
- Дані КБВ для нових awards тимчасово не збагачуються.
Acceptance Criteria
AC1
Given ЦБД отримала від ЄДР відповідь 402
When система обробляє відповідь
Then інтеграція з ЄДР переходить у статус призупинення.
AC2
Given інтеграція має статус призупинення через 402
When створюється новий award, який відповідає умовам інтеграції
Then ЦБД не направляє запит до ЄДР.
AC3
Given отримано 402
When система фіксує помилку
Then повідомлення надсилається в Slack канал.
...
Use Case 2 — Зупинка запитів після отримання 429
Назва
Автоматичне призупинення інтеграції з ЄДР при помилці 429 Many Requests
Актори
- ЦБД
- ЄДР
- Slack канал
- Адміністратор/відповідальна команда
Передумови
- Інтеграція з ЄДР активна
- ЦБД направляє запит до ЄДР
- ЄДР повертає HTTP
429 429означає, що вичерпано обмеження запитів до ресурсу.
Основний сценарій
- ЦБД направляє запит до ЄДР.
- ЄДР повертає відповідь
429 Many Requests. - ЦБД фіксує помилку.
- ЦБД призупиняє направлення нових запитів до ЄДР.
- ЦБД відправляє повідомлення в Slack канал.
- Нові awards, які підпадають під інтеграцію, не ініціюють запит до ЄДР.
- Система фіксує причину призупинення:
Перевищено ліміт запитів до ЄДР.
Результат
- Інтеграція тимчасово зупинена.
- Нові запити до ЄДР не виконуються.
- Команда повідомлена про перевищення ліміту.
Acceptance Criteria
AC1
Given ЦБД отримала відповідь 429
When система обробляє відповідь
Then направлення нових запитів до ЄДР зупиняється.
AC2
Given інтеграція призупинена через 429
When створюється новий award
Then ЦБД не направляє запит до ЄДР.
AC3
Given отримано 429
When система обробляє помилку
Then повідомлення надсилається в Slack канал.
...
Use Case 3 — Відновлення запитів після внесення коштів
Назва
Ручне або автоматичне відновлення інтеграції з ЄДР після внесення коштів
Актори
- Адміністратор/відповідальна команда
- ЦБД
- ЄДР
Передумови
- Інтеграція з ЄДР була призупинена через
402 - Кошти внесено / доступ до сервісу відновлено
Основний сценарій
- Відповідальна команда вносить кошти.
- Адміністратор ініціює відновлення інтеграції.
- ЦБД змінює статус інтеграції з:
payment_required/suspended- на
active.
- ЦБД відновлює направлення запитів до ЄДР.
- При створенні наступного award ЦБД знову виконує стандартну логіку запиту до ЄДР.
- Якщо ЄДР повертає
200, дані КБВ обробляються та записуються вaward.
Результат
- Інтеграція з ЄДР активна.
- Нові запити знову направляються.
- Дані КБВ можуть бути отримані та внесені в award.
Acceptance Criteria
AC1
Given інтеграція призупинена через 402
And кошти внесено
When адміністратор активує інтеграцію
Then статус інтеграції змінюється на active.
AC2
Given інтеграція активна після відновлення
When створюється новий award
Then ЦБД направляє запит до ЄДР.
AC3
Given ЄДР після відновлення повертає 200
When ЦБД отримує валідні дані
Then дані записуються в award.beneficiaries.
...
Use Case 4 — Відновлення після вичерпання ліміту запитів
Назва
Відновлення інтеграції після помилки 429
Актори
- ЦБД
- Адміністратор/відповідальна команда
- ЄДР
Передумови
- Інтеграція була призупинена через
429 - Ліміт запитів поновлено або відповідальна команда підтвердила можливість повторного використання сервісу
Основний сценарій
- Відповідальна команда перевіряє, що ліміт запитів відновлено.
- Адміністратор активує інтеграцію.
- ЦБД змінює статус інтеграції на
active. - Наступні awards знову запускають запит до ЄДР.
- Якщо ЄДР повертає успішну відповідь — дані обробляються за стандартним сценарієм.
Результат
- Запити до ЄДР відновлені.
- Система продовжує автоматичне збагачення awards даними КБВ.
Acceptance Criteria
AC1
Given інтеграція призупинена через 429
When ліміт запитів відновлено
And адміністратор активує інтеграцію
Then ЦБД знову направляє запити до ЄДР.
AC2
Given інтеграція активована після 429
When створюється award
Then запит до ЄДР виконується.
...
Додаткове бізнес-правило для ТЗ
Рекомендовані статуси інтеграції
| Статус | Опис |
|---|---|
active | Запити до ЄДР виконуються |
payment_required | Отримано 402, запити зупинено |
rate_limit_exceeded | Отримано 429, запити зупинено |
suspended | Загальний статус призупинення |
restored | Інтеграцію відновлено |
...
Ключові бізнес-правила (дуже важливо)
- Інтеграція тригериться тільки при створенні award
- Запит асинхронний
- Дані записуються тільки якщо валідні
- Запис — атомарний (все або нічого)
- Можливі декілька КБВ
- Retry тільки для:
- 500
- 502
- Slack alert тільки для:
- 4xx + 429
- Fallback текст при недоступності ЄДР
- У разі отримання першої відповіді від ЄДР з HTTP статусом 402 або 429 ЦБД має призупинити направлення всіх наступних запитів до сервісу ЄДР до моменту ручного або автоматичного відновлення інтеграції після внесення коштів / відновлення ліміту.