open-contracting / bi.dream.gov.ua

DREAM Analytics
https://bi.dream.gov.ua
Apache License 2.0
1 stars 0 forks source link

Filters: Додати фільтр "Наявність обʼєкта в РПЗМ" до сторінки "Всі фільтри" #175

Closed ndrhzn closed 1 month ago

ndrhzn commented 3 months ago

До сторінки "Всі фільтри" потрібно додати новий фільтр

Назва: "Наявність обʼєкта в РПЗМ" / Object is registered in RDDP Значення: Так / Ні для української версії, Yes / No для англійської версії Розташування: У блоці "Документи та класифікатори" перед фільтром "Наявність ПКД" Джерело даних: objects endpoint Елемент даних: cdu_response/relatedProcesses/identifier WHERE cdu_response/relatedProcesses/scheme=‘UA-RDDP’. Якщо елемент наявний, ставимо Так / Yes, якщо елемент відсутній - ставимо Ні / No

На рівні даних у цьому елементі наразі можливі невалідні значення на зразок '-', 'testAnna', 'ВІДСУТНІЙ', 'иаиииии', 'н\б', 'На даний час в РПЗМ не внесено', 'на даний час не внесено В РПЗМ', 'Не внесено', '0', а також інші варіанти, котрі на практиці можуть не бути кодами обʼєктів в РПЗМ. Наразі ми пропрацьовуємо це з Проєктним офісом, аби зрозуміти, як краще обробляти такі випадки. В ідеалі вони мають бути виправлені на рівні джерела даних, але якщо це не є можливим, тоді нам потрібно буде придумувати, як обробляти їх на стороні BI.

ndrhzn commented 2 months ago

Естімейт - 1.5 години Зміни в мешапі - не потрібні

andrzejbeletsky commented 2 months ago

take a look

ndrhzn commented 2 months ago

Дякую! Єдине, що треба поправити - матчити лише валідні коди РПЗМ

У нас там наразі є багато невалідних записів, де формально є якесь значення, але воно не є власне кодом РПЗМ. Якщо ми будемо просто перевіряти наявність будь-якого значення, ми ризикуємо презентувати некоректні дані.

image

Валідний код РПЗМ виглядає ось так - ОНМ-26.03.2023-22928. Загалом можна фільтрувати за дуже простим правилом - якщо значення починається з "ОНМ", тоді ми вважаємо це валідним кодом РПЗМ.

Але ситуація трохи ускладнюється тим, що там часто змішуються латинські та кириличні знаки, або ж можуть бути зайві пробіли, тому фактично правило для матчингу може виглядати трохи більш складно.

Скажімо, у Google Spreadsheets для перевірки цих даних я використовував regex, де зафіксовано декілька правил:

=REGEXMATCH(A2, "(?i)^^OHM|ОНМ|ОМН|ОН М|oHM”)

Тобто тут ми виходимо з настанови, що валідні коди можуть починатися з:

Останній варіант може бути зайвим / надлишковим, якщо перевірка case insensitive, але мені важливо було зафіксувати, що і такий варіант існує.

andrzejbeletsky commented 2 months ago

take a look клік не має регулярних виразів, але є функція wildmatch, яка працює з '?' та '*' застосовано правило '???-??.??.????-*' для [Код обʼєкта в РПЗМ]

ndrhzn commented 2 months ago

Виглядає добре, дякую! Готове до релізу на прод

a-radik commented 2 months ago

@andrzejbeletsky