const CATS = {
  engagement: { label: "Engagement irréaliste", short: "Engagement", desc: "Délai, périmètre ou capacité promis sans validation interne." },
  garantie: { label: "Garantie de résultat", short: "Garantie", desc: "Promesse d'un résultat que l'entreprise ne peut pas garantir." },
  reputation: { label: "Risque réputationnel", short: "Réputation", desc: "Ton inapproprié ou formulation exposant l'image de l'entreprise." },
};

const RISK = {
  critique: { label: "Critique", color: "var(--r-crit)", bg: "var(--r-crit-bg)", n: 3 },
  moyen: { label: "Moyen", color: "var(--r-mid)", bg: "var(--r-mid-bg)", n: 2 },
  faible: { label: "Faible", color: "var(--r-low)", bg: "var(--r-low-bg)", n: 1 },
};

const QUEUE = [
  {
    id: "M-4821", risk: "critique", status: "attente", waited: "il y a 4 min", score: 88,
    from: { name: "Camille Fournier", email: "c.fournier@nordis.fr", role: "Ingénieure d'affaires" },
    to: "achats@groupe-lemaire.com", cc: "", subject: "RE: Migration ERP — engagement de calendrier",
    body: [
      { t: "Bonjour Monsieur Lemaire," },
      { t: "Merci pour votre retour de ce matin. Je vous confirme que nous pouvons livrer l'intégralité de la migration ERP pour le 15 septembre, sans exception.", f: 0 },
      { t: "Sur le volet performance, je m'engage à ce que les temps de réponse soient divisés par deux dès la mise en production, c'est garanti.", f: 1 },
      { t: "Concernant le budget, je vous accorde 18% de remise sur la phase de conception, on trouvera un arrangement en interne." , f: 2 },
      { t: "Je reste à votre disposition pour caler un point mardi." },
      { t: "Bien à vous,\nCamille Fournier" },
    ],
    flags: [
      { cat: "engagement", sev: "critique", quote: "nous pouvons livrer l'intégralité de la migration ERP pour le 15 septembre, sans exception", why: "Engagement de date ferme sur un périmètre complet, formulé sans réserve ni condition de réversibilité. Aucun jalon de validation interne n'est mentionné.", fix: "nous visons une mise en production de la migration ERP à la mi-septembre, sous réserve de la validation du périmètre définitif" },
      { cat: "garantie", sev: "critique", quote: "les temps de réponse soient divisés par deux dès la mise en production, c'est garanti", why: "Garantie d'un gain de performance chiffré. Une performance dépend de l'infrastructure du client et ne peut être garantie contractuellement.", fix: "les premiers relevés de performance montrent un gain significatif sur des environnements comparables ; nous établirons une cible chiffrée après l'audit d'infrastructure" },
      { cat: "engagement", sev: "moyen", quote: "je vous accorde 18% de remise sur la phase de conception", why: "Remise supérieure au seuil de délégation commerciale habituel, annoncée avant arbitrage interne.", fix: "je porte votre demande de geste commercial à la direction et reviens vers vous sous 48 h" },
    ],
  },
  {
    id: "M-4820", risk: "critique", status: "attente", waited: "il y a 11 min", score: 81,
    from: { name: "Tarek Benali", email: "t.benali@nordis.fr", role: "Consultant senior" },
    to: "dsi@ville-arcueil.fr", cc: "j.marchand@nordis.fr", subject: "Audit sécurité — conclusions provisoires",
    body: [
      { t: "Bonjour Madame Roussel," },
      { t: "Après une première lecture, je peux vous assurer qu'aucune faille exploitable ne subsiste sur votre périmètre.", f: 0 },
      { t: "Entre nous, l'équipe précédente a manifestement bâclé le travail, ce qui n'est pas très professionnel de leur part.", f: 1 },
      { t: "Je vous transmets le rapport complet demain.", },
      { t: "Cordialement,\nTarek Benali" },
    ],
    flags: [
      { cat: "garantie", sev: "critique", quote: "je peux vous assurer qu'aucune faille exploitable ne subsiste", why: "Affirmation absolue de sécurité à partir d'une analyse provisoire. Formulation susceptible d'être opposée à l'entreprise en cas d'incident.", fix: "les premiers éléments ne révèlent pas de faille exploitable sur le périmètre audité ; les conclusions définitives figureront dans le rapport" },
      { cat: "reputation", sev: "moyen", quote: "l'équipe précédente a manifestement bâclé le travail", why: "Mise en cause dépréciative d'un tiers dans un écrit adressé au client, avec un consultant en copie.", fix: "le périmètre présente des écarts documentés par rapport à l'état de l'art, que nous détaillons dans le rapport" },
    ],
  },
  {
    id: "M-4818", risk: "moyen", status: "attente", waited: "il y a 26 min", score: 57,
    from: { name: "Léa Vasseur", email: "l.vasseur@nordis.fr", role: "Chargée de projet" },
    to: "contact@atelier-brun.fr", cc: "", subject: "Prolongation de la phase de test",
    body: [
      { t: "Bonjour Julien," },
      { t: "Pas d'inquiétude, on vous prolonge la phase de test autant que nécessaire, sans surcoût.", f: 0 },
      { t: "On se cale un point la semaine prochaine ?" },
      { t: "Léa" },
    ],
    flags: [
      { cat: "engagement", sev: "moyen", quote: "on vous prolonge la phase de test autant que nécessaire, sans surcoût", why: "Engagement de durée indéterminée à titre gratuit. Absence de borne temporelle et de contrepartie.", fix: "nous pouvons prolonger la phase de test de deux semaines sans surcoût ; au-delà, nous ajusterons ensemble le calendrier" },
    ],
  },
  {
    id: "M-4815", risk: "moyen", status: "attente", waited: "il y a 1 h", score: 49,
    from: { name: "Hugo Delmas", email: "h.delmas@nordis.fr", role: "Ingénieur d'affaires" },
    to: "p.mercier@sogeva.com", cc: "", subject: "Proposition commerciale — clause d'exclusivité",
    body: [
      { t: "Bonjour Pierre," },
      { t: "Nous acceptons bien sûr la clause d'exclusivité sur votre secteur pour les trois prochaines années.", f: 0 },
      { t: "Je vous envoie le contrat mis à jour dans la journée." },
      { t: "Hugo Delmas" },
    ],
    flags: [
      { cat: "engagement", sev: "moyen", quote: "Nous acceptons bien sûr la clause d'exclusivité sur votre secteur pour les trois prochaines années", why: "Acceptation d'une exclusivité sectorielle pluriannuelle exprimée sans réserve, engageant l'entreprise au-delà du mandat commercial usuel.", fix: "votre demande d'exclusivité sectorielle est recevable dans son principe ; sa durée et son périmètre doivent être arbitrés par notre direction juridique" },
    ],
  },
  {
    id: "M-4809", risk: "faible", status: "attente", waited: "il y a 2 h", score: 24,
    from: { name: "Sonia Kacem", email: "s.kacem@nordis.fr", role: "Consultante" },
    to: "equipe-produit@vireo.io", cc: "", subject: "Compte rendu atelier du 12/07",
    body: [
      { t: "Bonjour à tous," },
      { t: "Vous trouverez ci-joint le compte rendu. Je pense qu'on pourra tenir la date de recette sans problème.", f: 0 },
      { t: "Bonne journée,\nSonia" },
    ],
    flags: [
      { cat: "engagement", sev: "faible", quote: "on pourra tenir la date de recette sans problème", why: "Formulation rassurante sur un jalon non confirmé. Risque faible mais l'écrit peut être invoqué comme un accord.", fix: "la date de recette reste atteignable au vu de l'avancement à ce jour" },
    ],
  },
  { id: "M-4802", risk: "critique", status: "valide", waited: "hier, 17:42", score: 76, decidedBy: "Julie Marchand", from: { name: "Marc Estève", email: "m.esteve@nordis.fr", role: "Directeur de mission" }, to: "achat@filoflex.fr", cc: "", subject: "Reprise du lot 3", body: [{ t: "Bonjour, nous reprenons le lot 3 à nos frais." , f: 0}], flags: [{ cat: "engagement", sev: "critique", quote: "nous reprenons le lot 3 à nos frais", why: "Prise en charge financière annoncée sans chiffrage.", fix: "nous étudions une reprise du lot 3 et reviendrons vers vous avec les modalités" }] },
  { id: "M-4799", risk: "moyen", status: "refuse", waited: "hier, 15:10", score: 61, decidedBy: "Julie Marchand", from: { name: "Tarek Benali", email: "t.benali@nordis.fr", role: "Consultant senior" }, to: "contact@sogeva.com", cc: "", subject: "RE: Retard de livraison", body: [{ t: "Franchement ce retard n'est pas de notre fait, votre équipe n'a jamais répondu.", f: 0 }], flags: [{ cat: "reputation", sev: "moyen", quote: "votre équipe n'a jamais répondu", why: "Mise en cause directe du client dans un contexte de litige.", fix: "plusieurs relances sont restées sans réponse de part et d'autre ; reprenons le calendrier ensemble" }] },
];

