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)
- Dla zapytania
/postacie [name]:
Sortowanie po polu przechowującym score detekcji twarzy/postaci (descending).
- 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
- Wpisanie
/postacie zwraca listę aktorów z liczbą odcinków (z wyłączeniem Sezonu 0).
- Wpisanie
/postacie Lucy zwraca sceny z Lucy, zaczynając od tych, gdzie widać ją najlepiej/najpewniej.
- Wpisanie
/postacie Kusy Złość (lub /postacie Kusy Anger) zwraca sceny, gdzie Kusy jest zły, zaczynając od tych, gdzie emocja jest najsilniejsza.
- Wpisanie
/emocje wyświetla przetłumaczoną listę dostępnych stanów emocjonalnych.
- System obsługuje brakujące tłumaczenia emocji (fallback do ang.).
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,/pKomenda ma działać w trzech trybach w zależności od liczby przekazanych argumentów.
Tryb A: Lista postaci (brak argumentów)
Tryb B: Wyszukiwanie scen z postacią (1 argument)
/sz(standardowy widok wyszukiwania).Tryb C: Wyszukiwanie scen z postacią i emocją (2 argumenty)
2. Komenda /emocje
Aliasy:
/emotion,/eJOY,SADNESS) mają zostać zmapowane na język polski przed wyświetleniem.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:
Logika Sortowania (Elasticsearch)
/postacie [name]:Sortowanie po polu przechowującym score detekcji twarzy/postaci (
descending)./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
/postaciezwraca listę aktorów z liczbą odcinków (z wyłączeniem Sezonu 0)./postacie Lucyzwraca sceny z Lucy, zaczynając od tych, gdzie widać ją najlepiej/najpewniej./postacie Kusy Złość(lub/postacie Kusy Anger) zwraca sceny, gdzie Kusy jest zły, zaczynając od tych, gdzie emocja jest najsilniejsza./emocjewyświetla przetłumaczoną listę dostępnych stanów emocjonalnych.