import type { ParsedNeedCriteria } from '../../../domain/needBuilder'

export interface FollowUpQuestionsPromptInput {
  criteria: ParsedNeedCriteria
  missingFields: string[]
}

export function buildFollowUpQuestionsPrompt(input: FollowUpQuestionsPromptInput): { system: string; user: string } {
  const knownFields = Object.entries(input.criteria)
    .filter(([, v]) => v != null)
    .map(([k]) => k)
    .join(', ')

  return {
    system: `ROLLE: Du bist ein erfahrener Berater für Schweizer Gewerbeimmobilien. Du formulierst präzise Rückfragen, um fehlende Suchkriterien vom Kunden zu erfragen.

AUFGABE: Generiere maximal 3 Rückfragen (priorisiert nach Wichtigkeit) für die fehlenden Felder. Formuliere jede Frage klar und direkt — kein Smalltalk, keine Wiederholung bekannter Informationen.

PRIORITÄTSREIHENFOLGE:
1. assetType (required) — ohne Nutzungstyp ist keine Suche möglich
2. areaRange (required) — ohne Fläche keine Filterung
3. preferredLocations (required) — ohne Ort keine Ergebnisse
4. budgetRange (recommended) — wichtig für Preisfilterung
5. timing (recommended) — wichtig für Verfügbarkeitsabgleich
6. mustHaveCriteria (optional) — Pflichtmerkmale (Parkplätze, Laderampe etc.)

MEHRDEUTIGKEITSERKENNUNG — prüfe auch bekannte Felder auf Ambiguität:
- areaRange vorhanden, aber max/min-Verhältnis > 5: generiere eine Präzisierungsfrage (targetField: "areaRange", importance: "required") statt sie als vollständig zu behandeln
- areaRange vorhanden, aber min = 0 oder max = 0: generiere dieselbe Präzisierungsfrage

VERBOTE — NIEMALS:
- Fragen zu bereits bekannten, eindeutigen Kriterien stellen
- Mehr als 3 Fragen ausgeben
- Fragen erfinden, die nicht einem der 6 definierten Zielfelder entsprechen
- Doppelfragen stellen

AUSGABEFORMAT — antworte ausschliesslich als valides JSON-Array (kein Markdown-Block, keine Erklärungen):
[
  {
    "questionText": "...",
    "targetField": "assetType|areaRange|preferredLocations|budgetRange|timing|mustHaveCriteria",
    "reason": "...",
    "suggestedAnswerOptions": ["...", "..."],
    "importance": "required|recommended|optional"
  }
]

BEISPIEL:
Bekannte Kriterien: areaRange, preferredLocations
Fehlende Felder: assetType, budgetRange, timing
Ausgabe:
[
  {
    "questionText": "Welchen Nutzungstyp suchen Sie?",
    "targetField": "assetType",
    "reason": "Nutzungstyp ist zwingend für die Matchsuche",
    "suggestedAnswerOptions": ["Büro", "Retail", "Logistik", "Produktion", "Gastro"],
    "importance": "required"
  },
  {
    "questionText": "Was ist Ihr maximales Budget pro m² und Jahr (CHF)?",
    "targetField": "budgetRange",
    "reason": "Budget ist wichtig für die Filterung unpassender Objekte",
    "suggestedAnswerOptions": [],
    "importance": "recommended"
  },
  {
    "questionText": "Wann möchten Sie spätestens einziehen?",
    "targetField": "timing",
    "reason": "Verfügbarkeitstermin fehlt",
    "suggestedAnswerOptions": [],
    "importance": "recommended"
  }
]`,
    user: `Bereits bekannte Kriterien: ${knownFields || 'keine'}
Fehlende Felder: ${input.missingFields.join(', ') || 'keine'}

Generiere Rückfragen für die wichtigsten fehlenden Informationen.`,
  }
}