const FIXES = [
  { id: "C-9912", at: "14:38", from: "Léa Vasseur", to: "contact@atelier-brun.fr", subject: "Livraison des maquettes", ms: 740, items: [ { k: "orthographe", b: "Je vous envois les maquettes", a: "Je vous envoie les maquettes" }, { k: "syntaxe", b: "comme convenu hier ensemble lors de notre echange", a: "comme convenu lors de notre échange d'hier" } ] },
  { id: "C-9911", at: "14:31", from: "Hugo Delmas", to: "p.mercier@sogeva.com", subject: "RE: Devis 2024-118", ms: 610, items: [ { k: "formulation", b: "Du coup je reviens vers vous vite fait sur le devis", a: "Je reviens vers vous concernant le devis" } ] },
  { id: "C-9908", at: "13:57", from: "Sonia Kacem", to: "equipe-produit@vireo.io", subject: "Atelier de cadrage", ms: 820, items: [ { k: "grammaire", b: "Les documents que je vous ai transmit", a: "Les documents que je vous ai transmis" }, { k: "orthographe", b: "un délais de deux semaines", a: "un délai de deux semaines" }, { k: "formulation", b: "ça serait bien de se voir", a: "je vous propose que nous nous rencontrions" } ] },
  { id: "C-9903", at: "11:12", from: "Camille Fournier", to: "achats@groupe-lemaire.com", subject: "Suivi de la phase 2", ms: 690, items: [ { k: "grammaire", b: "Les livrables sera disponible", a: "Les livrables seront disponibles" } ] },
  { id: "C-9897", at: "10:04", from: "Marc Estève", to: "dsi@ville-arcueil.fr", subject: "Point hebdomadaire", ms: 580, items: [ { k: "orthographe", b: "Bonjours Madame Roussel", a: "Bonjour Madame Roussel" }, { k: "syntaxe", b: "Nous avons pris note de votre demande et nous allons y répondre dans les meilleurs délais possibles rapidement", a: "Nous avons pris note de votre demande et y répondrons dans les meilleurs délais" } ] },
];

