Загальна інформація
Цей функціонал необхідний для покращення категоризації процедур, розширення можливостей пошуку процедур за певними критеріями без використання довгих та складних query запитів. В межах даного функціоналу буде додано масив мета-даних в процедуру. Дане поле може бути автогенерованим, може бути змінено через панель адміністратора, може бути заповнено вручну при створенні процедури.
Мета-дані допоможуть у вирішенні бізнесових запитів на вибірку процедур за певними параметрами, які в самій процедурі явно не зазначені. Наприклад, "термінальний статус". Хоча ми і розуміємо бізнесово, що є термінальний статус (статус, який є кінцевим для процедури, незворотнім), система не знає, що таке термінальний статус. Тому коли у бізнеса виникає потреба відобразити всі процедури в термінальних статусах, ми маємо перелічувати необхідні статуси по кожному типу процедури. Таким чином, додавши "термінальний статус" в мета-дані процедури, ми зможемо вирішити це питання як з процедурами, які наразі є в БД, так і з процедурами, які буде створено в майбутньому.
Таким чином можливо вирішувати і категоризацію процедур за необхідності.
User stories
- Як адміністратор, я хочу щоб мета-дані генерувалися автоматично в залежності від заданих умов, щоб в процедуру було додано точні і релевантні значення без необхідності ручного втручання.
- Як адміністратор, я хочу мати можливість додавати мета дані в процедуру, щоб доповнювати мета-дані необхідними значеннями у випадку відсутності автогенерованих значень.
- Як адміністратор, я хочу мати можливість редагувати мета дані, щоб змінювати їх вручну на більш точні та релевантні.
- Як адміністратор порталу, я хочу налаштовувати напрямки роботи згідно мета даних, щоб
- Як користувач порталу, я хочу мати можливість шукати процедури по напрямку роботи в мета-даних, щоб швидко і точно знаходити необхідні мені процедури.
- Як учасник аукціону, я хочу мати можливість знаходити аукціони згідно мета-даних, щоб швидко і точно знаходити необхідні мені аукціони.
Структура мета-даних
В процедури необхідно додати масив meta: []
.
Даний масив буде в собі містити логіку мета-даних. Наприклад:
meta: [ { directions:[ { name: commercialSell }, { name: parking } ], readOnly: true }, { subdirections:[ { name: amber }, { name: customs } ], readOnly: false } ]
Тобто таким чином, мета-дані містять в собі різного типу інформацію, яка буде додаватись згідно бізнес-потреб.
Структурно мета-дані є масивом, який містить в собі дані різного типу. Кожен окремий тип даних додається згідно запиту від бізнеса.
Наприклад, є запит додати в мета-дані directions. Ми створюємо задачу на додавання в мета-дані directions. В задачу входить:
- Описати структуру мета-даних.
- Описати логіку автоматичного додавання мета-даних в процедури.
- Описати чи потрібна можливість редагувати ці дані вручну (чи потрібно додавати команди в адмінку)
- Описати чи потрібно проводити міграцію процедур (чи ми хочемо присвоїти старим процедурам мета-дані згідно описаної логіки)
- Описати де буде використано додані мета-дані.
Directions
Першим, що має бути додано в мета-інформацію - напрямки роботи. Напрямки роботи наразі використовуються на порталі для групування та пошуку процедур. Напрямки роботи розподіляються згідно sellingMethod в процедурі. Необхідно додати дану логіку до процедур.
Список напрямків робот на параметри, за якими потрібно додати напрямки робот до процедур:
name | Data extraction path | Matching | value | опис в dict |
---|---|---|---|---|
subsoil | {{ obj['sellingMethod'] }} | Regexp | subsoil-.* | Продаж спецдозволів на користування надрами |
legacySubsoil-.* | ||||
dgf | {{ obj['sellingMethod'] }} | Regexp | dgf-.* | Продаж активів банків-банкрутів |
nonperformingLoans | {{ obj['sellingMethod'] }} | Regexp | nonperformingLoans-.* | Продаж непрацюючих кредитів держбанків |
arma | {{ obj['sellingMethod'] }} | Regexp | armaProperty-.* | Арештовані активи АРМА |
greenEnergy | {{ obj['sellingMethod'] }} | Regexp | renewables-.* | Зелена енергетика |
largePrivatization | {{ obj['sellingMethod'] }} | Regexp | largePrivatization-.* | Велика приватизація |
landArrested | {{ obj['sellingMethod'] }} | Regexp | landArrested-.* | Арештована земля |
commercialPropertyLease | {{ obj['sellingMethod'] }} | Regexp | commercialPropertyLease-.* | Оренда майна приватних компаній |
commercialSell | {{ obj['sellingMethod'] }} | Regexp | commercialSell-.* | Продаж майна приватних компаній |
simpleSell-withoutAuction | ||||
landSell | {{ obj['sellingMethod'] }} | Regexp | landSell-.* | Продаж землі |
landRental | {{ obj['sellingMethod'] }} | Regexp | landRental-.* | Оренда землі |
railwayCargo | {{ obj['sellingMethod'] }} | Regexp | railwayCargo-.* | Вагони Укрзалізниці |
legacyRailwayCargo | ||||
bankRuptcy | {{ obj['sellingMethod'] }} | Regexp | bankRuptcy-.* | Продаж майна підприємств та осіб, які збанкрутіли |
propertyLease | {{ obj['sellingMethod'] }} | Regexp | regulationsPropertyLease-.* | Оренда майна |
legacyRegulationsPropertyLease-.* | ||||
legitimatePropertyLease | {{ obj['sellingMethod'] }} | Regexp | legitimatePropertyLease-.* | Оренда державного та комунального майна |
legacyLegitimatePropertyLease-.* | ||||
sellOut | {{ obj['sellingMethod'] }} | Regexp | smallPrivatization-.* | Мала приватизація |
legacySmallPrivatization-.* | ||||
alienation | {{ obj['sellingMethod'] }} | Regexp | alienation-.* | Продаж майна державних компаній |
timber | {{ obj['sellingMethod'] }} | Regexp | timber-.* | Продаж необробленої деревини |
legacyTimber-.* | ||||
otherAssets | {{ obj['sellingMethod'] }} | Regexp | basicSell-.* | Продаж майна |
legacyBasicSell-.* |
За правилами вище необхідно додати в мета-дані процедури directions.
У однієї процедури може бути декілька directions.
Не потрібно робити можливість обирати direction вручну організатором / майданчиком. Для панелі адміністратора необхідно додати команду зміни directions.
Auction type
Для того, щоб скоротити логіку в шаблонах на порталі, необхідно додати в мета інформацію тип аукціона:
name | Data extraction path | Matching | value | опис в dict |
---|---|---|---|---|
english | sellingMethod | Regexp | .*-english(-.*)?$ | Трираундовий англійський аукціон |
dutch | sellingMethod | Regexp | .*-dutch(-.*)?$ | Гібридний голландський аукціон |
priorityEnglish | sellingMethod | Regexp | .*-priorityEnglish(-.*)?$ | Трираундовий англійський аукціон із переважним правом |
multiAwards | sellingMethod | Regexp | .*-multiAwards(-.*)?$ | Аукціон із декількома переможцями |
withoutAuction | sellingMethod | Regexp | .*-withoutAuction(-.*)?$ | Продаж без аукціону |
sellingMethod | Not contain | ^simpleSell-withoutAuction(-.*)?$ | ||
closedAuctionBids | sellingMethod | Contain | ^simpleSell-withoutAuction(-.*)?$ | Аукціон із закритими ціновими пропозиціями |
infinity | sellingMethod | Contain | ^commercialSell-infinity(-.*)?$ | Нескінчений аукціон |
У однієї процедури може бути тільки один auctionType.
Не потрібно робити можливість обирати auctionType вручну. Для панелі адміністратора необхідно додати команду зміни auctionType.
Subdirections
Піднапрямки роботи. Ще один елемент мета-даних в процедурі, який відповідає за визначення піднапрямків роботи. Покликаний вирішити проблему запуску продажу різних типів майна на базі інших процедур. Наприклад, на базі процедури BSE продаються парковки, на базі процедури LRE здаються в суборенду земельні ділянки через Зембанк.
Для subdirections необхідно додати опціонально можливість організатору обирати піднапрямок роботи.
Панель адміністратора
Ключова відмінність від direction та auctionType є те, що subdirections мають налаштовуватись через панель адміністратора.
Загальний процес:
- Новий subdirection створюється через панель адміністратора.
- Для нового subdirection вказуються параметри, за якими необхідно додавати його до процедур
- Зберігаються зміни
- Через розробку додається логіка в код, за якою subdirection буде додаватися до процедур.
- Якщо subdirection необхідно додати до вже існуючих процедур, в такому випадку міграції будемо виконувати через окрему задачу на розробку.
Створення subdirection
Для створення subdirection необхідно вказати наступні параметри:
- name
- description (має додаватись в словник)
- додати фільтра для процедур
- обрати тип фільтру (and / or)
- поле з процедури для фільтрації
- Matching
- Equal
- Not equal
- Regexp
- Contain
- Not contain
- value
- parent subdirection
В рамках одного subdirection можна додати декілька фільтрів. Так само в рамках одного фільтра можна задати декілька параметрів. По аналогії з налаштуванням відображення даних на порталі.
Parent subdirection - для того, щоб мати можливість створювати декілька рівнів вкладеності, необхідно надати можливість при створенні обирати батьківський subdirection. Реалізація по аналогії з категоріями в функціоналі довіднику.
Якщо у subdirection є parent, в такому випадку має застосовуватись логіка не тільки самого subdirection, але і батьківського.
Наприклад, маємо два subdirection: fish, де прописано фільтр sellingEntity.identifier.id == 14360570, також є subdirection saltwater, для якого прописано фільтр items.classification.id == 77700000-7. В такому випадку для всіх процедур з зазначеним ЄДРПОУ буде додано subdirection fish, а для процедур з класифікатором 77700000-7 буде додано subdirection saltwater.
Створення subdirection
Необхідно додати можливість редагувати subdirection, який було створено. Після редагування зробити міграцію потрібно лише за наявності задачі на розробку. Якщо цього не прописано, в такому в задачі буде прописана лише зміна логіки згідно відредагованим параметрам в адмінці.
Приклади
Приклади було взято з білінгу, порталу.
name | child | Data extraction path | Matching | value | опис в dict |
---|---|---|---|---|---|
customs | |||||
parkinglots | |||||
sublandrental | |||||
privatbank | |||||
sellingEntity.identifier.id | = | 14360570 | |||
attractions | |||||
fish | seafish | ||||
riverfish | |||||
oceanfish | |||||
jewelery | amber | ||||
diamond | |||||