From 0669893a36fcdd31d562384dd398f04abfde7677 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Fri, 20 Feb 2026 10:13:52 +0100 Subject: [PATCH] Update .gitignore to exclude Prisma database files; remove dev.db; add cost control questions and rubric to seed data --- .gitignore | 4 ++++ prisma/dev.db | Bin 102400 -> 0 bytes prisma/seed.ts | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) delete mode 100644 prisma/dev.db diff --git a/.gitignore b/.gitignore index 5ef6a52..f4e1ce9 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,10 @@ yarn-error.log* # env files (can opt-in for committing if needed) .env* +# prisma / sqlite +prisma/*.db +prisma/*.db-journal + # vercel .vercel diff --git a/prisma/dev.db b/prisma/dev.db deleted file mode 100644 index 81efa10e6c50add63dd64db27e6e545fcc427f07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102400 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 diff --git a/prisma/seed.ts b/prisma/seed.ts index 96032c6..fccecd6 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -80,6 +80,12 @@ const SUGGESTED_QUESTIONS: Record = { "Avez-vous des indicateurs ou du feedback utilisateur ?", "Comment pilotez-vous l'adoption et l'amélioration ?", ], + cost_control: [ + "Suivez-vous les coûts d'usage IA (tokens, API, abonnements) ?", + "Avez-vous des budgets ou limites par équipe/projet ?", + "Comment optimisez-vous (choix de modèles, taille du contexte, batch) ?", + "Comment arbitrez-vous coût vs qualité dans vos usages ?", + ], }; const RUBRICS: Record = { @@ -98,12 +104,13 @@ const RUBRICS: Record = { capitalization: "1:None — pas de capitalisation, tout est dans la tête ou éparpillé;2:Informel — notes personnelles, partage oral;3:Bonnes pratiques — document informal, exemples partagés;4:Base prompts — bibliothèque de prompts, wiki interne;5:Wiki & REX — base documentée, retours d'expérience, amélioration continue", learning: "1:Dépendance — copier-coller sans comprendre, risque de régression;2:Apprentissage limité — utilisation pour débloquer mais compréhension superficielle;3:Compréhension — IA pour comprendre les concepts, valider sa compréhension;4:IA pour patterns — utilisation pour apprendre des patterns, architectures, bonnes pratiques;5:Accélérateur de progression — IA comme outil de montée en compétence structurée", measurement: "1:Aucun suivi — pas de mesure de l'usage ou de l'impact;2:Perception — sentiment d'impact, pas de données;3:Feedback — retours utilisateurs, observations qualitatives;4:Indicateurs simples — métriques d'usage (adoption, volume), premiers KPIs;5:Pilotage structuré — tableau de bord, suivi de l'adoption, pilotage de l'amélioration", + cost_control: "1:Inconscient — pas de visibilité sur les coûts, usage sans limite;2:Aware — conscience des coûts, pas de suivi ni de budget;3:Suivi basique — métriques de consommation (tokens, API), pas d'alertes;4:Piloté — budgets par équipe/projet, alertes, arbitrage modèles/qualité;5:Optimisé — optimisation continue (contexte, batch, modèles), ROI coût documenté", }; const TEMPLATES_DATA = [ { id: "full-15", - name: "Full - 15 dimensions", + name: "Full - 16 dimensions", dimensions: [ { id: "tools", title: "Choix & maîtrise des outils", rubric: RUBRICS.tools }, { id: "prompts", title: "Clarté des prompts", rubric: RUBRICS.prompts }, @@ -120,6 +127,7 @@ const TEMPLATES_DATA = [ { id: "capitalization", title: "Capitalisation & partage", rubric: RUBRICS.capitalization }, { id: "learning", title: "Montée en compétence via IA", rubric: RUBRICS.learning }, { id: "measurement", title: "Mesure & pilotage", rubric: RUBRICS.measurement }, + { id: "cost_control", title: "Maîtrise des coûts", rubric: RUBRICS.cost_control }, ], }, ];