Changes between Version 9 and Version 10 of UseCaseImplementationsFinal
- Timestamp:
- 08/23/25 22:15:08 (8 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
UseCaseImplementationsFinal
v9 v10 11 11 == Use Case ID: 1 – Се најавува со Google профил == 12 12 [[Image(google_login.png)]][[BR]] 13 Корисникот притиска на копчето за нај ва со Google и се испраќа get барање до backend.[[BR]]13 Корисникот притиска на копчето за најава со Google и се испраќа get барање до backend.[[BR]] 14 14 15 15 **Функцијата на клиентска страна**[[BR]] 16 16 [[Image(google_login_client.png)]][[BR]] 17 17 18 **Помошна функција во registerLoginService**[[BR]]18 **Помошна функција во „services/registerLoginService“**[[BR]] 19 19 [[Image(google_login_axios.png)]][[BR]] 20 20 Барањето е обработено од серверот со тоа што корисникот најпрво е пренасочен кон Google страницата за најава, каде корисникот го избира својот профил. Потоа Google испраќа get барање до наведениот url (http://localhost:5001/api/auth/google/callback) со специјален код во url-от. Преку овој код функцијата passport.authenticate(...) прави барање до Google, со што го добива профилот на корисникот.[[BR]] … … 22 22 Потоа се извршува callback функцијата дефинирана со passport Google strategy, каде најпрво се проверува дали постои профил со конкретната email адреса, а доколку не постои се креира нов профил.[[BR]] 23 23 [[Image(passportjs.png,width=900, height=500)]][[BR]] 24 На крај, се генерира supabase magic link, со кој се комплетира најавата, настанува SIGNED_IN event и се воспоставува сесија, а корисникот е пренасочен кон контролната табла.[[BR]]24 На крај, се генерира supabase magic link, со кој се комплетира најавата, се тригерира SIGNED_IN event и се воспоставува сесија, а корисникот е пренасочен кон контролната табла.[[BR]] 25 25 26 26 == Use Case ID: 2 – Пребарува и филтрира форум == … … 40 40 При промена на некој од филтрите се ажурира соодветното поле во објектот filters. Потоа корисникот притиска Apply Filters и се извршува функцијата applyFilters каде се ажурираат forumSearchParams, а тоа предизвикува повикување на fetchPosts функцијата преку која се испраќа get барање до backend.[[BR]] 41 41 42 **Помошна функција во forumService**[[BR]]42 **Помошна функција во „services/forumService“**[[BR]] 43 43 [[Image(forumservice.png)]][[BR]] 44 44 Барањето најпрво е обработено од forumService, каде се составува соодветен url и барањето се проследува до backend.[[BR]] … … 47 47 [[Image(getforumposts2.png)]][[BR]] 48 48 [[Image(getforumposts3.png)]][[BR]] 49 Потоа барањето се обработува од функцијата getForumPosts во контролерот, каде според соодветните query параметри се испраќа барање до базата. Доколку корисникот внесол соодветни филтри, објавите најпрво се рангираат според функција која ги приоритизира поновите објави, но во предвид се зема и бројот на коментари, па доко клу некоја објава била „попопуларна“ ќе биде повисоко рангирана. Со тоа се воведува мала динамика на форумот.[[BR]]49 Потоа барањето се обработува од функцијата getForumPosts во контролерот, каде според соодветните query параметри се испраќа барање до базата. Доколку корисникот внесол соодветни филтри, објавите најпрво се рангираат според функција која ги приоритизира поновите објави, но во предвид се зема и бројот на коментари, па доколку некоја објава била „попопуларна“ ќе биде повисоко рангирана. Со тоа се воведува мала динамика на форумот.[[BR]] 50 50 **Функцијата scorePosts во контролерот**[[BR]] 51 51 [[Image(scoreposts.png)]][[BR]] … … 57 57 **Функцијата на клиентска страна**[[BR]] 58 58 [[Image(client1.2.png)]][[BR]] 59 **Помошна функција во reviewService**[[BR]]59 **Помошна функција во „services/reviewService“**[[BR]] 60 60 [[Image(reviewservice.png)]][[BR]] 61 61 **Функцијата во контролерот**[[BR]] … … 64 64 **Функцијата на клиентска страна**[[BR]] 65 65 [[Image(delreview1.png)]][[BR]] 66 **Помошна функција во reviewService**[[BR]]66 **Помошна функција во „services/reviewService“**[[BR]] 67 67 [[Image(delreviewservice.png)]][[BR]] 68 68 **Функцијата во контролерот**[[BR]] … … 76 76 [[Image(handleapprovepostclient.png)]][[BR]] 77 77 78 **Помошна функција во reviewService**[[BR]]78 **Помошна функција во „services/reviewService“**[[BR]] 79 79 [[Image(approvereviewpostservice.png)]][[BR]] 80 80 … … 83 83 [[Image(approvereviewpostcontroller2.png)]][[BR]] 84 84 85 **Функцијата sendApprovalEmail во emailService**[[BR]]85 **Функцијата sendApprovalEmail во „services/emailService“**[[BR]] 86 86 [[Image(sendApprovalEmail.png)]][[BR]] 87 87 88 Најпосле корисн киот добива email дека неговата објава била одобрена.[[BR]]88 Најпосле корисникот добива email дека неговата објава била одобрена.[[BR]] 89 89 [[Image(primerEmail.png)]][[BR]] 90 90 **Текот на настани е многу сличен и кога се одбива објава од страна на модераторот**[[BR]] 91 91 92 92 == Use Case ID: 5 – Модератор добива email известувања == 93 Со помош на PM2 и node-schedule, процесот за проверка и испраќање email доколку има објави на тема дневен предизвик, кои чекаат одобрување, се извршува на секој час. Доколку постојат вакви објави преку функцијата sendHourlyReviewNotification во emailService, се испраќа известување до с екој модератор. Слично на тоа, секој ден во 7 часот наутро се проверува дали има објави (од двете теми) кои чекаат одобрување повеќе од 24 часа. Доколку постојат вакви објави преку функцијата sendModeratorEmail во emailService, се испраќа известување до секој модератор.[[BR]]93 Со помош на PM2 и node-schedule, процесот за проверка и испраќање email доколку има објави на тема дневен предизвик, кои чекаат одобрување, се извршува на секој час. Доколку постојат вакви објави преку функцијата sendHourlyReviewNotification во emailService, се испраќа известување до сите модератори. Слично на тоа, секој ден во 7 часот наутро се проверува дали има објави (од двете теми) кои чекаат одобрување повеќе од 24 часа. Доколку постојат вакви објави преку функцијата sendModeratorEmail во emailService, се испраќа известување до сите модератори.[[BR]] 94 94 **Функцијата со која се проверува дали има објави за дневен предизвик**[[BR]] 95 95 [[Image(hourlycheck.png)]][[BR]] 96 96 [[Image(hourlycheck2.png)]][[BR]] 97 **Функцијата sendHourlyReviewNotification во emailService**[[BR]]97 **Функцијата sendHourlyReviewNotification во „services/emailService“**[[BR]] 98 98 [[Image(sendhourlymail.png)]][[BR]] 99 99 **Функцијата со која се проверува дали има објави постари од 24 часа**[[BR]] 100 100 [[Image(at7ammailcheck1F.png)]][[BR]] 101 101 [[Image(at7ammailcheck2.png)]][[BR]] 102 **Функцијата sendModeratorEmail во emailService**[[BR]]102 **Функцијата sendModeratorEmail во „services/emailService“**[[BR]] 103 103 [[Image(7ammail.png)]][[BR]]