| 45 | |
| 46 | == ИД: 3 - Пополнување на форма со положени предмети и лични интереси |
| 47 | |
| 48 | [[Image(form4.jpeg)]] |
| 49 | |
| 50 | Кога корисникот првпат ја пополнува формата со клик на копчето „Зачувај“ се испраќа POST барање, додека во сите следни пополнувања текстот во истото копче ќе биде „Ажурирај“ и ќе биде испратено PATCH барање. Пред да се испрати барањето, без разлика кое од претходно наведените, информациите коишто студентот внел прво се валидираат. Доколку има грешка (непополнети предуслови за предмет, задолжително поле оставено празно...), барањето не се прави, туку се прикажува соодветна порака за грешка. |
| 51 | |
| 52 | [[Image(handle_form_submit.jpeg)]] |
| 53 | |
| 54 | [[Image(handle_form_submit2.jpeg)]] |
| 55 | |
| 56 | [[Image(validate_form.jpeg)]] |
| 57 | |
| 58 | На backend-от, прво се проверува дали корисникот има такви пермисии. |
| 59 | |
| 60 | [[Image(permissions.jpeg)]] |
| 61 | |
| 62 | Потоа, доколку информациите се валидни, се зачувуваат во база. |
| 63 | |
| 64 | [[Image(post_patch.jpeg)]] |
| 65 | |
| 66 | == ИД: 4 - Преглед на резултати добиени од алгоритмот |
| 67 | |
| 68 | [[Image(algo_new.jpeg)]] |
| 69 | |
| 70 | Откога студентот ќе го притисне копчето за да добие препораки се испраќа GET барање кое како дополнителни параметри има сезоната (season - 0: летна, 1: зимска, 2: двете) и дали студентот сака да му се прикажуваат неактивирани предмети (not_activated - 0: не прикажувај, 1: прикажувај). |
| 71 | |
| 72 | [[Image(fetch_rec.jpeg)]] |
| 73 | |
| 74 | [[Image(get_recommendations.jpeg)]] |
| 75 | |
| 76 | Се наоѓа уникатен клуч за студентот според неговите преференци и параметрите на барањето, доколку постои таков клуч во кеш табелата и вредноста е валидна, кешираните препораки се враќаат на корисникот без никакви дополнителни пресметки. Клучот се поставува на овој начин: |
| 77 | |
| 78 | [[Image(cache_key.jpeg)]] |
| 79 | |
| 80 | Доколку нема кеширани препораки истите треба да се пресметаат. Прво се филтрираат предметите според неколку критериуми. |
| 81 | |
| 82 | [[Image(get_eligible1.jpeg)]] |
| 83 | |
| 84 | [[Image(get_eligible2.jpeg)]] |
| 85 | |
| 86 | Се мапира секој предмет од исфилтрираните во својот соодветен вектор. |
| 87 | |
| 88 | [[Image(map_to_sub_vector.jpeg)]] |
| 89 | |
| 90 | Се прави вектор за студентот. |
| 91 | |
| 92 | [[Image(student_vector.jpeg)]] |
| 93 | |
| 94 | Се оценуваат сите атрибути. |
| 95 | |
| 96 | [[Image(score.jpeg)]] |
| 97 | |
| 98 | Посебна функција за оценување на таговите. |
| 99 | |
| 100 | [[Image(score_tags.jpeg)]] |
| 101 | |
| 102 | Се множат сите резултати со одредени тежини и се враќаат најдобрите N резултати до клиент. Пред да се испратат се генерира клуч со истата функција како претходно и истите се кешираат. |
| 103 | |
| 104 | [[Image(recommendations_final.jpeg)]] |
| 105 | |
| 106 | |
| 107 | |
| 108 | |
| 109 | |
| 110 | |