| Version 4 (modified by , 12 days ago) ( diff ) |
|---|
Advanced Topic
Краток опис на напредната тема (PostGIS)
Како напредна тема за овој проект го избравме PostGIS и QGIS, бидејќи претставуваат најсоодветно решение за функционалностите што системот ги нуди. Уште од самиот почеток, системот беше замислен да работи со локациите на работниците и објавите на корисниците, особено во делот каде што работниците можат да изберат дали сакаат да работат на далечина (remote) или само во рамки на одредена оддалеченост од нивната моментална локација која ја имаат внесено во системот.
Поради ова, PostGIS се покажа како најсоодветна напредна тема, бидејќи, со негова помош, секој мајстор може лесно да ги разгледува понудите што се наоѓаат во негова близина доколку не работи на далечина, додека на корисниците кои бараат мајстори им се препорачуваат оние што се наоѓаат во нивна близина или нудат услуги на далечина.
Функционалности
Во рамките на напредната тема беа имплементирани неколку дополнителни функционалности, и тоа:
fn_suggest_posts_for_worker(p_worker_id, p_radius_meters default 5000, p_limit default 10)
Оваа функција служи за предлагање на соодветни постови за одреден работник врз основа на неговите специјалност и локација. Најпрво се проверува дали работникот има означено дека е достапен за работа од далечина (works_remote), по што се пребаруваат сите активни огласи. Во резултатите се вклучуваат само оние огласи за кои работникот поседува барем една потребна специјалност. Доколку работникот не работи од далечина, дополнително се применува просторен филтер со функцијата ST_DWithin, кој ги ограничува резултатите на огласи што се наоѓаат во зададен радиус од неговата локација. За секој пронајден оглас се пресметува растојанието со функцијата ST_Distance, а резултатите се подредуваат според најблиските огласи. На крај, функцијата враќа ограничен број резултати, со што се добива листа на најрелевантни постови за конкретниот мајстор, како и ги подобрува перформансите на апликацијата.
fn_suggest_workers_for_post(p_post_id, p_radius_meters default 5000, p_limit default 10)
Оваа функција служи за пронаоѓање и препорачување на најсоодветни работници за одреден оглас. Функцијата ги пребарува сите работници и ги избира само оние чии специјалности се совпаѓаат со барањата на огласот. Дополнително, се зема предвид и локацијата на работникот (доколку корисникот размислува дека ако работникот иде од далеку ќе очекува одреден паричен надоместок за поминатиот пат), при што се вклучуваат работници кои се подготвени да работат од далечина (works_remote) или се наоѓаат во зададен радиус од локацијата на огласот со помош на функцијата ST_DWithin. За секој соодветен работник се пресметува растојанието до огласот со ST_Distance, а резултатите се подредуваат според близина. На крај, функцијата враќа ограничен број резултати, со што се добива листа на најрелевантни кандидати за конкретниот оглас, како и ги подобрува перформансите на апликацијата.
fn_generate_worker_polygons()
fn_draw_posts_in_worker_region(p_worker_id)
fn_location_heatmap()
Оваа функција претставува надградба на погледот vw_location_aggregate и е наменета за визуелизација на агрегираните податоци по локација. Освен статистичките информации за бројот на огласи и работници, функцијата ја враќа и геометријата на секоја локација, што овозможува податоците да бидат прикажани на мапа во QGIS. На овој начин сопственикот на платформата може визуелно да идентификува региони со најголема концентрација на работници, активни огласи или целокупна активност, што овозможува полесна анализа и донесување на деловни одлуки.
Скрипта
Attachments (4)
- Example_worker_not_remote.png (407.4 KB ) - added by 9 days ago.
- Example_application.jpg (55.7 KB ) - added by 9 days ago.
- MajStore_PostGis.sql (9.1 KB ) - added by 7 days ago.
- MajStore_PostGis_refactored.sql (7.6 KB ) - added by 7 days ago.
Download all attachments as: .zip