const FIXKIND = { orthographe: "Orthographe", grammaire: "Grammaire", syntaxe: "Syntaxe", formulation: "Formulation" };

const CONSULTANTS = [
  { name: "Julie Marchand", email: "j.marchand@nordis.fr", role: "Administratrice", scope: "Tous les e-mails", last: "En ligne", active: true },
  { name: "Olivier Prat", email: "o.prat@nordis.fr", role: "Consultant", scope: "Tous les e-mails", last: "il y a 12 min", active: true },
  { name: "Nadia Chérif", email: "n.cherif@nordis.fr", role: "Consultante", scope: "Tous les e-mails", last: "il y a 2 h", active: true },
  { name: "Bruno Aymard", email: "b.aymard@nordis.fr", role: "Consultant", scope: "Tous les e-mails", last: "il y a 6 j", active: false },
];

const VOLUMES = [
  { k: "Analysés", v: 12480, d: "+8,2%", tone: "ink" },
  { k: "Corrigés automatiquement", v: 3104, d: "+11,4%", tone: "primary" },
  { k: "Validés après revue", v: 186, d: "−3,1%", tone: "low" },
  { k: "En attente", v: 5, d: "temps réel", tone: "mid" },
];

const SERIES = [
  { d: "L", a: 2180, c: 540, r: 31 }, { d: "M", a: 2410, c: 612, r: 38 }, { d: "M", a: 2295, c: 588, r: 26 },
  { d: "J", a: 2620, c: 701, r: 44 }, { d: "V", a: 2410, c: 585, r: 35 }, { d: "S", a: 340, c: 52, r: 4 }, { d: "D", a: 225, c: 26, r: 2 },
];

const COSTS = [
  { model: "Claude Sonnet 4.5", use: "Détection de risque", calls: 12480, tok: "41,2 M", eur: 184.6, share: 62 },
  { model: "Claude Haiku 4.5", use: "Correction rédactionnelle", calls: 12480, tok: "28,7 M", eur: 71.3, share: 24 },
  { model: "GPT-4o mini", use: "Repli / débordement", calls: 1840, tok: "5,1 M", eur: 41.8, share: 14 },
];

const PROVIDERS = [
  { id: "anthropic", name: "Anthropic", models: ["Claude Sonnet 4.5", "Claude Haiku 4.5", "Claude Opus 4.1"], state: "connecté", key: "sk-ant-api03-••••••••••••7f2d" },
  { id: "openai", name: "OpenAI", models: ["GPT-4o", "GPT-4o mini", "o4-mini"], state: "connecté", key: "sk-proj-••••••••••••b91a" },
  { id: "google", name: "Google", models: ["Gemini 2.5 Pro", "Gemini 2.5 Flash"], state: "non configuré", key: "" },
];

const MAILBOXES = [
  { id: "gw", name: "Google Workspace", domain: "nordis.fr", state: "connecté", detail: "OAuth · 142 boîtes synchronisées", hook: "Filtrage SMTP sortant actif", sync: "il y a 40 s" },
  { id: "m365", name: "Microsoft 365", domain: "nordis-conseil.com", state: "erreur", detail: "Jeton expiré le 28/07", hook: "Mail hook interrompu", sync: "il y a 2 j" },
];

Object.assign(window, { CATS, RISK, QUEUE, FIXES, FIXKIND, CONSULTANTS, VOLUMES, SERIES, COSTS, PROVIDERS, MAILBOXES });
