QualiLab / config.py
Marek4321's picture
Update config.py
a1c1618 verified
# 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"
}