UseCaseImplementations
ИД | Use Case | Опис |
1 | Регистрација на нов корисник | Креирање нов кориснички профил со внес на податоци |
2 | Најава на корисник | Влез во системот со корисничко име и лозинка |
3 | Преглед на сите продукти | Приказ на сите достапни продукти во системот |
4 | Филтрирање на продукти | Пребарување според име, категорија, сличност и други критериуми |
5 | Преглед детали за еден продукт | Приказ на детални информации за избран продукт |
6 | Додавање продукт во листа | Корисникот додава продукт во своја листа |
7 | Креирање нова листа на продукти | Корисникот креира нова листа за организација на продукти |
8 | Преглед на сите листи на корисникот | Приказ на сите листи креирани од корисникот |
9 | Уредување/бришење листа | Можност за модификација или бришење на постоечка листа |
10 | Додавање продукт во омилени | Корисникот додава продукт во листата на омилени продукти |
11 | Преглед на омилени продукти | Приказ на сите продукти означени како омилени |
12 | Отстранување продукт од омилени | Можност за бришење продукт од листата на омилени |
13 | Статистика/агрегација на продукти | Прикажување на анализи и рангирања поврзани со продукти |
14 | Сортирање | Прикажување на продукти според степен на сличност |
15 | Приказ на флаери за продукти кои се на попуст | Приказ на сите продукти кои се на попуст во конкретен маркет |
16 | Пребарување продукти со прилагодлив алгоритам | Пребарување според зборови со поддршка за кирилица, латиница и печатни грешки |
ИД 1 - Регистрација на нов корисник
Ако корисникот испрати податоци (POST), формуларот се валидира; ако е валиден, се креира нов корисник и се зачувува во базата. Потоа корисникот се аутентицира и, ако е успешна аутентикацијата, автоматски се логира и се пренасочува на почетната страница. Ако барањето не е POST, се прикажува празен регистрациски формулар.
ИД 2 - Најава на корисник
За регистрацијата е креиран URL кој го поврзува register view-то со соодветниот шаблон. Формуларот RegisterForm се користи за внес на корисничките податоци и нивна валидација. По успешно пополнување и зачувување на податоците, корисникот автоматски се логира, слично како кај LoginView, и се пренасочува на почетната страница.
ИД 3 - Преглед на сите продукти
Преглед на сите продукти: ова view ја прикажува листата на сите продукти со опции за пребарување, филтрирање по категории, продавници, цена и попусти, сортирање по различни критериуми, пагинација, прикажување слични продукти и одбележување на омилените продукти за логирани корисници.
ИД 4 - Филтрирање на продукти
Овој JavaScript го управува филтерот за продукти. Секциите со филтри можат да се отвораат и затвораат, а при кликање надвор од филтрите тие автоматски се затвораат. Слајдерот за максимална цена ја прикажува моменталната вредност во реално време, а кога корисникот менува категории, продавници или сортирање, формуларот се испраќа автоматски за да се апдејтира листата на продукти без рефреш на страницата.
ИД 5 - Преглед детали за еден продукт
Ова view ја прикажува деталната страница на еден продукт. Се вчитува продуктот по неговото ID, се извлекува историјата на цените од базата за креирање график, и се наоѓаат слични продукти. Сите овие податоци се проследуваат на шаблонот product_detail.html за прикажување на информациите и графикот со цените.
ИД 6 - Додавање продукт во листа
Овој JavaScript го управува додавањето продукти во корисничката листа. Кога корисникот кликне на копчето ‘add to list’, се зема ID-то на продуктот и се праќа POST барање до /add-to-list/ преку fetch со JSON тело и CSRF токен за заштита. Серверот враќа JSON со статус; ако е успешен, се прикажува известување дека продуктот е додаден, а ако не, се прикажува грешка. На овој начин целата операција се случува без рефреш на страницата, што ја прави интеракцијата побрза и поинтерактивна.
ИД 7 - Креирање нова листа на продукти
Овој JavaScript управува создавањето на нови листи: при кликање на копчето за креирање се прикажува формуларот, а при кликање на ‘откажи’ се сокрива. Формуларот за листа се валидара локално (име не смее да е празно или подолго од 100 карактери) и се испраќа преку AJAX повик без рефреш на страницата.
ИД 8 - Преглед на сите листи на корисникот
Ова view го прикажува сите листи на тековниот корисник. Ако корисникот е логирани, се вчитуваат неговите листи од базата и се прикажуваат во шаблонот lists.html.
ИД 9 - Уредување/бришење листа
Овој view овозможува корисникот да ја избрише конкретната шопинг листа. Серверот најпрво ја наоѓа листата што соодветствува на дадениот list_id и припаѓа на тековниот корисник, а потоа, ако е примено POST барање, ја брише од базата и го пренасочува корисникот на прегледот на останатите листи.
ИД 10 - Додавање продукт во омилени
Овој use case овозможува корисникот да додава или отстранува производи од својата листа на омилени. Кога корисникот кликне на иконата за омилени, JavaScript-от праќа POST барање до серверот, кој проверува дали производот веќе е омилен и соодветно го додава или отстранува од базата. Статусот на омилените производи се прикажува веднаш на интерфејсот со промена на иконата и бојата, а ако корисникот е на страницата „Омилени“, се освежува листата за да се прикаже актуелната содржина.
ИД 11 - Преглед на омилени продукти
Овој код ја прикажува листата на омилени продукти за тековниот најавен корисник. Тој ги влече омилените продукти од базата и ги предава на шаблонот favorites.html за прикажување на страницата.
ИД 12 - Отстранување продукт од омилени
ИД 13 - Статистика/агрегација на продукти
Функцијата stats_view ја прикажува статистиката за цените на одреден производ во избрана продавница. Таа ја пребарува базата според името на производот и продавницата, наоѓа точен натпревар или слични производи, и ги зема податоците за цените во зададен временски период. Потоа пресметува тековна, минимална, максимална и просечна цена, и ги предава овие информации за прикажување во шаблонот (stats.html).
ИД 14 - Сортирање
Кога корисникот избира нов критериум од select полето, се ажурира URL-от со новиот параметар sort и ресетира page на 1. На тој начин страницата се освежува и прикажува продукти сортирани според избраниот критериум без потреба за повторно рачно пребарување.
ИД 15 - Приказ на флаери за продукти кои се на попуст
Овој скрипт управува со модален прозорец кој прикажува сите продукти на попуст за одредена продавница. Кога корисникот кликне на „Види ги сите“ копчето, се испраќа AJAX барање до backend (/get-store-products/) за да се добијат продуктите на попуст. Добиените продукти се прикажуваат динамички во модалниот прозорец со слики, имиња, стара и нова цена и процент на попуст. Доколку нема продукти на попуст, се прикажува порака „Нема достапни попусти“.
ИД 16 - Пребарување продукти со прилагодлив алгоритам
За овој use case се користи комбинација од backend и frontend логика. На backend-от, функцијата get_similar_products (Python) ги наоѓа сличните продукти според име и категорија користејќи SentenceTransformer за векторско претставување на имињата и пресметка на косинусна сличност. Дополнително се земаат предвид клучни зборови, бонус за специфични категории и различни продавници, а резултатите се сортираат по вкупен скор за да се прикажат најрелевантните продукти. На frontend-от, JavaScript кодот ги нормализира пребарувањата на корисникот со преведување од латиница во кирилица и автоматска корекција на честите печатни грешки. Ова овозможува пребарување без разлика дали корисникот внесува текст на латиница, кирилица или со грешки, а резултатот се испраќа до backend-от за да се прикажат соодветните продукти.
Attachments (102)
- alg_kod1.png (92.6 KB ) - added by 3 weeks ago.
- alg_kod2.png (73.6 KB ) - added by 3 weeks ago.
- alg_kod3.png (57.8 KB ) - added by 3 weeks ago.
- sim_kod1.png (113.0 KB ) - added by 3 weeks ago.
- sim_kod2.png (92.2 KB ) - added by 3 weeks ago.
- sim_kod3.png (64.4 KB ) - added by 3 weeks ago.
- sim_kod4.png (23.4 KB ) - added by 3 weeks ago.
- flaeri_kod1.png (125.0 KB ) - added by 3 weeks ago.
- flaeri_kod2.png (120.7 KB ) - added by 3 weeks ago.
- flaeri_kod3.png (67.7 KB ) - added by 3 weeks ago.
- sort_kod.png (50.2 KB ) - added by 3 weeks ago.
- stats_kod1.png (89.6 KB ) - added by 3 weeks ago.
- stats_kod2.png (86.8 KB ) - added by 3 weeks ago.
- stats_kod3.png (68.3 KB ) - added by 3 weeks ago.
- stats_kod5.png (72.1 KB ) - added by 3 weeks ago.
- stats_kod6.png (73.9 KB ) - added by 3 weeks ago.
- favorite_kod1.png (82.7 KB ) - added by 3 weeks ago.
- favorite_kod2.png (48.5 KB ) - added by 3 weeks ago.
- pregledfav_kod1.png (29.7 KB ) - added by 3 weeks ago.
- togglefav_kod1.png (81.8 KB ) - added by 3 weeks ago.
- togglefav_kod2.png (52.5 KB ) - added by 3 weeks ago.
- togglefav_kod3.png (32.8 KB ) - added by 3 weeks ago.
- brishenjelista_kod.png (30.3 KB ) - added by 3 weeks ago.
- dodadivolista_kod1.png (73.8 KB ) - added by 3 weeks ago.
- dodadivolista_kod2.png (15.8 KB ) - added by 3 weeks ago.
- registracija_kod.png (67.9 KB ) - added by 3 weeks ago.
- najava_kod1.png (11.0 KB ) - added by 3 weeks ago.
- najava_kod2.png (56.8 KB ) - added by 3 weeks ago.
- productlist_kod1.png (78.2 KB ) - added by 3 weeks ago.
- productlist_kod2.png (75.1 KB ) - added by 3 weeks ago.
- productlist_kod3.png (85.1 KB ) - added by 3 weeks ago.
- productlist_kod4.png (69.7 KB ) - added by 3 weeks ago.
- productlist_kod5.png (82.5 KB ) - added by 3 weeks ago.
- filter_kod1.png (110.9 KB ) - added by 3 weeks ago.
- filter_kod2.png (124.2 KB ) - added by 3 weeks ago.
- filter_kod3.png (40.2 KB ) - added by 3 weeks ago.
- kreirajlista_kod1.png (118.8 KB ) - added by 3 weeks ago.
- kreirajlista_kod2.png (88.7 KB ) - added by 3 weeks ago.
- kreirajlista_kod3.png (73.1 KB ) - added by 3 weeks ago.
- dodadivolista_kod1.2.png (73.8 KB ) - added by 3 weeks ago.
- dodadivolista_kod2.2.png (15.8 KB ) - added by 3 weeks ago.
- prikazlisti_kod.png (25.1 KB ) - added by 3 weeks ago.
- productdetail_kod.png (92.7 KB ) - added by 3 weeks ago.
- registracija_kod.jpg (12.9 KB ) - added by 3 weeks ago.
- registracija_kod.2.jpg (21.6 KB ) - added by 3 weeks ago.
- alg_kod1.jpg (32.4 KB ) - added by 3 weeks ago.
- alg_kod2.jpg (23.7 KB ) - added by 3 weeks ago.
- alg_kod3.jpg (19.3 KB ) - added by 3 weeks ago.
- brishenjelista_kod.jpg (10.5 KB ) - added by 3 weeks ago.
- dodadivolista_kod1.jpg (23.3 KB ) - added by 3 weeks ago.
- dodadivolista_kod2.jpg (6.4 KB ) - added by 3 weeks ago.
- favorite_kod1.jpg (25.2 KB ) - added by 3 weeks ago.
- favorite_kod2.jpg (16.2 KB ) - added by 3 weeks ago.
- filter_kod1.jpg (34.9 KB ) - added by 3 weeks ago.
- filter_kod2.jpg (35.4 KB ) - added by 3 weeks ago.
- filter_kod3.jpg (14.2 KB ) - added by 3 weeks ago.
- flaeri_kod1.jpg (35.9 KB ) - added by 3 weeks ago.
- flaeri_kod2.jpg (43.3 KB ) - added by 3 weeks ago.
- flaeri_kod3.jpg (27.0 KB ) - added by 3 weeks ago.
- kreirajlista_kod1.jpg (32.8 KB ) - added by 3 weeks ago.
- kreirajlista_kod2.jpg (27.7 KB ) - added by 3 weeks ago.
- kreirajlista_kod3.jpg (22.9 KB ) - added by 3 weeks ago.
- najava_kod1.jpg (4.4 KB ) - added by 3 weeks ago.
- najava_kod2.jpg (20.8 KB ) - added by 3 weeks ago.
- pregledfav_kod1.jpg (10.9 KB ) - added by 3 weeks ago.
- prikazlisti_kod.jpg (8.4 KB ) - added by 3 weeks ago.
- productdetail_kod.jpg (33.1 KB ) - added by 3 weeks ago.
- productlist_kod1.jpg (28.7 KB ) - added by 3 weeks ago.
- productlist_kod2.jpg (24.8 KB ) - added by 3 weeks ago.
- productlist_kod3.jpg (26.2 KB ) - added by 3 weeks ago.
- productlist_kod4.jpg (25.4 KB ) - added by 3 weeks ago.
- productlist_kod5.jpg (29.8 KB ) - added by 3 weeks ago.
- sim_kod1.jpg (44.4 KB ) - added by 3 weeks ago.
- sim_kod2.jpg (34.9 KB ) - added by 3 weeks ago.
- sim_kod3.jpg (20.0 KB ) - added by 3 weeks ago.
- sim_kod4.jpg (8.2 KB ) - added by 3 weeks ago.
- stats_kod1.jpg (29.6 KB ) - added by 3 weeks ago.
- sort_kod.jpg (15.0 KB ) - added by 3 weeks ago.
- stats_kod2.jpg (34.7 KB ) - added by 3 weeks ago.
- stats_kod3.jpg (28.6 KB ) - added by 3 weeks ago.
- stats_kod5.jpg (23.3 KB ) - added by 3 weeks ago.
- stats_kod6.jpg (24.4 KB ) - added by 3 weeks ago.
- togglefav_kod1.jpg (26.0 KB ) - added by 3 weeks ago.
- togglefav_kod2.jpg (16.2 KB ) - added by 3 weeks ago.
- togglefav_kod3.jpg (9.3 KB ) - added by 3 weeks ago.
- detalen_produkt.jpg (38.3 KB ) - added by 2 weeks ago.
- dodadi_fav1.jpg (43.6 KB ) - added by 2 weeks ago.
- dodadi_fav2.jpg (23.3 KB ) - added by 2 weeks ago.
- dodadi_vo_lista1.jpg (45.2 KB ) - added by 2 weeks ago.
- dodadi_vo_lista2.jpg (38.5 KB ) - added by 2 weeks ago.
- filter.jpg (42.3 KB ) - added by 2 weeks ago.
- flaeri.jpg (40.8 KB ) - added by 2 weeks ago.
- katalog.jpg (44.0 KB ) - added by 2 weeks ago.
- kreiraj_lista.jpg (20.3 KB ) - added by 2 weeks ago.
- prebaruvanje.jpg (48.8 KB ) - added by 2 weeks ago.
- najava.jpg (22.1 KB ) - added by 2 weeks ago.
- prebaruvanje1.jpg (39.8 KB ) - added by 2 weeks ago.
- pregled_listi.jpg (20.9 KB ) - added by 2 weeks ago.
- sortiranje.jpg (42.8 KB ) - added by 2 weeks ago.
- statistika.jpg (29.5 KB ) - added by 2 weeks ago.
- register.jpg (33.9 KB ) - added by 2 weeks ago.
- otstrani_omileni.jpg (20.6 KB ) - added by 2 weeks ago.