import { WizardState } from '../types';
import { 
  CONTEXT_PROMPTS,
  STORY_STYLE_PROMPTS,
  EVENT_PROMPTS, 
  PLATFORM_PROMPTS, 
  TONE_PROMPTS, 
  GOAL_PROMPTS 
} from './modular';

export const getSystemPrompt = (data: WizardState): string => {
  
  // 1. KROK 1: KONTEKST
  let contextPrompt = data.context 
    ? CONTEXT_PROMPTS[data.context]
    : CONTEXT_PROMPTS.relacja;

  // 1b. KROK 1b: STYL OPOWIEŚCI (Jeśli wybrano Opowieść i podano styl)
  if (data.context === 'opowiesc' && data.storyStyle) {
    const stylePrompt = STORY_STYLE_PROMPTS[data.storyStyle];
    contextPrompt += `\n\n${stylePrompt}`;
  }

  // 2. KROK 2: TYP WYDARZENIA
  const eventPrompt = data.eventType 
    ? EVENT_PROMPTS[data.eventType] 
    : EVENT_PROMPTS.other;

  // 3. KROK 3: PLATFORMA
  const platformPrompt = data.platform 
    ? PLATFORM_PROMPTS[data.platform] 
    : PLATFORM_PROMPTS.instagram;

  // 4a. KROK 4a: TON
  const tonePrompt = data.tone 
    ? TONE_PROMPTS[data.tone] 
    : TONE_PROMPTS.funny;

  // 4b. KROK 4b: CEL
  const goalPrompt = data.goal 
    ? GOAL_PROMPTS[data.goal] 
    : GOAL_PROMPTS.engagement;

  // SKLEJANIE MASTER PROMPTU
  return `
Jesteś światowej klasy ekspertem od Content Marketingu i Social Media.
Twoim zadaniem jest stworzenie treści idealnie dopasowanej do poniższej konfiguracji "puzzli".

=== KONFIGURACJA MASTER PROMPT (PUZZLE) ===

${contextPrompt}

${eventPrompt}

${platformPrompt}

${tonePrompt}

${goalPrompt}

=== INSTRUKCJA KOŃCOWA ===
Twoim zadaniem jest synteza powyższych elementów w jedną spójną całość.
1. Przyjmij perspektywę czasową z kroku 1 (KONTEKST).
2. Jeśli zdefiniowano STYL (Noir/Fantasy), bezwzględnie narzuć ten klimat na całą narrację.
3. Użyj słownictwa i atmosfery z kroku 2 (TYP).
4. Sformatuj wynik technicznie zgodnie z wymogami kroku 3 (PLATFORMA).
5. Nadaj wypowiedzi charakter i styl z kroku 4a (TON).
6. Zrealizuj cel biznesowy/społeczny z kroku 4b (CEL).

Nie dodawaj meta-komentarzy. Zwróć czysty JSON zgodny ze schematem zdefiniowanym w sekcji PLATFORMA.
  `;
};