wiki:UseCaseImplementations

Version 31 (modified by 231017, 3 days ago) ( diff )

--

UseCaseImplementations

На следната табела се прикажани сработените кориснички сценарија:

ID Use Case
1 Се регистрира
2 Разгледува почетна страна
1 Се најавува
2 Разгледува почетна страна
1 Преглед на контролната табла
2 Преглед на својот профил
3 Пристап до дневниот предизвик
4 Прегледува ранг листата
5 Прегледува форум
6 Пишува и постира на форумот
7 Коментирање на дискусии
1 Креира нов предизвик
2 Отстранува предизвици од датабаза
3 Отстранува објави
4 Отстранува коментари
5 Одобрува објави
6 Одбива објави

Нерегистриран Корисник

Use Case ID: 1 – Се регистрира


Корисникот притиснува „Register“ и најпрво се извршува основа валидација на формата на клиентска страна


Потоа се повикува функција во „AuthContext“ која повикува помошна функција која испраќа POST барање до backend. Се врши повторна валидација на податоците, како и проверка дали постои корисник со внесените податоци. При успешен крај профилот на корисникот се зачувува во „state“ како и во „localStorage“,со цел побрзо ажурирање на податоци на клиентска страна
Функцијата во „AuthContext
Помошна функција во „services/registerLoginService“

Функцијата во контролерот



Проверка на податоците внесени од корисникот се извршува и на backend во моделот „User“

Use Case ID: 2 – Разгледува почетна страна


На почетната страна се проверува дали е најавен корисникот и во зависност од тоа се динамички се менува „Hero“ секцијата

Ненајавен корисник кој има профил

Use Case ID: 1 – Се најавува


Корисникот притиснува „Log in“ и слично како и при регистрација, се повикува „login“ функција во „AuthContext“, потоа помошна функција во „services/registerLoginService“ и на крај се испраќа POST барање до backend со кое се справува контролерот. При успешен крај податоците за корисникот се зачувуваат во „state“ на клиентска страна


Функцијата во „AuthContext

Помошна функција во „services/registerLoginService“

Функцијата во контролерот

Use Case ID: 2 – Разгледува почетна страна


На почетната страна се проверува дали е најавен корисникот и во зависност од тоа се динамички се менува „Hero“ секцијата

Најавен корисник

Use Case ID: 1 – Преглед на контролната табла


Во објектот „user“ се чуваат потребните информации како на пример дали корисникот го има решено предизвикот или не и слично

Use Case ID: 2 – Преглед на својот профил

Во објектот „user“ се чуваат потребните информации како на пример вкупен број на поени и решени предизвици

Use Case ID: 3 – Пристап до дневниот предизвик


Најпрво при пристап до предизвикот се повикува помошна функција која повикува GET барање до backend и се враќаат податоците за денешниот предизвик

Помошна функција во „services/taskService“

Функциите во контролерот


При избор на „Test case“ за корисникот најпрво се проверува дали претходно пристапил до предизвикот и ако да се повикуваат функциите за преземање на конкретниот „Test case“. Во спротива се презема „Test case“ од низата „Test cases“ за соодветниот предизвик и преку помошната функција „updateUserDailyTestCaseId“ се повикува PUT барање до backend и се ажурира соодветната колона за корисникот во датабазата


Помошни функции во „services/taskService“



Функциите во контролерот

Корисникот притиснува „Submit“ и се извршува основа валидација на податоците. Потоа се повикува помошна функција која повикува POST барање до backend каде се врши евалуација на резултатот внесен од корисникот

Помошна функција во „services/taskService“

Овие функции се корситат при евалуација на резултатот внесен од корисникот. Најпрво се повикуваат функциите „getMinutesSinceSevenAM“ и „getTimeBonus“, со кои се пресметува времето поминато од поставување на предизвикот, односно од седум часот наутро. Потоа се повикува функцијата „getAttemptScore“ која служи за доделување поени во зависност од тоа колку обиди му биле потребни на корисникот да го реши предизвикот. За крај, се повикуваат функции за нормализација на резултатот внесен од корисникот и негова споредба со точниот резултат


