Загальна інформація
Цей функціонал необхідний для покращення категоризації процедур, розширення можливостей пошуку процедур за певними критеріями без використання довгих та складних query запитів. В межах даного функціоналу буде додано масив мета-даних в процедуру. Дане поле може бути автогенерованим, може бути змінено через панель адміністратора, може бути заповнено вручну при створенні процедури.
Мета-дані допоможуть у вирішенні бізнесових запитів на вибірку процедур за певними параметрами, які в самій процедурі явно не зазначені. Наприклад, "термінальний статус". Хоча ми і розуміємо бізнесово, що є термінальний статус (статус, який є кінцевим для процедури, незворотнім), система не знає, що таке термінальний статус. Тому коли у бізнеса виникає потреба відобразити всі процедури в термінальних статусах, ми маємо перелічувати необхідні статуси по кожному типу процедури. Таким чином, додавши "термінальний статус" в мета-дані процедури, ми зможемо вирішити це питання як з процедурами, які наразі є в БД, так і з процедурами, які буде створено в майбутньому.
Таким чином можливо вирішувати і категоризацію процедур за необхідності.
User stories
- Як адміністратор, я хочу щоб мета-дані генерувалися автоматично в залежності від заданих умов, щоб в процедуру було додано точні і релевантні значення без необхідності ручного втручання.
- Як адміністратор, я хочу мати можливість додавати мета дані в процедуру, щоб доповнювати мета-дані необхідними значеннями у випадку відсутності автогенерованих значень.
- Як адміністратор, я хочу мати можливість редагувати мета дані, щоб змінювати їх вручну на більш точні та релевантні.
- Як адміністратор порталу, я хочу налаштовувати напрямки роботи згідно мета даних, щоб
- Як користувач порталу, я хочу мати можливість шукати процедури по напрямку роботи в мета-даних, щоб швидко і точно знаходити необхідні мені процедури.
- Як учасник аукціону, я хочу мати можливість знаходити аукціони згідно мета-даних, щоб швидко і точно знаходити необхідні мені аукціони.
Структура мета-даних
В процедури необхідно додати масив meta: []
.
Даний масив буде в собі містити логіку мета-даних. Наприклад:
meta: [ { directions:[ { name: basicSell } ] }, { category:[ { name: freshwater, parent: fish } ] }, { auctionType:[ { name: english } ] } ]
Тобто таким чином, мета-дані містять в собі різного типу інформацію, яка буде додаватись згідно бізнес-потреб.
Структурно мета-дані є масивом, який містить в собі дані різного типу. Кожен окремий тип даних додається згідно запиту від бізнеса.
Наприклад, є запит додати в мета-дані directions. Ми створюємо задачу на додавання в мета-дані directions. В задачу входить:
- Описати структуру мета-даних.
- Описати логіку автоматичного додавання мета-даних в процедури.
- Описати чи потрібна можливість редагувати ці дані вручну (чи потрібно додавати команди в адмінку)
- Описати чи потрібно проводити міграцію процедур (чи ми хочемо присвоїти старим процедурам мета-дані згідно описаної логіки)
- Описати де буде використано додані мета-дані.
Directions
Першим, що має бути додано в мета-інформацію - напрямки роботи. Напрямки роботи наразі використовуються на порталі для групування та пошуку процедур. Напрямки роботи розподіляються згідно sellingMethod в процедурі. Необхідно додати дану логіку до процедур.
Список напрямків робот на параметри, за якими потрібно додати напрямки робот до процедур:
name | Data extraction path | Matching | value | опис в dict |
---|---|---|---|---|
subsoil | sellingMethod | Regexp | subsoil-.* | Продаж спецдозволів на користування надрами |
legacySubsoil-.* | ||||
dgf | sellingMethod | Regexp | dgf-.* | Продаж активів банків-банкрутів |
nonperformingLoans | sellingMethod | Regexp | nonperformingLoans-.* | Продаж непрацюючих кредитів держбанків |
arma | sellingMethod | Regexp | armaProperty-.* | Арештовані активи АРМА |
greenEnergy | sellingMethod | Regexp | renewables-.* | Зелена енергетика |
largePrivatization | sellingMethod | Regexp | largePrivatization-.* | Велика приватизація |
landArrested | sellingMethod | Regexp | landArrested-.* | Арештована земля |
commercialPropertyLease | sellingMethod | Regexp | commercialPropertyLease-.* | Оренда майна приватних компаній |
commercialSell | sellingMethod | Regexp | commercialSell-.* | Продаж майна приватних компаній |
sellingMethod | simpleSell-withoutAuction | |||
landSell | sellingMethod | Regexp | landSell-.* | Продаж землі |
landRental | sellingMethod | Regexp | landRental-.* | Оренда землі |
railwayCargo | sellingMethod | Regexp | railwayCargo-.* | Вагони Укрзалізниці |
legacyRailwayCargo | ||||
bankRuptcy | sellingMethod | Regexp | bankRuptcy-.* | Продаж майна підприємств та осіб, які збанкрутіли |
propertyLease | sellingMethod | Regexp | regulationsPropertyLease-.* | Оренда майна |
legacyRegulationsPropertyLease-.* | ||||
legitimatePropertyLease | sellingMethod | Regexp | legitimatePropertyLease-.* | Оренда державного та комунального майна |
legacyLegitimatePropertyLease-.* | ||||
sellOut | sellingMethod | Regexp | smallPrivatization-.* | Мала приватизація |
legacySmallPrivatization-.* | ||||
alienation | sellingMethod | Regexp | alienation-.* | Продаж майна державних компаній |
timber | sellingMethod | Regexp | timber-.* | Продаж необробленої деревини |
legacyTimber-.* | ||||
otherAssets | sellingMethod | Regexp | basicSell-.* | Продаж майна |
legacyBasicSell-.* |
За правилами вище необхідно додати в мета-дані процедури directions.
У однієї процедури може бути декілька directions.
Не потрібно робити можливість обирати direction вручну організатором / майданчиком. Для панелі адміністратора необхідно додати команду зміни directions.
Панель адміністратора
В панелі адміністратора необхідно реалізувати можливість редагувати directions для процедур. Для цього потрібно використати стандартний пошук процедур як в інших командах.
Необхідно відобразити наступні поля:
- Поточні directions. Якщо його немає, відобразити порожнє значення.
- Причину редагування (має бути записана в логи)
- created at
- created by
Також має бути можливість додавати 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.
Панель адміністратора
В панелі адміністратора необхідно реалізувати можливість редагувати auctionType для процедур. Для цього потрібно використати стандартний пошук процедур як в інших командах.
Необхідно відобразити наступні поля:
- Поточний auctionType. Якщо його немає, в такому випадку відобразити порожнє значення.
- Причину редагування (має бути записана в логи)
- created at
- created by
Також має бути можливість додавати auctionType. Пропоную зробити в такому вигляді:
Таким чином можна буде керувати auctionType в процедурі. Якщо значення порожнє, відобразити "select" як плейсхолдер. Якщо користувач щось обирає, в подальшому у користувача не має бути можливості повернутися назад до стану плейсхолдера.
У процедури не може не бути auctionType.
Category
Піднапрямки роботи. Ще один елемент мета-даних в процедурі, який відповідає за визначення піднапрямків роботи. Покликаний вирішити проблему запуску продажу різних типів майна на базі інших процедур. Наприклад, на базі процедури BSE продаються парковки, на базі процедури LRE здаються в суборенду земельні ділянки через Зембанк.
В одній процедурі може бути декілька categories.
Для categories необхідно додати опціонально можливість організатору обирати піднапрямок роботи.
Панель адміністратора (керування безпосередньо categories, не зв'язок з процедурою)
Ключова відмінність від direction та auctionType є те, що categories мають налаштовуватись через панель адміністратора.
Загальний процес:
- Зберігаються зміни
- Через розробку додається логіка в код, за якою category буде додаватися до процедур. Для створення нової category потрібно прописати параметри, за якими будуть додаватись категорії до процедур.
- Якщо category необхідно додати до вже існуючих процедур, в такому випадку міграції будемо виконувати через окрему задачу на розробку.
Створення category
Для створення category необхідно вказати наступні параметри:
- name
- description (має додаватись в словник)
- додати фільтра для процедур
- обрати тип фільтру (and / or)
- поле з процедури для фільтрації
- Matching
- Equal
- Not equal
- Regexp
- Contain
- Not contain
- value
- parent category
В рамках одного category можна додати декілька фільтрів. Так само в рамках одного фільтра можна задати декілька параметрів. По аналогії з налаштуванням відображення даних на порталі.
Parent category- для того, щоб мати можливість створювати декілька рівнів вкладеності, необхідно надати можливість при створенні обирати батьківський category. Реалізація по аналогії з категоріями в функціоналі довіднику.
Якщо у category є parent, в такому випадку має застосовуватись логіка не тільки самого category, але і батьківського.
Наприклад, маємо два category: fish, де прописано фільтр sellingEntity.identifier.id == 37472282, також є category saltwater, для якого прописано фільтр items.classification.id == 77700000-7. В такому випадку для всіх процедур з зазначеним ЄДРПОУ буде додано category fish, а для процедур з класифікатором 77700000-7 буде додано category saltwater.
Редагування category
Необхідно додати можливість редагувати category, який було створено.
Для редагування мають бути доступні наступні поля:
- name
- description
- фільтра
- parent category
Після редагування зробити міграцію потрібно лише за наявності задачі на розробку. Якщо цього не прописано, в такому в задачі буде прописана лише зміна логіки згідно відредагованим параметрам в адмінці.
Приклади
Приклади було взято з білінгу, порталу.
За посиланням доступна табличка, яка містить в собі категорії для порівняння. Дана табличка містить назву категорії (name), sellingMethod, classificator та опис.
Умови присвоєння категорії знаходяться на вкладці "Загальні категорії". Логіка додавання категорій наступна:
Одночасно мають виконуватись такі умови:
- sellingMethod процедури один з зазначених в комірці
- classification один з зазначених в комірці
Для колонки classification було додано id в форматі Regex у випадку, якщо шукати співпадіння необхідно одразу по всьому дереву.
Таким чином для Оренда житлової нерухомості необхідно додати всі процедури, де
sellingMethod ==
commercialPropertyLease-.*
OR
regulationsPropertyLease-.*
OR
legacyRegulationsPropertyLease-.*
OR
legitimatePropertyLease-.*
OR
legacyLegitimatePropertyLease-.*
AND
classification == ^041.* (один з класифікаторів з зазначеного дерева)
Табличка нижче описує категорії, які було взято з білінгу:
name | Data extraction path | Matching | value | опис в dict | |
---|---|---|---|---|---|
fish | procedure.sellingEntity.identifier.id | == | 37472282 | Продаж майна "Державного агентства меліорації та рибного господарства України" | |
saltwater | items.classification.id | == | 98361000-1 | Продаж права на укладення договору користування на умовах оренди акваторією для цілей морської аквакультури | |
freshwater | items.classification.id | == | 77700000-7 | Продаж права використання водних біоресурсів (прісної води) | |
privatbank | procedure.sellingEntity.identifier.id | == | 14360570 | Продаж майна Приватбанку | |
UZ | procedure.sellingEntity.identifier.id | == | 40075815 | Продаж майна Укрзалізниці | |
metalRepository | procedure.sellingEntity.identifier.id | == | 30438549 | Продаж майна "Державного сховища дорогоцінних металів і дорогоцінного каміння України" | |
customs | procedure.sellingEntity.identifier.id | in | 43333459 43337207 43350935 43332958 43348711 43335608 43336287 43337359 43350542 43333684 43332675 43332555 43350888 43971359 43971343 43958385 43946385 44029605 43997555 44030626 44005631 43971371 44017631 43958370 44005668 | Митний аукціон | |
NBU | procedure.sellingEntity.identifier.id | == | 00032106 | Продаж від НБУ | |
NPL | procedure.sellingEntity.identifier.id | in | 09302607 09303328 09305480 09334702 09311380 09312190 02760363 09336500 09323408 09304612 09325703 09326464 09328601 09331508 09333401 09337356 09338500 09351600 02766367 09315357 02767059 09356307 09353504 00032112 00032129 23697280 | Продаж майна та непрацюючих кредитів держ банків | |
SAR | procedure.sellingEntity.identifier.id | == | 37472392 | Продаж майна "Державного агентства резерву України" | |
FGVFO | procedure.sellingEntity.identifier.id | in | 38591533 19364584 33305163 23926846 37176171 14351016 38619024 19364259 38061253 22906155 20050951 05839888 35574578 36406512 35264721 20305925 36470620 09807856 21593719 19361746 26287625 20017340 22932856 36964568 13486837 34047020 20028816 24262992 23478833 24191588 20929956 20057663 19019775 24214088 19356840 14371869 36335426 19357762 20025456 21666051 20971504 35894495 19388768 21536532 09806437 19017842 34353904 26549700 20717958 14291780 37987811 33972230 13881479 19357516 37731532 09322299 13550848 35863708 26051650 24425738 26253000 20015529 34693790 26444836 14366762 19358767 19024948 20058668 20046323 19233095 14358604 21574573 14360386 19357489 14360721 26475516 19454139 34817907 38514375 35371070 26253023 26254732 33308489 20026740 14359319 19361982 20041917 20935649 23362711 38770082 34540113 14349442 39037656 21708016 19361386 33299878 20966466 20280450 37716841 09804119 | Продаж майна банківських установ, які знаходяться в управлінні ФГВФО | |
parkinglots | items.classification.id | == | 63712400-7 | Паркувальні послуги | |
landbank | procedure.sellingEntity.identifier.id | == | 44248443 | Передача землі в суборенду від Зембанку | |
ARMA | procedure.sellingEntity.identifier.id | == | 41037901 | Продаж від Агентства з розшуку та менеджменту активів |
Панель адміністратора (редагування в зв'язку з процедурою)
В панелі адміністратора необхідно реалізувати можливість редагувати categories для процедур. Для цього потрібно використати стандартний пошук процедур як в інших командах.
Необхідно відобразити наступні поля:
- Поточні categories. Якщо їх немає, в такому випадку відобразити порожнє значення.
- Причину редагування (має бути записана в логи)
- created at
- created by
Також має бути можливість додавати categories. Пропоную зробити в такому вигляді:
Тобто враховуючи вкладені списки реалізація має бути аналогічною до реалізації дерева класифікаторов. Але при цій реалізації, якщо користувач обирає батьківський category, не мають обиратися діти.
Таким чином можна буде керувати auctionType в процедурі. Якщо значення порожнє, відобразити "select" як плейсхолдер.
У користувача має бути можливість повністю прибрати всі categories з процедури.