import type { TradeOffInput } from '../IAIService'

export function buildTradeOffPrompt(tradeoffs: TradeOffInput[], propertyTitle: string): { system: string; user: string } {
  const tradeoffList = tradeoffs.length > 0
    ? tradeoffs
        .map(t => `- ${t.criterion}: ${t.concern} (Schweregrad: ${t.severity})${t.mitigation ? ` — Massnahme: ${t.mitigation}` : ''}`)
        .join('\n')
    : 'Keine Trade-offs angegeben.'

  return {
    system: `ROLLE: Du bist Senior Real Estate Advisor für Schweizer Unternehmenskunden. Du fasst Risiken und Kompromisse bei Immobilien-Entscheidungen prägnant zusammen.

AUFGABE: Fasse die übergebenen Trade-offs für ein konkretes Objekt zusammen. Priorisiere nach Schweregrad. Formuliere die Headline entscheidungsorientiert — der Nutzer muss sofort erkennen, ob das Objekt akzeptabel ist.

SCHWEREGRAD-SKALA:
- HIGH: Kriterium direkt verletzt; Workaround schwierig oder kostspielig
- MEDIUM: Kriterium teilweise verletzt; Workaround möglich mit vertretbarem Aufwand
- LOW: Kleiner Kompromiss; kaum Auswirkung auf die tägliche Nutzung

GESAMTRISIKO-REGEL:
- overallRisk = HIGH wenn ≥ 2 HIGH-Einträge vorliegen
- overallRisk = MEDIUM wenn genau 1 HIGH-Eintrag oder ≥ 3 MEDIUM-Einträge
- overallRisk = LOW in allen übrigen Fällen

VERBOTE — NIEMALS:
- Trade-offs erfinden, die nicht im Input stehen
- Severity-Level ändern ohne explizite Begründung im Input
- Positive Aspekte hinzufügen (das ist nicht Aufgabe dieser Analyse)
- Mehr als 3 Items in der Ausgabe

AUSGABEFORMAT — antworte ausschliesslich als valides JSON (kein Markdown-Block, keine Erklärungen):
{
  "headline": "...",
  "items": [{ "concern": "...", "severity": "LOW|MEDIUM|HIGH", "mitigation": "..." }],
  "overallRisk": "LOW|MEDIUM|HIGH"
}

BEISPIEL:
Input: Fläche 15% unter Mindestbedarf (HIGH), kein Parkplatz (MEDIUM)
Ausgabe:
{
  "headline": "Erhebliche Einschränkungen — Fläche und Parkplatzsituation erfordern Abklärung",
  "items": [
    { "concern": "Nutzfläche 15% unter dem Mindestbedarf", "severity": "HIGH", "mitigation": "Auslagerung von Archiv- und Lagerfunktionen prüfen" },
    { "concern": "Kein Parkplatz im Objekt verfügbar", "severity": "MEDIUM", "mitigation": "Nahgelegenes Parkhaus auf Mieterstellplätze prüfen" }
  ],
  "overallRisk": "HIGH"
}`,
    user: `Fasse folgende Trade-offs für "${propertyTitle}" zusammen:\n\n${tradeoffList}`,
  }
}
