Skip to content

System wyszukiwania postaci i emocji (/postacie, /emocje) #129

@dam2452

Description

@dam2452

Celem zadania jest wdrożenie nowych możliwości wyszukiwania w oparciu o metadane rozpoznane przez AI: postacie oraz ich emocje. Funkcjonalność ma zostać udostępniona użytkownikom poprzez dwie nowe komendy główne.

Specyfikacja Funkcjonalna

1. Komenda /postacie

Aliasy: /characters, /p

Komenda ma działać w trzech trybach w zależności od liczby przekazanych argumentów.

Tryb A: Lista postaci (brak argumentów)

  • Działanie: Wyświetla listę wszystkich unikalnych postaci dostępnych w indeksie.
  • Szczegóły wyświetlania: Obok nazwy postaci musi znaleźć się informacja, w ilu odcinkach ta postać wystąpiła.
  • Filtrowanie: Należy ignorować wystąpienia z sezonu 0 (odcinki specjalne).
  • Format: Lista tekstowa lub tabela.

Tryb B: Wyszukiwanie scen z postacią (1 argument)

  • Argument: Nazwa postaci (case-insensitive).
  • Działanie: Zwraca listę scen, w których wykryto daną postać.
  • Format wyniku: Taki sam jak w komendzie /sz (standardowy widok wyszukiwania).
  • Sortowanie: Wyniki mają być posortowane malejąco według pewności wykrycia postaci (character detection confidence).

Tryb C: Wyszukiwanie scen z postacią i emocją (2 argumenty)

  • Argumenty: Nazwa postaci + Emocja.
  • Działanie: Zwraca sceny, w których występuje dana postać i wykazuje określoną emocję.
  • Obsługa języka: Argument "emocja" może być podany po polsku lub po angielsku (np. "złość" lub "anger").
  • Sortowanie: W tym trybie priorytetem sortowania jest pewność wykrycia emocji (emotion confidence) malejąco.

2. Komenda /emocje

Aliasy: /emotion, /e

  • Działanie: Wyświetla listę wszystkich dostępnych emocji zaindeksowanych w Elasticsearch.
  • Mapowanie: Klucze emocji (zazwyczaj angielskie, np. JOY, SADNESS) mają zostać zmapowane na język polski przed wyświetleniem.
  • Fallback: Jeśli w bazie pojawi się nowa emocja, która nie posiada jeszcze mapowania w kodzie, należy wyświetlić jej surową nazwę angielską.

Szczegóły Techniczne

Mapowanie Emocji

Należy stworzyć słownik mapujący angielskie etykiety z modelu AI na polskie nazwy dla użytkownika. System musi obsługiwać mapowanie w obie strony (wyświetlanie PL, przyjmowanie inputu PL/EN).

Przykładowa struktura logiczna:

  • JOY -> Radość
  • ANGER -> Złość
  • SADNESS -> Smutek
  • FEAR -> Strach
  • SURPRISE -> Zaskoczenie
  • NEUTRAL -> Neutralny
  • ... (pozostałe według danych z ES)

Logika Sortowania (Elasticsearch)

  1. Dla zapytania /postacie [name]:
    Sortowanie po polu przechowującym score detekcji twarzy/postaci (descending).
  2. Dla zapytania /postacie [name] [emotion]:
    Sortowanie po polu przechowującym score detekcji emocji (descending). Wynik z wyższą pewnością emocji ma być wyżej, nawet jeśli pewność rozpoznania samej postaci jest niższa (zakładając, że próg odcięcia dla postaci został spełniony).

Kryteria Akceptacji

  1. Wpisanie /postacie zwraca listę aktorów z liczbą odcinków (z wyłączeniem Sezonu 0).
  2. Wpisanie /postacie Lucy zwraca sceny z Lucy, zaczynając od tych, gdzie widać ją najlepiej/najpewniej.
  3. Wpisanie /postacie Kusy Złość (lub /postacie Kusy Anger) zwraca sceny, gdzie Kusy jest zły, zaczynając od tych, gdzie emocja jest najsilniejsza.
  4. Wpisanie /emocje wyświetla przetłumaczoną listę dostępnych stanów emocjonalnych.
  5. System obsługuje brakujące tłumaczenia emocji (fallback do ang.).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions