wiki:UseCase0005PrototypeImplementation

Version 1 (modified by 223306, 6 days ago) ( diff )

--

Use-case 0005 Implementation - Персонализирани препораки на книги

Иницирачки актер: Купувач

Други актери: Нема

Опис

Најавениот корисник може да добива персонализирани препораки на книги според неговите зачувани преференции за жанрови и категории. Дополнително, корисникот може да избере моментално расположение или потреба, по што апликацијата ги прикажува книгите поврзани со избраното расположение.

Сценарио

  1. Корисникот се најавува во апликацијата и ја отвора страницата „Мои преференции“, каде што може да избере жанрови и категории што го интересираат.

  1. Корисникот избира еден или повеќе жанрови и категории. Во примерот се избрани жанрот „Продуктивност“ и категоријата „Кариера“, по што корисникот го притиска копчето „Зачувај ги преференциите“.

  1. Системот ги зачувува избраните жанрови и категории за најавениот корисник. Претходно зачуваните преференции се бришат, а новоизбраните се внесуваат во базата на податоци.

За жанровите се користат следните SQL наредби:

DELETE FROM project.preferira_zhanr
WHERE korisnik_id = %s;
INSERT INTO project.preferira_zhanr
    (korisnik_id, zhanr_id, datum_dodavanje)
VALUES
    (%s, %s, CURRENT_DATE);

За категориите се користат следните SQL наредби:

DELETE FROM project.preferira_kategorija
WHERE korisnik_id = %s;
INSERT INTO project.preferira_kategorija
    (korisnik_id, kategorija_id, datum_dodavanje)
VALUES
    (%s, %s, CURRENT_DATE);
  1. По зачувувањето на преференциите, системот го пренасочува корисникот кон страницата „Препораки“. Системот ги споредува зачуваните преференции на корисникот со жанровите и категориите на книгите и ги прикажува книгите што одговараат на неговите интереси.

За добивање на персонализираните препораки се користи следната SQL наредба:

SELECT DISTINCT
    k.kniga_id,
    k.naslov,
    k.cena,
    k.opis,
    k.godina_izdavanje
FROM project.knigi k
WHERE
    EXISTS (
        SELECT 1
        FROM project.ima_zhanr iz
        JOIN project.preferira_zhanr pz
            ON iz.zhanr_id = pz.zhanr_id
        WHERE iz.kniga_id = k.kniga_id
          AND pz.korisnik_id = %s
    )
    OR
    EXISTS (
        SELECT 1
        FROM project.ima_kategorija ik
        JOIN project.preferira_kategorija pk
            ON ik.kategorija_id = pk.kategorija_id
        WHERE ik.kniga_id = k.kniga_id
          AND pk.korisnik_id = %s
    )
ORDER BY k.kniga_id;

  1. На истата страница корисникот може да избере и моментално расположение или потреба од понудените опции: „Мотивација“, „Релаксација“, „Инспирација“, „Фокус“ и „Личен развој“.

Расположенијата се вчитуваат од базата со следната SQL наредба:

SELECT raspolozenie_id, naziv, opis
FROM project.raspolozenija
ORDER BY raspolozenie_id;

  1. Корисникот избира расположение. Во примерот е избрана „Релаксација“. Системот го пронаоѓа избраното расположение со следната SQL наредба:
SELECT raspolozenie_id, naziv, opis
FROM project.raspolozenija
WHERE raspolozenie_id = %s;
  1. Системот ги пронаоѓа книгите поврзани со избраното расположение преку табелата project.povrzana_so.
SELECT
    k.kniga_id,
    k.naslov,
    k.cena,
    k.opis,
    k.godina_izdavanje
FROM project.knigi k
JOIN project.povrzana_so p
    ON k.kniga_id = p.kniga_id
WHERE p.raspolozenie_id = %s
ORDER BY k.kniga_id;
  1. Системот ги прикажува книгите што одговараат на избраното расположение. Во примерот за „Релаксација“ се прикажуваат соодветните книги поврзани со ова расположение.

Attachments (5)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.