From 2c052df32817186fb905113fbea75b88a754c47c Mon Sep 17 00:00:00 2001 From: Ryan Andriamahery Date: Fri, 6 Feb 2026 13:01:44 +0300 Subject: [PATCH] chore: log AI prompt --- .../birdia/genai/model/AnalyseurToiture.java | 183 +++++++++--------- 1 file changed, 92 insertions(+), 91 deletions(-) diff --git a/src/main/java/fr/birdia/genai/model/AnalyseurToiture.java b/src/main/java/fr/birdia/genai/model/AnalyseurToiture.java index 199599c..574c75f 100644 --- a/src/main/java/fr/birdia/genai/model/AnalyseurToiture.java +++ b/src/main/java/fr/birdia/genai/model/AnalyseurToiture.java @@ -28,103 +28,104 @@ public String apply(Toit toit) { } private String getAIReport(Toit toit) { - return chat.apply( + var prompt = """ + Tu es un artisan couvreur expérimenté, spécialiste des toitures depuis plus de 15 ans. + Tu rédiges un rapport court (300–400 mots max), clair, professionnel et pédagogique pour un propriétaire non-expert. + Ton objectif est double : + 1. Expliquer factuellement l’état de la toiture en croisant les données techniques, les types de matériaux et les points sensibles. + 2. Formuler des conseils concrets et actionnables pour maintenir ou prolonger la durée de vie de la toiture, en te projetant comme si tu préparais un devis pour de vraies interventions à réaliser à court ou moyen terme. + + 🛑 Interdictions : + • Ne fais aucun disclaimer juridique. + • Ne dépasse jamais 400 mots. + • Ne parle jamais d’argent. + • Ne répète pas les données brutes : interprète-les. + + ✅ Contraintes de forme : + • Résultat UNIQUEMENT en HTML (aucun texte hors balises). + • Utilise uniquement les emojis suivants : 🟢🟡🟠🔴 🔍 🧼 🛠️ 📸 🧪 🧯 + • Utilise la police suivante en priorité : Kumbh Sans + • Respecte strictement la structure suivante, de telle sorte que les blocs INSTRUCTION soient remplacés par l’instruction donnée: + + + + + +
+

COMPRENDRE VOTRE RAPPORT

""" -Tu es un artisan couvreur expérimenté, spécialiste des toitures depuis plus de 15 ans. -Tu rédiges un rapport court (300–400 mots max), clair, professionnel et pédagogique pour un propriétaire non-expert. -Ton objectif est double : - 1. Expliquer factuellement l’état de la toiture en croisant les données techniques, les types de matériaux et les points sensibles. - 2. Formuler des conseils concrets et actionnables pour maintenir ou prolonger la durée de vie de la toiture, en te projetant comme si tu préparais un devis pour de vraies interventions à réaliser à court ou moyen terme. - -🛑 Interdictions : - • Ne fais aucun disclaimer juridique. - • Ne dépasse jamais 400 mots. - • Ne parle jamais d’argent. - • Ne répète pas les données brutes : interprète-les. - -✅ Contraintes de forme : - • Résultat UNIQUEMENT en HTML (aucun texte hors balises). - • Utilise uniquement les emojis suivants : 🟢🟡🟠🔴 🔍 🧼 🛠️ 📸 🧪 🧯 - • Utilise la police suivante en priorité : Kumbh Sans - • Respecte strictement la structure suivante, de telle sorte que les blocs INSTRUCTION soient remplacés par l’instruction donnée: - - - - - -
-

COMPRENDRE VOTRE RAPPORT

-""" - .concat( + .concat( String.format( - """ -

%s CATÉGORIE %s : %s

""", - getCategoryEmoji(toit), getCategory(toit), getEtatToiture(toit))) - .concat( + """ +

%s CATÉGORIE %s : %s

""", + getCategoryEmoji(toit), getCategory(toit), getEtatToiture(toit))) + .concat( String.format( - """ - INSTRUCTION - !IMPORTANT! Cette instruction n'est pas à afficher. - - Voici les donnée à utiliser: - - L’analyse couvre %s m². Revêtement : %s. - Humidité : %s %% • Moisissure : %s %% • Usure : %s %% — interprète leur impact selon le type de revêtement (ex. stagnation, porosité, vieillissement prématuré). - Points sensibles (obstacles) : %s — peut être utilisé pour expliquer leur impact (pénétrations, joints, zones à risque d’infiltration ou de mousse). - Signes de détérioration : fissures = "%s" ; risque feu = "%s" — peut être utilisé pour interprèter le contexte (zones à forte exposition, végétation proche, matériaux inflammables, etc.). - FIN_INSTRUCTION - -
    -
  • INSTRUCTION: en commençant par une phrase similaire à "L'analyse a montré que", fais une analyse générale en montrant le constat, la cause et la conséquence en utilisant les données ci-dessus. FIN_INSTRUCTION
  • -
- -
    -
  • INSTRUCTION: fais une analyse des données concernant le type de toiture, l'humidité et le taux d'usure, en expliquant leur impact. FIN_INSTRUCTION
  • -
-""", - toit.surfaceEnM2(), - toit.revetement(), - toit.humidité(), - toit.moisissure(), - toit.usure(), - toit.obstacles(), - toit.fissureCassure() ? "OUI" : "NON", - toit.risqueFeu() ? "OUI" : "NON")) - .concat( + """ + INSTRUCTION + !IMPORTANT! Cette instruction n'est pas à afficher. + + Voici les donnée à utiliser: + + L’analyse couvre %s m². Revêtement : %s. + Humidité : %s %% • Moisissure : %s %% • Usure : %s %% — interprète leur impact selon le type de revêtement (ex. stagnation, porosité, vieillissement prématuré). + Points sensibles (obstacles) : %s — peut être utilisé pour expliquer leur impact (pénétrations, joints, zones à risque d’infiltration ou de mousse). + Signes de détérioration : fissures = "%s" ; risque feu = "%s" — peut être utilisé pour interprèter le contexte (zones à forte exposition, végétation proche, matériaux inflammables, etc.). + FIN_INSTRUCTION + +
    +
  • INSTRUCTION: en commençant par une phrase similaire à "L'analyse a montré que", fais une analyse générale en montrant le constat, la cause et la conséquence en utilisant les données ci-dessus. FIN_INSTRUCTION
  • +
+ +
    +
  • INSTRUCTION: fais une analyse des données concernant le type de toiture, l'humidité et le taux d'usure, en expliquant leur impact. FIN_INSTRUCTION
  • +
+ """, + toit.surfaceEnM2(), + toit.revetement(), + toit.humidité(), + toit.moisissure(), + toit.usure(), + toit.obstacles(), + toit.fissureCassure() ? "OUI" : "NON", + toit.risqueFeu() ? "OUI" : "NON")) + .concat( """ -
-
-

CONSEILS DE L’ARTISAN COUVREUR

-""") - .concat( +
+
+

CONSEILS DE L’ARTISAN COUVREUR

+ """) + .concat( String.format( - """ -
    -
  • 🔍 Inspection ciblée : INSTRUCTION: recommander les zones à vérifier (ex. autour de %s, angles rentrants, zones d’accumulation d’eau ou de mousse). FIN_INSTRUCTION
  • -
  • 🧼 Entretien recommandé : INSTRUCTION: nettoyage préventif (mousses, lichens), curage des évacuations, élimination des dépôts pouvant accélérer l’usure ou l’humidité. FIN_INSTRUCTION
  • -
  • 🛠️ Travaux à envisager : INSTRUCTION: lister les réparations concrètes (ex. joints à reprendre, tuiles/ardoises déformées, étanchéité partielle), avec degré d’urgence basé sur les données (ex. %s %%, %s %%).FIN_INSTRUCTION
  • -
  • 📸 Suivi : INSTRUCTION: recommander un rythme de contrôle (visuel / drone / thermique) selon la catégorie (C/D/E → semestriel, A/B → annuel), pour anticiper au lieu de subir. FIN_INSTRUCTION
  • -
  • 🧪 Vérifications complémentaires : INSTRUCTION: proposer des tests adaptés (ex. arrosage ciblé, caméra thermique). FIN_INSTRUCTION
  • -
-""", - toit.obstacles(), toit.usure(), toit.humidité())) - .concat( + """ +
    +
  • 🔍 Inspection ciblée : INSTRUCTION: recommander les zones à vérifier (ex. autour de %s, angles rentrants, zones d’accumulation d’eau ou de mousse). FIN_INSTRUCTION
  • +
  • 🧼 Entretien recommandé : INSTRUCTION: nettoyage préventif (mousses, lichens), curage des évacuations, élimination des dépôts pouvant accélérer l’usure ou l’humidité. FIN_INSTRUCTION
  • +
  • 🛠️ Travaux à envisager : INSTRUCTION: lister les réparations concrètes (ex. joints à reprendre, tuiles/ardoises déformées, étanchéité partielle), avec degré d’urgence basé sur les données (ex. %s %%, %s %%).FIN_INSTRUCTION
  • +
  • 📸 Suivi : INSTRUCTION: recommander un rythme de contrôle (visuel / drone / thermique) selon la catégorie (C/D/E → semestriel, A/B → annuel), pour anticiper au lieu de subir. FIN_INSTRUCTION
  • +
  • 🧪 Vérifications complémentaires : INSTRUCTION: proposer des tests adaptés (ex. arrosage ciblé, caméra thermique). FIN_INSTRUCTION
  • +
+ """, + toit.obstacles(), toit.usure(), toit.humidité())) + .concat( """ -
- -INSTRUCTION -🔁 Logique d’analyse attendue : - • Si le revêtement est poreux (ex. tuiles béton, anciennes ardoises), commente plus l’humidité/moisissure. - • Si obstacles présents, insiste sur étanchéité périphérique. - • Si taux d’usure élevé (>30 %%), recommande interventions ciblées ou révision complète selon les cas. - • Si mutation = néant mais usure/moisissure monte → signale usure lente non compensée par entretien. - • Si risque feu = oui → mentionne végétation proche ou matériaux bitumeux exposés. -FIN_INSTRUCTION -""")) +
+ + INSTRUCTION + 🔁 Logique d’analyse attendue : + • Si le revêtement est poreux (ex. tuiles béton, anciennes ardoises), commente plus l’humidité/moisissure. + • Si obstacles présents, insiste sur étanchéité périphérique. + • Si taux d’usure élevé (>30 %%), recommande interventions ciblées ou révision complète selon les cas. + • Si mutation = néant mais usure/moisissure monte → signale usure lente non compensée par entretien. + • Si risque feu = oui → mentionne végétation proche ou matériaux bitumeux exposés. + FIN_INSTRUCTION + """); + log.info("AI Prompt : {}", prompt); + return chat.apply(prompt) .replace("```html", "") .replace("```", ""); }