Changes between Initial Version and Version 1 of UseCase0005PrototypeImplementation


Ignore:
Timestamp:
09/24/26 18:43:53 (6 days ago)
Author:
223306
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase0005PrototypeImplementation

    v1 v1  
     1= Use-case 0005 Implementation - Персонализирани препораки на книги =
     2
     3'''Иницирачки актер:''' Купувач
     4
     5'''Други актери:''' Нема
     6
     7== Опис ==
     8
     9Најавениот корисник може да добива персонализирани препораки на книги според неговите зачувани преференции за жанрови и категории. Дополнително, корисникот може да избере моментално расположение или потреба, по што апликацијата ги прикажува книгите поврзани со избраното расположение.
     10
     11== Сценарио ==
     12
     131. Корисникот се најавува во апликацијата и ја отвора страницата „Мои преференции“, каде што може да избере жанрови и категории што го интересираат.
     14
     15[[Image(UseCase0005_1.png, width=800)]]
     16
     172. Корисникот избира еден или повеќе жанрови и категории. Во примерот се избрани жанрот „Продуктивност“ и категоријата „Кариера“, по што корисникот го притиска копчето „Зачувај ги преференциите“.
     18
     19[[Image(UseCase0005_2.png, width=800)]]
     20
     213. Системот ги зачувува избраните жанрови и категории за најавениот корисник. Претходно зачуваните преференции се бришат, а новоизбраните се внесуваат во базата на податоци.
     22
     23За жанровите се користат следните SQL наредби:
     24
     25{{{
     26#!sql
     27DELETE FROM project.preferira_zhanr
     28WHERE korisnik_id = %s;
     29}}}
     30
     31{{{
     32#!sql
     33INSERT INTO project.preferira_zhanr
     34    (korisnik_id, zhanr_id, datum_dodavanje)
     35VALUES
     36    (%s, %s, CURRENT_DATE);
     37}}}
     38
     39За категориите се користат следните SQL наредби:
     40
     41{{{
     42#!sql
     43DELETE FROM project.preferira_kategorija
     44WHERE korisnik_id = %s;
     45}}}
     46
     47{{{
     48#!sql
     49INSERT INTO project.preferira_kategorija
     50    (korisnik_id, kategorija_id, datum_dodavanje)
     51VALUES
     52    (%s, %s, CURRENT_DATE);
     53}}}
     54
     554. По зачувувањето на преференциите, системот го пренасочува корисникот кон страницата „Препораки“. Системот ги споредува зачуваните преференции на корисникот со жанровите и категориите на книгите и ги прикажува книгите што одговараат на неговите интереси.
     56
     57За добивање на персонализираните препораки се користи следната SQL наредба:
     58
     59{{{
     60#!sql
     61SELECT DISTINCT
     62    k.kniga_id,
     63    k.naslov,
     64    k.cena,
     65    k.opis,
     66    k.godina_izdavanje
     67FROM project.knigi k
     68WHERE
     69    EXISTS (
     70        SELECT 1
     71        FROM project.ima_zhanr iz
     72        JOIN project.preferira_zhanr pz
     73            ON iz.zhanr_id = pz.zhanr_id
     74        WHERE iz.kniga_id = k.kniga_id
     75          AND pz.korisnik_id = %s
     76    )
     77    OR
     78    EXISTS (
     79        SELECT 1
     80        FROM project.ima_kategorija ik
     81        JOIN project.preferira_kategorija pk
     82            ON ik.kategorija_id = pk.kategorija_id
     83        WHERE ik.kniga_id = k.kniga_id
     84          AND pk.korisnik_id = %s
     85    )
     86ORDER BY k.kniga_id;
     87}}}
     88
     89[[Image(UseCase0005_3.png, width=800)]]
     90
     915. На истата страница корисникот може да избере и моментално расположение или потреба од понудените опции: „Мотивација“, „Релаксација“, „Инспирација“, „Фокус“ и „Личен развој“.
     92
     93Расположенијата се вчитуваат од базата со следната SQL наредба:
     94
     95{{{
     96#!sql
     97SELECT raspolozenie_id, naziv, opis
     98FROM project.raspolozenija
     99ORDER BY raspolozenie_id;
     100}}}
     101
     102[[Image(UseCase0005_4.png, width=800)]]
     103
     1046. Корисникот избира расположение. Во примерот е избрана „Релаксација“. Системот го пронаоѓа избраното расположение со следната SQL наредба:
     105
     106{{{
     107#!sql
     108SELECT raspolozenie_id, naziv, opis
     109FROM project.raspolozenija
     110WHERE raspolozenie_id = %s;
     111}}}
     112
     1137. Системот ги пронаоѓа книгите поврзани со избраното расположение преку табелата `project.povrzana_so`.
     114
     115{{{
     116#!sql
     117SELECT
     118    k.kniga_id,
     119    k.naslov,
     120    k.cena,
     121    k.opis,
     122    k.godina_izdavanje
     123FROM project.knigi k
     124JOIN project.povrzana_so p
     125    ON k.kniga_id = p.kniga_id
     126WHERE p.raspolozenie_id = %s
     127ORDER BY k.kniga_id;
     128}}}
     129
     1308. Системот ги прикажува книгите што одговараат на избраното расположение. Во примерот за „Релаксација“ се прикажуваат соодветните книги поврзани со ова расположение.
     131
     132[[Image(UseCase0005_5.png, width=800)]]