|
|
|
|
|
|
|
NVIDIA_THEME = { |
|
'primary': '#00FF88', |
|
'secondary': '#1B1B1B', |
|
'background': '#0A0A0A', |
|
'text': '#E0E0E0', |
|
'text_secondary': '#A0A0A0', |
|
'accent': '#00CC66', |
|
'error': '#FF4444', |
|
'warning': '#FFAA00', |
|
'success': '#00FF88', |
|
'border': '#333333', |
|
'card_bg': '#151515', |
|
} |
|
|
|
|
|
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, |
|
} |
|
|
|
|
|
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 |
|
``` |
|
""" |
|
} |
|
|
|
|
|
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, |
|
} |
|
} |
|
|
|
|
|
INTERVIEW_TYPES = { |
|
'fgi': 'Focus Group Interview (wywiad fokusowy)', |
|
'idi': 'In-Depth Interview (wywiad indywidualny)', |
|
'auto': 'automatyczne rozpoznanie na podstawie treści' |
|
} |
|
|
|
|
|
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, |
|
'sample_rate': 16000, |
|
} |
|
|
|
|
|
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" |
|
} |