Функциите во контролерот. Тука се ажурираат и соодветните полиња за корисникот и предизвикот во датабазата



Функцијата во контролерот која е повикана од „updateUserDailyTestCaseId“

Use Case ID: 4 – Прегледува ранг листата

Преку клиентска страна се испраќа GET барање до специфична „URL“ адреса на нашиот Supabase“ сервер каде што се извршува „edge“ функција

Оваа функција се извршува на серверите на Supabase. Нејзината цел е да обработи барање, да земе податоци од базата и да ги врати назад на клиентот. Прво проверува дали веќе има зачуван (кеширан) одговор за точно тоа барање (иста страница и ист лимит) во табелата „leaderboard_cache“. Ако најде податок понов од 5 минути, веднаш го враќа како одговор.Ако не најде валиден влез, тогаш конструира барање до главната табела и се извршува сортирањето



Use Case ID: 5 – Прегледува форум


Најпрво се повикува помошна функција која испраќа GET барање до backend со одредени вредности за број на објави. Потоа преку функцијата во контролерот се враќа одговор со соодветниот број на објави

Помошна функција во „services/forumService“ No image "getForumPostsService.png" attached to UseCaseImplementations
Функцијата во контролерот“

Use Case ID: 6 – Пишува и постира на форумот


Корисникот притиснува „Publish Post“, се повикува помошна функција и се испраќа POST барање до backend. Потоа се повикува функција во контролерот, каде најпрво се проверува дали корисникот има преостанати објави за тој ден. Ако има, се проверува содржината на објавата, односно дали содржи вулгарности. Ако не содржи, се испраќа GET барање до „OpenAi api“ преку кое се одредува дали содржината е соодветна за форумот. Доколку објавата е подолга од 200 карактери се внесува во табелата за проверка од модератор. Исто така, доколку системот одредил 3 пати во ред несоодветна содржина, корисникот има можност да ја испрати објавата до модератор за проверка.
Функции на клиентска страна кои повикуваат помошни функции кои испраќаат POST барања до backend

Помошна функција во „services/forumService“

Помошна функција во „services/reviewService“

Функција во „forumController“. Оваа функција е одговорна и за ажурирање на соодветните полиња за преостанати дневни објави за корисникот


Функција која испраќа барање до „OpenAi api“

Функција во „reviewController“ која ја додава објавата во табелата за проверка од модератор

Use Case ID: 7 – Коментирање на дискусии


Корисникот притиснува „Post Comment“ и се повикува помошна функција која испраќа POST барање до backend. Барањето е обработено од функцијата во контролерот, каде најпрво се проверува коментарот дали содржи вулгарности. Доколку не содржи се додава нов коментар во датабазата, кој соодветсвува на објавата

Помошна функција во „services/forumService“

Функцијата во контролерот

Модератор

Use Case ID: 1 – Креира нов предизвик

Модераторот притиснува „Create Challenge“, се повикува помошна функција која испраќа POST барање до backend. Функцијата во контролерот го обработува барањето, така што најпрво се проверува дали корисникот навистина е модератор, а потоа се повикува валидациска функција за предизвикот. При успешен крај предизвикот се додава во датабазата


Помошна функција во „services/taskService“

Функцијата во контролерот


Функцијата за валидација во моделот „Challenge“

Use Case ID: 2 – Отстранува предизвици од датабаза

Модераторот успешно отстранува предизвик

Use Case ID: 3 – Отстранува објави

Модераторот успешно отстранува објава поради несоодветна содржина

Use Case ID: 4 – Отстранува коментари

Модераторот успешно отстранува коментар од објава поради несоодветна содржина

Use Case ID: 5 – Одобрува објави

Модераторот пристапува до погледот за филтрирање на објави
Модераторот успешно одобрува објава

Use Case ID: 5 – Одбива објави

Модераторот успешно одбива објава

Attachments (132)

Note: See TracWiki for help on using the wiki.