Skip to content

Multi-Series Support & Data Isolation (Preprocessor) #126

Description

@dam2452

Obecna architektura preprocessora opiera się na statycznej stałej BASE_OUTPUT_DIR wskazującej na /app/output_data. Powoduje to następujące ograniczenia:

  • Możliwość przetwarzania tylko jednego serialu naraz.
  • Mieszanie plików wyjściowych (wideo, transkrypcje, JSON) różnych seriali w tym samym katalogu.
  • Brak izolacji danych, co utrudnia zarządzanie wieloma produkcjami i czyszczenie środowiska.

Cel zadania

Celem jest wprowadzenie obsługi wielu seriali poprzez dynamiczne generowanie ścieżek wejściowych i wyjściowych w oparciu o nazwę serii (series_name). Każdy serial ma posiadać dedykowany folder wejściowy oraz wyjściowy, co zapewni pełną izolację danych.

Proponowane rozwiązanie

1. Zmiana struktury katalogów

System ma wymuszać następującą strukturę:

  • Input: /input_data/{series_name}/Sxx/.
  • Output: /app/output_data/{series_name}/ (zawierający podkatalogi transcoded_videos, transcriptions itp.).

2. Zmiany w konfiguracji (Core)

  • Zmiana preprocessor/config/config.py: Zastąpienie BASE_OUTPUT_DIR funkcją get_base_output_dir(series_name).
  • Aktualizacja preprocessor/core/output_path_builder.py: Wszystkie metody budujące ścieżki muszą przyjmować parametr series_name.

3. Walidacja (Strict Mode)

W base_processor.py należy dodać walidację ścieżki wejściowej. Jeśli struktura katalogów nie odpowiada wzorcowi /input_data/{series_name}/, proces powinien zostać przerwany z błędem i instrukcją migracji.

4. Aktualizacja procesorów i CLI

Wszystkie komponenty pipeline'u (Video, Transcription, Embedding, Indexing) oraz komendy CLI muszą zostać zaktualizowane, aby propagować series_name do warstwy generowania ścieżek.

Zakres prac (Task List)

  • Core Config:

  • Zmodyfikować config.py (dynamiczne path factory).

  • Zaktualizować output_path_builder.py (dodanie parametru series_name).

  • Dodać walidację input path w base_processor.py.

  • Processors:

  • Zaktualizować VideoTranscoder, FrameExporter, SceneDetector.

  • Zaktualizować generatory transkrypcji i embeddingów.

  • Zaktualizować ElasticDocumentGenerator i ArchiveGenerator.

  • CLI & Pipeline:

  • Dostosować run_all.py oraz pipeline/steps.py do przekazywania nazwy serii.

  • Zaktualizować pozostałe komendy (transcode, index, scrape).

Kryteria akceptacji

  • Preprocessor poprawnie przetwarza dane umieszczone w /input_data/{series_name}/.
  • Pliki wyjściowe są generowane w izolowanym katalogu /output_data/{series_name}/.
  • Próba uruchomienia na starej strukturze katalogów kończy się błędem (FileNotFoundError) z informacją o wymaganej migracji.
  • Możliwe jest równoległe uruchomienie procesu dla dwóch różnych seriali bez konfliktu plików.
  • Zmiany nie obejmują logiki bota (runtime), a jedynie generowanie danych przez preprocessor.

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