import type { ScenarioDefinition } from "@/lib/types";

export const scenarios: ScenarioDefinition[] = [
  {
    id: "feedback-performance",
    title: "Recadrer une baisse de performance",
    targetSkill: "Feedback & responsabilisation",
    difficulty: "Fondamentaux",
    durationLabel: "8 tours max",
    shortBrief:
      "Un collaborateur livre moins bien depuis six semaines et se montre déjà sur la défensive. Votre enjeu est de traiter le sujet sans l'humilier ni contourner l'exigence.",
    employeeProfile: {
      name: "Lucas",
      role: "Chargé de clientèle grands comptes",
      team: "Pôle relation client",
      seniority: "3 ans d'ancienneté",
      currentMood: "agacé, convaincu de faire de son mieux",
    },
    openingMessage:
      "Honnêtement, je ne comprends pas trop pourquoi on se voit. J'ai l'impression qu'on me tombe dessus alors que la charge n'a jamais été aussi forte.",
    managerGoal:
      "Nommer la baisse de performance, comprendre les causes et terminer sur un plan d'action clair et partagé.",
    successSignals: [
      "Nommer des faits précis sans attaquer la personne",
      "Explorer les causes avant de prescrire une solution",
      "Conclure sur des engagements concrets et datés",
    ],
    failureSignals: [
      "Accuser ou moraliser",
      "Négocier à la baisse les attentes de base",
      "Laisser l'échange se refermer sans plan d'action",
    ],
    completionRules: [
      "Résolu si Lucas reconnaît les faits et accepte un plan de progression.",
      "Escaladé si Lucas se ferme totalement ou quitte l'échange sur un sentiment d'injustice.",
    ],
    metricWeights: {
      empathy: 1.05,
      clarity: 1.25,
      questioning: 1,
      deescalation: 0.95,
      accountability: 1.3,
      action_alignment: 1.25,
    },
    maxTurns: 8,
    tensionColor: "#1775BA",
  },
  {
    id: "interpersonal-conflict",
    title: "Apaiser un conflit interpersonnel",
    targetSkill: "Médiation & apaisement",
    difficulty: "Intermédiaire",
    durationLabel: "9 tours max",
    shortBrief:
      "Une collaboratrice arrive à l'entretien avec beaucoup d'émotion après plusieurs tensions avec un collègue. Vous devez l'aider à sortir du face-à-face accusatoire.",
    employeeProfile: {
      name: "Sonia",
      role: "Cheffe de projet",
      team: "Transformation digitale",
      seniority: "5 ans d'ancienneté",
      currentMood: "blessée et très remontée",
    },
    openingMessage:
      "Je vais être directe : si rien ne change avec Mehdi, je ne me vois pas continuer comme ça. À chaque réunion, il me coupe et remet tout en cause.",
    managerGoal:
      "Faire redescendre la tension, distinguer faits et ressentis, puis cadrer une suite acceptable pour Sonia.",
    successSignals: [
      "Reconnaître l'émotion sans l'alimenter",
      "Faire préciser des faits observables",
      "Poser un cadre de suite juste et concret",
    ],
    failureSignals: [
      "Prendre parti trop vite",
      "Minimiser le ressenti de Sonia",
      "Rester dans le flou sur la suite à donner",
    ],
    completionRules: [
      "Résolu si Sonia se sent entendue et accepte une suite structurée.",
      "Escaladé si la tension augmente ou si Sonia annonce son retrait du projet.",
    ],
    metricWeights: {
      empathy: 1.25,
      clarity: 0.95,
      questioning: 1.05,
      deescalation: 1.35,
      accountability: 0.9,
      action_alignment: 1.1,
    },
    maxTurns: 9,
    tensionColor: "#9F1918",
  },
  {
    id: "burnout-risk",
    title: "Détecter un risque d'épuisement",
    targetSkill: "Prévention & soutien",
    difficulty: "Exigeant",
    durationLabel: "8 tours max",
    shortBrief:
      "Une collaboratrice performante donne des signaux de fatigue avancée, mais refuse de se décrire comme en difficulté. Vous devez ouvrir un espace sûr sans la pousser à se braquer.",
    employeeProfile: {
      name: "Nadia",
      role: "Responsable marketing acquisition",
      team: "Growth",
      seniority: "2 ans d'ancienneté",
      currentMood: "épuisée mais en contrôle apparent",
    },
    openingMessage:
      "Je vais bien, vraiment. Je dors un peu moins, c'est tout. On a des objectifs ambitieux et je n'ai pas envie qu'on dramatise.",
    managerGoal:
      "Faire émerger le niveau réel de fatigue, obtenir un accord sur des mesures de protection et éviter le déni managérial.",
    successSignals: [
      "Créer un espace de sécurité psychologique",
      "Reformuler sans pathologiser",
      "Convenir d'ajustements rapides et de suivi",
    ],
    failureSignals: [
      "Banaliser les signaux faibles",
      "Transformer l'échange en contrôle de performance",
      "Laisser Nadia repartir sans filet de protection",
    ],
    completionRules: [
      "Résolu si Nadia accepte des mesures de protection ou un suivi rapproché.",
      "Escaladé si Nadia repart en se sentant incomprise ou si le manager nie les signaux.",
    ],
    metricWeights: {
      empathy: 1.35,
      clarity: 0.9,
      questioning: 1.15,
      deescalation: 1.15,
      accountability: 0.85,
      action_alignment: 1.2,
    },
    maxTurns: 8,
    tensionColor: "#C1161B",
  },
  {
    id: "change-resistance",
    title: "Gérer une résistance au changement",
    targetSkill: "Influence & engagement",
    difficulty: "Intermédiaire",
    durationLabel: "9 tours max",
    shortBrief:
      "Un collaborateur senior conteste ouvertement le nouveau mode de fonctionnement et influence le reste de l'équipe. Vous devez recadrer sans casser la relation.",
    employeeProfile: {
      name: "Marc",
      role: "Responsable ADV senior",
      team: "Administration des ventes",
      seniority: "11 ans d'ancienneté",
      currentMood: "sceptique et ironique",
    },
    openingMessage:
      "Je vais vous dire franchement : ce nouveau process n'a aucun sens. On fait perdre du temps à tout le monde et personne du terrain n'a été consulté.",
    managerGoal:
      "Accueillir les objections utiles, recadrer les comportements de sabotage et rechercher un engagement minimal honnête.",
    successSignals: [
      "Distinguer les objections de fond du refus de coopération",
      "Reconnaître l'expertise de Marc sans céder le cadre",
      "Obtenir un engagement concret sur la suite",
    ],
    failureSignals: [
      "Entrer dans un bras de fer d'ego",
      "Promettre de tout remettre en question sans arbitrage",
      "Éviter le sujet du comportement en équipe",
    ],
    completionRules: [
      "Résolu si Marc accepte d'essayer le nouveau cadre sans le saboter.",
      "Escaladé si Marc repart conforté dans l'opposition ouverte.",
    ],
    metricWeights: {
      empathy: 1,
      clarity: 1.2,
      questioning: 1.05,
      deescalation: 1,
      accountability: 1.25,
      action_alignment: 1.2,
    },
    maxTurns: 9,
    tensionColor: "#6A1D41",
  },
  {
    id: "remote-disengagement",
    title: "Réengager un collaborateur distant",
    targetSkill: "Coaching & alignment",
    difficulty: "Fondamentaux",
    durationLabel: "8 tours max",
    shortBrief:
      "Un membre d'équipe à distance se montre discret, tarde à répondre et se coupe des rituels collectifs. Vous devez réengager sans tomber dans le contrôle sec.",
    employeeProfile: {
      name: "Camille",
      role: "Product designer",
      team: "Produit",
      seniority: "1 an d'ancienneté",
      currentMood: "détachée, un peu désabusée",
    },
    openingMessage:
      "J'imagine que vous voulez parler du fait que je parle moins en réunion. Franchement, j'ai surtout l'impression que ça ne change rien que je sois là ou pas.",
    managerGoal:
      "Comprendre la perte d'engagement, retisser le lien et recadrer les attentes de contribution à distance.",
    successSignals: [
      "Explorer le sentiment de déconnexion sans juger",
      "Clarifier les attentes de présence et de contribution",
      "Construire une suite réaliste pour réengager Camille",
    ],
    failureSignals: [
      "Confondre retrait et mauvaise volonté",
      "Rester vague sur les attentes",
      "Promettre un changement global sans action locale",
    ],
    completionRules: [
      "Résolu si Camille exprime ses freins et s'engage sur un prochain pas.",
      "Escaladé si elle se ferme davantage ou si l'échange devient purement défensif.",
    ],
    metricWeights: {
      empathy: 1.2,
      clarity: 1,
      questioning: 1.15,
      deescalation: 1.05,
      accountability: 0.95,
      action_alignment: 1.15,
    },
    maxTurns: 8,
    tensionColor: "#D88E04",
  },
];

export function getScenarioById(id: string) {
  return scenarios.find((scenario) => scenario.id === id);
}
