# config.py - Konfiguracja aplikacji FGI/IDI Analyzer # Kolorystyka NVIDIA - Gaming/Tech Style NVIDIA_THEME = { 'primary': '#00FF88', # Bright neon green (akcenty) 'secondary': '#1B1B1B', # Very dark gray (tło sekcji) 'background': '#0A0A0A', # Near black (główne tło) 'text': '#E0E0E0', # Light gray text 'text_secondary': '#A0A0A0', # Darker gray for secondary text 'accent': '#00CC66', # Darker green for hover states 'error': '#FF4444', # Red 'warning': '#FFAA00', # Orange 'success': '#00FF88', # Same as primary 'border': '#333333', # Dark border 'card_bg': '#151515', # Card backgrounds } # Ustawienia domyślne DEFAULT_SETTINGS = { 'max_file_size_mb': 20, 'max_total_size_mb': 500, 'supported_formats': ['mp3', 'wav', 'mp4', 'm4a', 'aac'], 'whisper_model': 'whisper-1', 'gpt_model': 'gpt-4o-mini', 'default_language': 'pl', 'chunk_overlap_seconds': 5, 'max_retries': 3, 'timeout_seconds': 300, } # Prompty dla różnych etapów raportowania REPORT_PROMPTS = { 'outline_generator': """ Jesteś ekspertem analizy badań jakościowych. Na podstawie dostarczonych transkrypcji z wywiadów {interview_type} oraz briefu badawczego, stwórz szczegółowy plan raportu badawczego. TRANSKRYPCJE: {transcriptions} BRIEF BADAWCZY: {brief} ZADANIE: Przeanalizuj materiał i stwórz outline raportu, który: 1. Odpowie na cele badawcze z briefu 2. Uwzględni specyfikę {interview_type} 3. Będzie miał logiczną strukturę od ogółu do szczegółu 4. Pozwoli na głęboką analizę insights WYMAGANIA: - Outline powinien mieć 5-8 głównych sekcji - Każda sekcja z 3-5 podpunktami - Uwzględnij cytaty/przykłady tam gdzie to sensowne - Zaplanuj miejsca na insights, wnioski, rekomendacje FORMAT ODPOWIEDZI: ``` # OUTLINE RAPORTU ## 1. [Nazwa sekcji] - [Podpunkt 1] - [Podpunkt 2] - [Podpunkt 3] ## 2. [Nazwa sekcji] ... ``` """, 'section_generator': """ Jesteś ekspertem analizy badań jakościowych. Napisz szczegółową sekcję raportu zgodnie z planem. CONTEXT: - Typ wywiadu: {interview_type} - Brief badawczy: {brief} - Plan całego raportu: {outline} TRANSKRYPCJE: {transcriptions} ZADANIE: Napisz sekcję: "{section_title}" Podpunkty do uwzględnienia: {section_points} WYMAGANIA: - Sekcja powinna mieć 800-1500 słów - Użyj konkretnych cytatów z transkrypcji - Analizuj głęboko, nie tylko opisuj - Połącz insights z celami biznesowymi - Używaj podtytułów dla czytelności - Zachowaj obiektywność ale wyciągnij wnioski STYLE: - Profesjonalny ale przystępny język - Strukturyzowany, z jasnymi insights - Cytaty w cudzysłowach z oznaczeniem respondenta - Wnioski poparte danymi z wywiadów """, 'section_expander': """ Otrzymałeś sekcję raportu, która jest zbyt krótka i powierzchowna. Twoim zadaniem jest ją znacznie rozszerzyć i pogłębić. OBECNA SEKCJA: {current_section} DOSTĘPNE TRANSKRYPCJE: {transcriptions} CONTEXT: {brief} ZADANIE: Rozszerz tę sekcję do 1000-1500 słów poprzez: 1. **Pogłębienie analizy** - zadaj sobie pytania: - Jakie są głębsze przyczyny tych zachowań/opinii? - Jakie wzorce widać w różnych grupach respondentów? - Jak to łączy się z celami biznesowymi? 2. **Dodanie cytatów** - znajdź w transkrypcjach: - Konkretne przykłady wspierające tezy - Różnorodne perspektywy respondentów - Emocjonalne reakcje i spontaniczne komentarze 3. **Strukturyzacja** - podziel na podsekcje: - Główne tematy/wątki - Segmenty respondentów - Konkretne insights 4. **Praktyczne wnioski** - dodaj: - Implikacje dla biznesu - Możliwe działania - Ryzyka i szanse WYMAGANIA: - Zachowaj oryginalną strukturę ale ją rozbuduj - Dodaj minimum 5 cytatów z transkrypcji - Każdy wniosek uzasadnij danymi - Użyj podtytułów dla czytelności """, 'final_assembly': """ Jesteś ekspertem analizy badań jakościowych. Twoim zadaniem jest sfinalizowanie raportu - dodanie wprowadzenia, executive summary i spójne połączenie wszystkich sekcji. SEKCJE RAPORTU: {sections} BRIEF BADAWCZY: {brief} METADANE: - Typ badania: {interview_type} - Liczba wywiadów: {interviews_count} - Data analizy: {date} ZADANIE: Stwórz kompletny raport dodając: 1. **EXECUTIVE SUMMARY** (300-500 słów): - Główne insights z każdej sekcji - Key takeaways dla biznesu - Top 3 rekomendacje 2. **WPROWADZENIE** (200-300 słów): - Cele badania - Metodologia - Struktura raportu 3. **ZAKOŃCZENIE** (300-400 słów): - Podsumowanie głównych wniosków - Rekomendacje działań - Sugerowane dalsze kroki 4. **SPÓJNOŚĆ**: - Dodaj przejścia między sekcjami - Ujednolic style i terminologię - Sprawdź logiczny przepływ FORMAT: ``` # RAPORT Z BADANIA [TYP] ## EXECUTIVE SUMMARY [treść] ## 1. WPROWADZENIE [treść] ## 2. METODOLOGIA [treść] [SEKCJE GŁÓWNE] ## ZAKOŃCZENIE I REKOMENDACJE [treść] ## APPENDIX - Informacje o respondentach - Dodatkowe cytaty ``` """, 'quality_checker': """ Otrzymałeś sekcję raportu do oceny jakości. Sprawdź czy spełnia standardy profesjonalnego raportu z badań jakościowych. SEKCJA DO OCENY: {section} KRYTERIA OCENY: 1. **Długość**: Czy ma 800+ słów? 2. **Głębokość**: Czy analizuje przyczyny, nie tylko opisuje? 3. **Cytaty**: Czy ma konkretne przykłady z wywiadów? 4. **Struktura**: Czy ma logiczny podział i podtytuły? 5. **Insights**: Czy wyciąga praktyczne wnioski? 6. **Biznesowość**: Czy łączy z celami biznesowymi? ZADANIE: Oceń sekcję w skali 1-10 za każde kryterium i podaj: - Ogólną ocenę - Konkretne problemy do poprawy - Sugestie rozszerzeń FORMAT: ``` OCENA JAKOŚCI: - Długość: X/10 - Głębokość: X/10 - Cytaty: X/10 - Struktura: X/10 - Insights: X/10 - Biznesowość: X/10 ŚREDNIA: X/10 PROBLEMY: - [konkretny problem 1] - [konkretny problem 2] SUGESTIE: - [sugestia poprawy 1] - [sugestia poprawy 2] CZY WYMAGA POPRAWY: TAK/NIE ``` """ } # Ustawienia modeli MODEL_SETTINGS = { 'whisper': { 'model': 'whisper-1', 'language': 'pl', 'temperature': 0, 'max_retries': 3, }, 'gpt': { 'model': 'gpt-4o-mini', 'temperature': 0.3, 'max_tokens': 4000, 'max_retries': 3, 'timeout': 300, } } # Mapowanie typów wywiadów INTERVIEW_TYPES = { 'fgi': 'Focus Group Interview (wywiad fokusowy)', 'idi': 'In-Depth Interview (wywiad indywidualny)', 'auto': 'automatyczne rozpoznanie na podstawie treści' } # Ustawienia przetwarzania plików FILE_PROCESSING = { 'max_single_file_mb': 200, 'chunk_size_mb': 15, 'supported_audio_formats': ['mp3', 'wav', 'm4a', 'aac'], 'supported_video_formats': ['mp4', 'mov', 'avi'], 'compression_quality': 64, # kbps dla audio 'sample_rate': 16000, # Hz } # Komunikaty dla użytkownika USER_MESSAGES = { 'file_too_large': "Plik {filename} jest za duży ({size}MB). Maksymalnie {max_size}MB. Czy chcesz go skompresować automatycznie?", 'compression_success': "✅ Plik {filename} skompresowany z {old_size}MB do {new_size}MB", 'transcription_start': "🎙️ Rozpoczynam transkrypcję: {filename}", 'transcription_success': "✅ Transkrypcja zakończona: {filename}", 'transcription_error': "❌ Błąd transkrypcji {filename}: {error}", 'report_generation_start': "📄 Generuję raport badawczy...", 'report_section_done': "✅ Sekcja '{section}' wygenerowana", 'report_complete': "🎉 Raport badawczy gotowy!", 'api_key_missing': "⚠️ Wprowadź klucz OpenAI API", 'processing_stopped': "⏹️ Przetwarzanie zatrzymane przez użytkownika", 'no_files_uploaded': "📁 Nie załadowano żadnych plików", 'session_reset': "🔄 Sesja została zresetowana" }