Wymagania funkcjonalne¶
Dokument opisuje co aplikacja Aster ma robić z perspektywy użytkownika końcowego oraz administratora. Szczegóły implementacyjne znajdują się w sekcji Implementacja.
Aktorzy systemu¶
| Aktor | Opis |
|---|---|
| Gość | Niezalogowany użytkownik. Może utworzyć konto na platformie lub się zalogować. |
| Użytkownik | Zarejestrowany i aktywowany. Ocenia filmy, komentuje, zarządza listami. |
| Administrator | Pracownik obsługi. Ma dostęp do panelu Django i może moderować treści. |
Przypadki użycia (use cases)¶
UC-01 Rejestracja i aktywacja konta¶
- Aktor: Gość → Użytkownik
- Cel: Założyć konto w serwisie i aktywować je linkiem z e-maila.
- Przebieg główny:
- Gość przechodzi do
/auth/register/. - Wypełnia formularz: e-mail, opcjonalna nazwa wyświetlana, hasło (×2), wybór ulubionych gatunków.
- System tworzy konto z
is_active=Falsei wysyła e-mail aktywacyjny. - Użytkownik klika link w mailu (
/auth/activate/<uid>/<token>/). - Konto zostaje oznaczone jako aktywne i zweryfikowane.
- Gość przechodzi do
- Warunki brzegowe: link aktywacyjny ważny zgodnie z
PASSWORD_RESET_TIMEOUT(24 h). Po wygaśnięciu można go wysłać ponownie z/auth/resend-activation/.
UC-02 Logowanie i wylogowanie¶
- Aktor: Użytkownik
- Przebieg: formularz e-mail + hasło → walidacja → przekierowanie na stronę główną (
/). Wylogowanie tylko metodą POST z formularza w nagłówku.
UC-03 Reset hasła¶
- Aktor: Użytkownik
- Przebieg: standardowy flow Django (
/auth/password-reset/...) z e-mailem zawierającym jednorazowy token i ekranem ustawienia nowego hasła.
UC-04 Przeglądanie katalogu filmów¶
- Aktor: Użytkownik
- Przebieg:
/movies/pokazuje paginowaną listę. Domyślnie — popularne filmy z TMDB (z fallbackiem do lokalnej bazy). Filtry: zapytanie tekstowe (?q=), gatunek (?genre=<id>).
UC-05 Szczegóły filmu¶
- Aktor: Użytkownik
- Przebieg:
/movies/<tmdb_id>/pokazuje plakat, opis, gatunki, reżyserię i obsadę (z TMDB credits) oraz średnią ocenę. Akcje: ocena, status oglądania, komentarze.
UC-06 Wystawianie i zmiana oceny¶
- Aktor: Użytkownik
- Przebieg: modal z 10 pozycjami (0,5 – 5,0). Zapis przez POST do
movies:update_rating. Średnia (movies.average_rating) i licznik (movies.ratings_count) aktualizowane w warstwie serwisowej (movies/services.py). - Warianty: zmiana istniejącej oceny, usunięcie własnej oceny.
UC-07 Zarządzanie statusem filmu¶
- Aktor: Użytkownik
- Przebieg: dwa przyciski na widoku szczegółów — Obejrzyj później (status
watchlist) i Dodaj do obejrzanych (watched). TabelaUserMovieStatusreprezentuje obie listy w jednej, zmieniając polestatus.
UC-08 Komentowanie filmu¶
- Aktor: Użytkownik
- Przebieg: formularz pod sekcją „Komentarze". Treść zapisywana z
status=visible. Tylko autor komentarza może go usunąć. - Roadmapa: moderacja z polem
toxicity_scorei statusamiflagged/hidden.
UC-09 Edycja profilu¶
- Aktor: Użytkownik
- Przebieg: zmiana nazwy wyświetlanej (
/auth/display-name/) lub ulubionych gatunków (/auth/genres/).
UC-10 Administracja danymi¶
- Aktor: Administrator
- Przebieg: logowanie do panelu Django pod
<DJANGO_ADMIN_URL>(domyślnie/admin/). Możliwe operacje: dezaktywacja użytkowników, moderacja komentarzy (zmiana statusu nahidden), edycja gatunków, ręczna synchronizacja z TMDB.
Historie użytkownika (user stories)¶
Historie odpowiadają ścieżkom opisanym szczegółowo w Ścieżkach użytkownika — każda historia kończy się linkiem do testu E2E, który ją weryfikuje.
| ID | Jako… | chcę… | aby… | Test E2E |
|---|---|---|---|---|
| US-01 | gość | założyć konto i aktywować je linkiem z e-maila | móc oceniać filmy | tests/e2e/test_register_login.py |
| US-02 | użytkownik | przeglądać szczegóły filmu, ocenić go i napisać komentarz | dzielić się opinią | tests/e2e/test_browse_rate_comment.py |
| US-03 | użytkownik | dodać film do listy „do obejrzenia", a potem do „obejrzanych" | śledzić własną historię oglądania | tests/e2e/test_watchlist.py |
| US-04 | użytkownik | zresetować hasło przez link e-mail | odzyskać dostęp do konta | (ręczne — patrz UC-03) |
| US-05 | administrator | ukryć obraźliwy komentarz | utrzymać higienę dyskusji | (panel Django) |
Reguły biznesowe¶
- E-mail jest jedynym identyfikatorem konta (
USERNAME_FIELD = "email"). - Konto bez aktywacji nie może się zalogować (
is_active=False). - Każdy użytkownik wystawia co najwyżej jedną ocenę na film (
UniqueConstraintuq_user_movie_rating). - Każdy użytkownik ma co najwyżej jeden wpis statusu na film (
uq_user_movie_status); zmiana z „watchlist" na „watched" to UPDATE tego samego wiersza.