| Table of Contents |
|---|
Бізнес вимоги:
Система
...
майданчика повинна використовувати централізований
...
endpoint як єдине джерело прав доступу
Усі бізнес-рішення щодо доступу до:
оголошення процедур
...
подання заявок
...
роботи з реєстрами
...
- подачі заяв на об'єкти оренди
...
- створення дій над об'єктами оренди
...
- створення контрактів для Малої та Великої приватизації
- створення викупу для Малої та Великої приватизації
- створення Інфораційних повідомлень для Малої та Великої приватизації
- створення об'єктів для Малої та Великої приватизації
повинні базуватись виключно на даних permissions, отриманих з endpoint.
Майданчик не має права надавати функціональність, яка не підтверджена наявними в endpoind permissions.
Функціональні вимоги
В Prozorro.Sale наявні два endpoints:
- Для отримання загального списку прав і дозволів одразу по всім Майданчикам - https://procedure.prozorro.sale/api/auth/brokers
- Для отримання списку прав і дозволів по одному конкретному Майданчику - https://procedure.prozorro.sale/api/auth/brokers/system/services
- де замість system в запит необхідно підставити owner name Майданчика
Інтеграційні вимоги
- Майданчик повинен виконувати запит до endpoint не рідше ніж 1 раз на добу (наразі о 05:00)
- Майданчик повинен обробляти успішну відповідь та зчитувати всі отримані permissions
- Отримані permissions повинні зберігатись локально для подальшого використання бізнес-логікою та UI
- Система повинна зберігати останню валідну версію permissions у разі тимчасової недоступності endpoint
Валідація permissions
Система повинна перевіряти цілісність структури permissions, зокрема:
наявність ключа
permissionsнаявність секцій
procedures,jobber,registryдопустимі значення (
procedure,bids,object)
У разі виявлення невалідної структури необхідно передати інформацію Prozorro.Sale, наприклад, через запит в Slack Workflow
Приклад валідної структури:
Доступ до процедур
Майданчик має дозволяти оголошення аукціонів організаторами, якщо permissions.procedures.<procedure_name> містить "procedure"
Майданчик має дозволяти подання заявок учасниками, якщо permissions.procedures.<procedure_name> містить "bids"
| Note |
|---|
За відсутності відповідного значення permissions функціональність повинна бути недоступною |
...
на UI, бо вона буде недоступна і на API рівні |
Доступ до дій з Реєстром об’єктів оренди
Майданчик має дозволяти:
Створення Об'єкту оренди, якщо: permissions.registry.object містить "object"
- Створення Дії до об'єкту оренди, якщо: permissions.registry.action містить "object"
- Створення Заяв до об'єкту оренди, якщо: permissions.registry.lease_request містить "object"
Робота з напрямком Приватизації
Доступ до створення Інформаційних повідомлень, контрактів, об'єктів, викупу Малої приватизації
Майданчик має дозволяти:
Створення Об'єкту Малої приватизації, якщо: permissions.registry.asset містить "object"
- Створення Інформаційного повідомлення Малої приватизації, якщо: permissions.jobber.announcement містить "object"
- Створення Викупу Малої приватизації, якщо: permissions.jobber.redemption містить "object"
В разі відсутності у Майданчика permissions.jobber.announcement "object", організатор НЕ може створити Інформаційне Повідомлення та, відповідно, не - НЕ відбудеться автоматичного створення процедури Приватизації
Доступ до створення Інформаційних повідомлень, контрактів, об'єктів, викупу Великої приватизації
Майданчик має дозволяти:
Створення Об'єкту Великої приватизації, якщо: permissions.registry.large_asset містить "object"
- Створення Інформаційного повідомлення Великої приватизації, якщо: permissions.jobber.large_announcement містить "object"
- Створення Викупу Великої приватизації, якщо: permissions.jobber.large_redemption містить "object"
В разі відсутності : permissions.jobber.large_announcement "object", організатор не може створити Інформаційне Повідомлення та, відповідно, не буде автоматичного створення процедури Приватизації
UI та відображення
UI майданчикаповинен динамічно відображати або приховувати функціональність відповідно до permissions
Користувачі не повинні бачити дій, які їм недоступні згідно permissions Майданчика
Обробка змін і відсутніх permissions
У разі неочікуваної зміни permissions Майданчик повинен зафіксувати інцидент та інцидент та менеджмент Майданчика повинен ініціювати звернення через Slack WF (“Приватні запити”)
Нефункціональні вимоги
Обробка permissions не повинна впливати на продуктивність UI
Логіка permissions повинна бути розширюваною для нових напрямків без зміни існуючих UC
Вимоги до помилок і стабільності
У разі недоступності endpoint:
використовується остання валідна версія permissions, яка має локально зберігатись на стороні Майданчика
користувачі не отримують помилок UI
Система не повинна надавати нові доступи без наявності відповідних permissions в endpoint
Сценарії на прикладі
Зʼявилась нова процедура
Передумови
Майданчик успішно пройшов тестування нової процедури (наприклад, landRental-english) у тестовому середовищі Prozorro.Sale та подав заявку на отримання відповідних доступів (permissions)
Кроки
Видача доступів
Після обробки заявки зі сторони Prozorro.Sale Майданчику надаються permissions для роботи з новою процедурою. Результатом виконання буде, наприклад:Реліз на стороні Майданчика
Майданчик розгортає на Prod свою протестовану версію функціоналу, але не активує можливість:створювати процедури
landRental-englishподавати заявки на участь у таких процедурах
Синхронізація permissions
О 05:00 відбувається автоматична синхронізація доступів із endpoint Prozorro.SaleОтримання актуальних прав доступу
Endpoint повертає перелік дозволених напрямків і ролей, зокрема:"landRental-english": [ "procedure", "bids" ]Активація функціоналу
На основі отриманих permissions Майданчик автоматично:вмикає можливість створення процедур
landRental-englishдля Організаторіввідкриває можливість подання заявок для Учасників
Результат
Майданчик отримує повноцінну можливість працювати з новою процедурою як у ролі Організатора, так і Учасника. Весь необхідний функціонал стає доступним без ручних налаштувань.
Майданчик перестав працювати з певним одним напрямком
Передумови
Раніше Майданчик мав доступ до процедури (наприклад, landRental-english) та надавав користувачам відповідний функціонал.
Кроки
Обмеження доступів зі сторони Prozorro.Sale
Prozorro.Sale відкликає permissions для Майданчика щодо конкретного напрямку, наприклад:"landRental-english": []Синхронізація permissions
Під час чергової синхронізації (о 05:00) Майданчик отримує оновлений перелік доступів із endpointВиявлення змін
Система Майданчика фіксує, що дляlandRental-englishбільше немає дозволів:ні на створення процедур (
procedure)ні на подання заявок (
bids)
Деактивація функціоналу
Майданчик автоматично:приховує можливість створення нових процедур
landRental-englishблокує подання нових заявок на участь у таких процедурах
| Info |
|---|
Майданчик продовжує мати можливість працювати з раніше опублікованими Процедурами цього напрямку і з раніше створеними Бідами |
Результат
Майданчик більше не надає функціонал для відповідного напрямку. Робота з цією процедурою припиняється без необхідності ручного втручання.
Майданчик працює з напрямком Приватизації
Передумови
Майданчик успішно пройшов тестування по роботі з Обʼєктами приватизації (Asset), Інформаційними Повідомленням (Announcement, Redemption) та процедури у тестовому середовищі Prozorro.Sale та подав заявку на отримання відповідних доступів (permissions)
Кроки
Видача доступів
Після обробки заявки зі сторони Prozorro.Sale Майданчику надаються permissions для:роботи з Обʼєктами приватизації
- endpoint повертає у відповіді:
Wiki Markup "registry":{ "asset":[ "object" ] }
- endpoint повертає у відповіді:
роботи з Інформаційними Повідомленнями та Викупом
Wiki Markup "jobber":{ "announcement":[ "object" ] }
роботи з новою процедурою. Результатом виконання буде, наприклад:
Wiki Markup "procedure":{ "smallPrivatization-english":[ "bids" ] }
Реліз на стороні Майданчика
Майданчик розгортає на Prod свою протестовану версію функціоналу, але не активує можливість:створювати Обʼєкти Приватизації, ІП, Обʼєкт Викупу та Процедури Приватизації
подавати заявки на участь у таких процедурах
Синхронізація permissions
О 05:00 відбувається автоматична синхронізація доступів із endpoint Prozorro.SaleОтримання актуальних прав доступу
Endpoint повертає перелік дозволених напрямків і ролейАктивація функціоналу
На основі отриманих permissions Майданчик автоматично:вмикає можливість створення сутностей Приватизації
відкриває можливість подання заявок для Учасників
| Note | ||
|---|---|---|
| ||
Для роботи з напрямком Приватизації (Малої і Великої) Майданчику потрібно
Це дозволить Майданчику публікувати Обʼєкти Приватизації в реєстр, але не дозволись створювати Інформаційні Повідомлення або обʼєкти Викупу
Це дозволить Майданчику публікувати Інформаційні Повідомлення Малої чи Великої Приватизації
Це дозволить Майданчику публікувати обʼєкти Викупу Малої чи Великої Приватизації
Це дозволить Майданчику публікувати Заяви на участь для раніше створених процедур Малої чи Великої Приватизації !!! Ручного створення Процедур в напрямку Приватизації не відбувається, тому Майданчикам не видається permission procedure.{{procedure_type}} - "procedure" |
UseCases
Use Case 1. Отримання permissions з системного endpoint
Назва | Отримання permissions з системного endpoint |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Отримано відповідь endpoint або зафіксовано помилку |
Інші вимоги | Endpoint викликається планово (наразі 1 раз на добу о 05:00) |
Use Case 2. Отримання та збереження permissions майданчиком
Назва | Отримання та локальне збереження permissions |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Майданчик має локально доступний перелік permissionspermissions GET /api/platform/cdb/status |
Інші вимоги | Повинна зберігатись попередня версія permissions (за потреби)- |
Use Case 3. Валідація цілісності permissions
Назва | Валідація структури та цілісності permissions |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Permitons Permissions визнані валідними або невалідними |
Інші вимоги | Результат валідації має логуватись- |
Use Case 4. Визначення доступу до оголошення аукціонів
Назва | Визначення права організатора на оголошення аукціонів |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Організатор може або не може створювати аукціони |
Інші вимоги | Логіка повинна застосовуватись для кожного напрямку окремо |
Use Case 5. Визначення доступу до подання заявок (bids)
Назва | Визначення права користувачів на подання заявок |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Учасник може або не може подати заявку |
Інші вимоги | Має узгоджуватись з UI та API |
Use Case 6. Доступ до оголошення JAS і подальшого автоматичного створення процедур SP*
Назва | Визначення доступу до оголошення JAS (Інформаційного повідомлення) |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до SP* процедур дозволено або заборонено |
Інші вимоги |
|
Use Case 7. Доступ до внесення об’єктів у реєстр Малої приватизації (RAS)
Назва | Визначення доступу до внесення об’єктів до реєстру Малої приватизації |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 8. Доступ до створення execution Малої приватизації (RES)
Назва | Визначення доступу до створення execution Малої приватизації |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 9. Доступ до створення redemption Малої приватизації (JRS)
Назва | Визначення доступу до створення redemption Малої приватизації |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 10. Доступ до оголошення JAL і подальшого автоматичного створення процедур LP*
Назва | Визначення доступу до оголошення JAL (Інформаційного повідомлення) |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення JAL дозволено або заборонено |
Інші вимоги |
|
Use Case 11. Доступ до внесення об’єктів до реєстру Великої приватизації (RAL)
Назва | Визначення доступу до внесення об’єктів до реєстру Великої приватизації |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 12. Доступ до створення execution Великої приватизації (REL)
Назва | Визначення доступу до створення executionВеликої приватизації |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 13. Доступ до створення redemption Великої приватизації (JRL)
Назва | Визначення доступу до створення redemption Великої приватизації |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 14. Доступ до внесення об’єктів у реєстр оренди (RGL)
Назва | Визначення доступу до внесення об'єктів до реєстру оренди |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 15. Доступ до створення Дій до об'єктів реєстру оренди (RGLA)
Назва | Визначення доступу до створення Дій до об'єктів реєстру оренди |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 16. Доступ до створення Заяв до об'єктів реєстру оренди (RGLR)
Назва | Визначення доступу до створення Заяв до об'єктів реєстру оренди |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Доступ до створення об'єктів реєстру дозволено або заборонено |
Інші вимоги |
|
Use Case 17. Керування відображенням функціоналу на сайті
Назва | Керування UI відповідно до permissions |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Користувачі бачать лише дозволений функціонал |
Інші вимоги | UI та API мають бути синхронні |
Use Case 18. Обробка відсутніх або змінених permissions
Назва | Ескалація проблем з permissions |
| Актори |
|
Передумови |
|
Основний хід подій (дій) |
|
Альтернативні шляхи, помилки, крайові випадки |
|
Результат (Постумови) | Причина відсутності permissions з’ясована |
Інші вимоги | Всі звернення мають трасуватись |

