From 62a09ba048f07595a0bd5a70979da77279dc7483 Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Mon, 23 Sep 2024 18:08:44 +0200 Subject: [PATCH 01/10] =?UTF-8?q?D=C3=A9but=20d'int=C3=A9gration=20des=20a?= =?UTF-8?q?ides=20locales=20narbonne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "app/r\303\250gles/aides-locales.publicodes" | 91 ++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git "a/app/r\303\250gles/aides-locales.publicodes" "b/app/r\303\250gles/aides-locales.publicodes" index c89f0dd3..6b741d6d 100644 --- "a/app/r\303\250gles/aides-locales.publicodes" +++ "b/app/r\303\250gles/aides-locales.publicodes" @@ -458,3 +458,94 @@ essonne . gros travaux . montant: essonne . gros travaux . travaux plafonnés: valeur: projet . travaux plafond: 20000 € + +grand narbonne: + image wikidata: Le Grand Narbonne + titre: Grand Narbonne Communauté d'agglomération +grand narbonne . conditions géo: logement . département = 'Aude' +grand narbonne . montant: + somme: + - mon coach éco-logis + - aide grand narbonne + - aide acv narbonne + +grand narbonne . aide grand narbonne: +grand narbonne . aide grand narbonne . montant: + applicable si: logement . EPCI = '241100593' + valeur: 300 € +grand narbonne . aide acv narbonne: + question: Etes-vous concerné par le dispositif "Action coeur de ville" Narbonne? + par défaut: non +grand narbonne . aide acv narbonne . montant: + valeur: 300 € + +grand narbonne . mon coach éco-logis: + lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis + description: | + Vous devez être propriétaire de votre logement et avoir des ressources modestes + Votre logement doit avoir été construit il y a plus de 15 ans + Vous vous engagez à y vivre à titre de résidence principale pendant trois ans + Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. +grand narbonne . mon coach éco-logis . conditions: + toutes ces conditions: + - conditions géo + - logement . résidence principale propriétaire + - logement . période de construction = 'au moins 15 ans' + - conditions de revenu + - projet . gain energétique >= 35 % + - vivre trois ans + - pas de PTZ + - travaux recevables +grand narbonne . mon coach éco-logis . conditions de revenu: + une de ces conditions: + - ménage . revenu . classe = 'modeste' + - ménage . revenu . classe = 'très modeste' +grand narbonne . mon coach éco-logis . vivre trois ans: + question: Vous vous engagez à vivre à titre de résidence principale pendant trois ans dans le logement + par défaut: oui +grand narbonne . mon coach éco-logis . pas de PTZ: + question: Avez-vous eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + par défaut: non +grand narbonne . mon coach éco-logis . travaux recevables: + question: Les travaux envisagés sont-ils éligibles à la prime éco-logis? + par défaut: oui + description: | + La fourniture des matériaux et les travaux doivent impérativement être réalisés par des artisans reconnu garant de l’environnement (RGE) et figurer parmi la liste suivante : + - Changement de chauffage + - Isolation des combles, des murs, du plancher + - Mise en place d’une ventilation + - Changement de menuiseries, etc. +grand narbonne . mon coach éco-logis . montant: + applicable si: conditions + somme: + - aide du département + - prime habiter mieux + - bonus bâtiment basse consommation + - bonus sortie passoire thermique +grand narbonne . mon coach éco-logis . aide du département: +grand narbonne . mon coach éco-logis . aide du département . montant: 200 € +grand narbonne . mon coach éco-logis . prime habiter mieux: +grand narbonne . mon coach éco-logis . prime habiter mieux . montant: + produit: + - 10 % + - projet . travaux + plafond: 30000 € +grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation: +grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . conditions: + toutes ces conditions: + - projet . DPE visé <= 2 + - DPE . actuel >= 2 +grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . montant: + titre: Bonus "Bâtiment basse consommation" + applicable si: conditions + valeur: 1500 € +grand narbonne . mon coach éco-logis . bonus sortie passoire thermique: +grand narbonne . mon coach éco-logis . bonus sortie passoire thermique . conditions: + toutes ces conditions: + - projet . DPE visé < 6 + - DPE . actuel >= 6 +grand narbonne . mon coach éco-logis . bonus sortie passoire thermique . montant: + titre: Bonus "Sortie de passoire énergétique" + applicable si: conditions + valeur: 1500 € \ No newline at end of file From 97fba7f2359980ecf55063df8a661a3609a79330 Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Tue, 24 Sep 2024 18:43:28 +0200 Subject: [PATCH 02/10] =?UTF-8?q?Ces=20r=C3=A8gles=20suffisent=20=C3=A0=20?= =?UTF-8?q?poser=20les=20questions=20sp=C3=A9cifiques=20=C3=A0=20l'aide=20?= =?UTF-8?q?locale=20narbonne=20=C3=A0=20la=20fin=20du=20simulateur=20princ?= =?UTF-8?q?ipal=20si=20la=20commune=20est=20=C3=A9ligible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On a besoin de l'EPCI dans l'url pour valider la conditions géo Il faut trouver une manière plus élégante pour le simulationConfig --- "app/r\303\250gles/aides-locales.publicodes" | 101 +++++++++++++++---- app/simulation/simulationConfig.yaml | 2 + components/InputSwitch.tsx | 1 + 3 files changed, 85 insertions(+), 19 deletions(-) diff --git "a/app/r\303\250gles/aides-locales.publicodes" "b/app/r\303\250gles/aides-locales.publicodes" index 6b741d6d..0e939ae4 100644 --- "a/app/r\303\250gles/aides-locales.publicodes" +++ "b/app/r\303\250gles/aides-locales.publicodes" @@ -462,31 +462,102 @@ essonne . gros travaux . travaux plafonnés: grand narbonne: image wikidata: Le Grand Narbonne titre: Grand Narbonne Communauté d'agglomération -grand narbonne . conditions géo: logement . département = 'Aude' + questions: + type: liste + valeurs: + - ménage . commune + - ménage . personnes + - ménage . revenu + - vous . propriétaire . condition + - logement . période de construction + - projet . travaux +grand narbonne . conditions géo: ménage . EPCI = '241100593' +grand narbonne . aides: + applicable si: conditions + remplace: intercommunalité + valeur: prime énergie . montant +grand narbonne . aides . conditions: + toutes ces conditions: + - conditions géo + - pig . bénéficiaire = non + - prime énergie . statut bénéficiaire = oui grand narbonne . montant: somme: - - mon coach éco-logis + - mon coach éco-logis + - aide département - aide grand narbonne - aide acv narbonne - + +grand narbonne . prime énergie: +grand narbonne . prime énergie . conditions: + toutes ces conditions: + - ménage . EPCI = '241100593' + - statut bénéficiaire + - logement . résidence principale + - logement . construit avant 2013 + - mon coach éco-logis . bénéficiaire = non + - pig . bénéficiaire = non +grand narbonne . prime énergie . montant: 0 € # On ne communique pas de chiffre pour l'instant +grand narbonne . prime énergie . statut bénéficiaire: + question: Etes-vous proprietaire (occupant, bailleur, SCI) ou accédant à la propriété qui occupera le logement dans les 6 mois suivant l'achèvement des travaux? + par défaut: oui + description: | + Sont également éligibles : + - les propriétaires qui réhabilitent des logements vacants en vue de les louer (à condition que le logement soit loué au moment de la demande de paiement). + - les propriétaires dans le cadre de transformation d'usage, dont l'usage final est de l'habitation +grand narbonne . prime énergie . logement: +grand narbonne . prime énergie . logement . résidence principale: + question: Le logement est-il occupé à titre de résidence principale + par défaut: oui + description: Sont exclus du dispositif, les résidences secondaires et les logements saisonniers. +grand narbonne . prime énergie . logement . construit avant 2013: + question: Le permis de construire du logement a été déposé avant le 1er janvier 2013 + par défaut: oui + +grand narbonne . prime énergie . innovation solidaire: +grand narbonne . prime énergie . innovation solidaire . conditions: + toutes ces conditions: + - ménage . revenu < 2 x catégorie bleue + +grand narbonne . pig: +grand narbonne . pig . bénéficiaire: + question: Etes-vous bénéficiaire du Programme d'Intérêt Général du Grand Narbonne (à l'exception de la Prime Energie Innovation Solidaire)? + par défaut: oui + +grand narbonne . aide département: +grand narbonne . aide département . montant: + valeur: 200 € grand narbonne . aide grand narbonne: + applicable si: ménage . EPCI = '241100593' grand narbonne . aide grand narbonne . montant: - applicable si: logement . EPCI = '241100593' valeur: 300 € + grand narbonne . aide acv narbonne: question: Etes-vous concerné par le dispositif "Action coeur de ville" Narbonne? par défaut: non grand narbonne . aide acv narbonne . montant: - valeur: 300 € - + valeur: 200 € grand narbonne . mon coach éco-logis: lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis description: | - Vous devez être propriétaire de votre logement et avoir des ressources modestes - Votre logement doit avoir été construit il y a plus de 15 ans - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + Pour bénéficier de ce programme: + - Vous devez être propriétaire de votre logement et avoir des ressources modestes + - Votre logement doit avoir été construit il y a plus de 15 ans + - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans + - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. +grand narbonne . mon coach éco-logis . bénéficiaire: + question: "Etes-vous bénéficiaire du Programme d'Intérêt Général du Département de l'Aude (Mon Coach EcoLogis)?" + par défaut: non + lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis + description: | + Pour bénéficier de ce programme: + - Vous devez être propriétaire de votre logement et avoir des ressources modestes + - Votre logement doit avoir été construit il y a plus de 15 ans + - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans + - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. + grand narbonne . mon coach éco-logis . conditions: toutes ces conditions: - conditions géo @@ -519,17 +590,9 @@ grand narbonne . mon coach éco-logis . travaux recevables: grand narbonne . mon coach éco-logis . montant: applicable si: conditions somme: - - aide du département - - prime habiter mieux - bonus bâtiment basse consommation - bonus sortie passoire thermique -grand narbonne . mon coach éco-logis . aide du département: -grand narbonne . mon coach éco-logis . aide du département . montant: 200 € -grand narbonne . mon coach éco-logis . prime habiter mieux: -grand narbonne . mon coach éco-logis . prime habiter mieux . montant: - produit: - - 10 % - - projet . travaux + - 10 % * projet . travaux plafond: 30000 € grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation: grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . conditions: diff --git a/app/simulation/simulationConfig.yaml b/app/simulation/simulationConfig.yaml index d61eca16..511a4bf5 100644 --- a/app/simulation/simulationConfig.yaml +++ b/app/simulation/simulationConfig.yaml @@ -11,6 +11,8 @@ prioritaires: - ménage . revenu - DPE . actuel - logement . commune + - aides locales . grand narbonne . prime énergie . statut bénéficiaire + - aides locales . grand narbonne . pig . bénéficiaire - parcours d'aide # Le reste est non-linéaire, en fonction du choix non prioritaires: diff --git a/components/InputSwitch.tsx b/components/InputSwitch.tsx index 8ff2927b..05bf33ce 100644 --- a/components/InputSwitch.tsx +++ b/components/InputSwitch.tsx @@ -161,6 +161,7 @@ export default function InputSwitch({ questionsToSubmit: [ 'ménage . code région', 'ménage . code département', + 'ménage . EPCI', 'ménage . commune', ], currentValue, From 8b8d950b645101eeb101efd457e042bcfa096afe Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Wed, 25 Sep 2024 16:25:20 +0200 Subject: [PATCH 03/10] Ajout du logo le grand narbonne --- "app/r\303\250gles/aides-locales.publicodes" | 1 + public/logo-locale/le-grand-narbonne.png | Bin 0 -> 37971 bytes 2 files changed, 1 insertion(+) create mode 100644 public/logo-locale/le-grand-narbonne.png diff --git "a/app/r\303\250gles/aides-locales.publicodes" "b/app/r\303\250gles/aides-locales.publicodes" index 0e939ae4..90a86d93 100644 --- "a/app/r\303\250gles/aides-locales.publicodes" +++ "b/app/r\303\250gles/aides-locales.publicodes" @@ -471,6 +471,7 @@ grand narbonne: - vous . propriétaire . condition - logement . période de construction - projet . travaux + image: le-grand-narbonne.png grand narbonne . conditions géo: ménage . EPCI = '241100593' grand narbonne . aides: applicable si: conditions diff --git a/public/logo-locale/le-grand-narbonne.png b/public/logo-locale/le-grand-narbonne.png new file mode 100644 index 0000000000000000000000000000000000000000..9336763a43b8cb0cadeb1d150b218f99ce1ff571 GIT binary patch literal 37971 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 Date: Wed, 25 Sep 2024 16:27:05 +0200 Subject: [PATCH 04/10] Systeme pour afficher une image choisie pour les aides locales quand rien n'existe dans wikidata --- app/locales/IllustratedHeader.tsx | 3 ++- app/locales/PlaceSummary.tsx | 11 ++++++++--- app/locales/[place]/Place.tsx | 9 +++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/locales/IllustratedHeader.tsx b/app/locales/IllustratedHeader.tsx index d9fcf8ae..232812b2 100644 --- a/app/locales/IllustratedHeader.tsx +++ b/app/locales/IllustratedHeader.tsx @@ -1,6 +1,6 @@ import useWikidata from '@/components/wikidata/useWikidata' -export default function IllustratedHeader({ placeTitle, imageTitle }) { +export default function IllustratedHeader({ placeTitle, imageTitle, imageLink }) { const wikidataImage = useWikidata(imageTitle), wikidataImageUrl = wikidataImage?.pictureUrl @@ -17,6 +17,7 @@ export default function IllustratedHeader({ placeTitle, imageTitle }) { src={wikidataImageUrl} width="30" height="30" + src={imageLink ? "/logo-locale/"+imageLink : wikidataImageUrl} alt={`Photo emblématique du territoire ${imageTitle}`} css={` object-fit: cover; diff --git a/app/locales/PlaceSummary.tsx b/app/locales/PlaceSummary.tsx index 8169e34a..270f8a2d 100644 --- a/app/locales/PlaceSummary.tsx +++ b/app/locales/PlaceSummary.tsx @@ -14,8 +14,8 @@ export default function PlaceSummary({ place, placeRules }) { const placeTitle = getRuleTitle(place, Object.fromEntries(placeRules)), rule = Object.fromEntries(placeRules)[place] || {}, - imageTitle = rule['image wikidata'] || placeTitle - + imageTitle = rule['image wikidata'] || placeTitle, + imageLink = rule['image'] const valueRules = Array.isArray(placeRules) && placeRules.filter(([dottedName]) => dottedName.endsWith('montant')) @@ -68,7 +68,12 @@ export default function PlaceSummary({ place, placeRules }) { > {' '} - + { console.log('instantiating new publicodes engine for evaluation') @@ -140,7 +141,11 @@ export default function LocalePlace({ place }) { return (
- +

Découvrez ci-dessous les aides locales {capitalise0(place)}. Vous pouvez changer la situation de votre ménage pour voir l'évolution du From c90fdbba4a3def7a5ca3c50d05735664a9b85cab Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Wed, 25 Sep 2024 16:28:28 +0200 Subject: [PATCH 05/10] =?UTF-8?q?Affichage=20sp=C3=A9cifique=20de=20l'aide?= =?UTF-8?q?=20locale=20dans=20le=20questionnaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/simulation/Answers.tsx | 2 ++ components/ClassicQuestionWrapper.tsx | 47 +++++++++++++++------------ 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/simulation/Answers.tsx b/app/simulation/Answers.tsx index 16bf2dd1..be7de0cd 100644 --- a/app/simulation/Answers.tsx +++ b/app/simulation/Answers.tsx @@ -32,9 +32,11 @@ export const categoryData = ( const category = firstLevelCategory(currentQuestion) const categoryTitle = currentQuestion && rules[category]?.titre + const aideLocale = rules[currentQuestion.split(' . ').slice(0, 2).join(' . ').trim()] const isLastCategory = currentQuestion == nextQuestions.slice(-1) return { categoryTitle, + aideLocale, isLastCategory, allCategories, pastCategories, diff --git a/components/ClassicQuestionWrapper.tsx b/components/ClassicQuestionWrapper.tsx index cf904f75..7199102c 100644 --- a/components/ClassicQuestionWrapper.tsx +++ b/components/ClassicQuestionWrapper.tsx @@ -4,7 +4,6 @@ import Suggestions from '@/app/simulation/Suggestions' import { AnswerWrapper } from './InputUI' import Notifications from './Notifications' import { encodeSituation } from './publicodes/situationUtils' - import { isMosaicQuestion } from './BooleanMosaic' import { gestesMosaicQuestionText } from './GestesMosaic' import QuestionDescription from './QuestionDescription' @@ -37,7 +36,7 @@ export default function ClassicQuestionWrapper({ nextQuestions, }) { const isCompact = useIsCompact() - const { categoryTitle } = categoryData( + const { categoryTitle, aideLocale } = categoryData( nextQuestions, currentQuestion, answeredQuestions, @@ -48,24 +47,32 @@ export default function ClassicQuestionWrapper({

{(!rule.type || !rule.type === 'question rhétorique') && ( - - {categoryTitle} -

- -

- {rule['sous-titre'] && ( -
- )} -
+
+ { aideLocale?.image && () + } + + {categoryTitle}{ aideLocale?.image ? " - " + aideLocale?.titre : "" } +

+ +

+ {rule['sous-titre'] && ( +
+ )} +
+
)} {!noSuggestions && ( From 8a5bc1c32d001ecf395d8ba97528539d339d8913 Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Wed, 25 Sep 2024 16:28:59 +0200 Subject: [PATCH 06/10] Redimensionnement des images sur les pages locales --- app/locales/IllustratedHeader.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/locales/IllustratedHeader.tsx b/app/locales/IllustratedHeader.tsx index 232812b2..5e7e8aa3 100644 --- a/app/locales/IllustratedHeader.tsx +++ b/app/locales/IllustratedHeader.tsx @@ -14,15 +14,11 @@ export default function IllustratedHeader({ placeTitle, imageTitle, imageLink }) `} > {`Photo Date: Wed, 25 Sep 2024 16:30:22 +0200 Subject: [PATCH 07/10] =?UTF-8?q?Am=C3=A9lioration=20de=20l'affichage=20de?= =?UTF-8?q?=20l'aide=20locale=20dans=20le=20formulaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "app/r\303\250gles/aides-locales.publicodes" | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git "a/app/r\303\250gles/aides-locales.publicodes" "b/app/r\303\250gles/aides-locales.publicodes" index 90a86d93..3457aaf7 100644 --- "a/app/r\303\250gles/aides-locales.publicodes" +++ "b/app/r\303\250gles/aides-locales.publicodes" @@ -7,6 +7,7 @@ # Voir aussi le fichier aides-locales.brouillon.yaml pour les aides pas encore implémentées ou qui ne sont plus valides '': + titre: Aide Locale marque: Aide locale icône: 'hexagone-contour.svg' avec: @@ -472,6 +473,7 @@ grand narbonne: - logement . période de construction - projet . travaux image: le-grand-narbonne.png + titre: Grand Narbonne Communauté d'agglomération - Prime Energie grand narbonne . conditions géo: ménage . EPCI = '241100593' grand narbonne . aides: applicable si: conditions @@ -500,12 +502,22 @@ grand narbonne . prime énergie . conditions: - pig . bénéficiaire = non grand narbonne . prime énergie . montant: 0 € # On ne communique pas de chiffre pour l'instant grand narbonne . prime énergie . statut bénéficiaire: + titre: Propriétaire éligible question: Etes-vous proprietaire (occupant, bailleur, SCI) ou accédant à la propriété qui occupera le logement dans les 6 mois suivant l'achèvement des travaux? par défaut: oui description: | Sont également éligibles : - les propriétaires qui réhabilitent des logements vacants en vue de les louer (à condition que le logement soit loué au moment de la demande de paiement). - les propriétaires dans le cadre de transformation d'usage, dont l'usage final est de l'habitation +grand narbonne . pig: +grand narbonne . pig . bénéficiaire: + titre: Bénéficiaire du PIG Grand Narbonne + question: Etes-vous bénéficiaire du Programme d'Intérêt Général du Grand Narbonne? + par défaut: oui + sous-titre: A l'exception de la Prime Energie Innovation Solidaire + description: | + A l'exception de la Prime Energie Innovation Solidaire qui est cumulable avec l'ensemble des PIG et dispositifs existants + grand narbonne . prime énergie . logement: grand narbonne . prime énergie . logement . résidence principale: question: Le logement est-il occupé à titre de résidence principale @@ -520,11 +532,6 @@ grand narbonne . prime énergie . innovation solidaire . conditions: toutes ces conditions: - ménage . revenu < 2 x catégorie bleue -grand narbonne . pig: -grand narbonne . pig . bénéficiaire: - question: Etes-vous bénéficiaire du Programme d'Intérêt Général du Grand Narbonne (à l'exception de la Prime Energie Innovation Solidaire)? - par défaut: oui - grand narbonne . aide département: grand narbonne . aide département . montant: valeur: 200 € From 802cf6996fefd5a5377e6a96787545f5ce91862b Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Wed, 25 Sep 2024 16:31:58 +0200 Subject: [PATCH 08/10] =?UTF-8?q?pour=20l'instant=20on=20ne=20tient=20pas?= =?UTF-8?q?=20compte=20de=20toutes=20ces=20r=C3=A8gles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TODO: remettre de l'ordre dans tout ça, lesquelles souhaitent-ont tester? --- "app/r\303\250gles/aides-locales.publicodes" | 223 +++++++++---------- 1 file changed, 109 insertions(+), 114 deletions(-) diff --git "a/app/r\303\250gles/aides-locales.publicodes" "b/app/r\303\250gles/aides-locales.publicodes" index 3457aaf7..0c707e72 100644 --- "a/app/r\303\250gles/aides-locales.publicodes" +++ "b/app/r\303\250gles/aides-locales.publicodes" @@ -460,18 +460,9 @@ essonne . gros travaux . travaux plafonnés: valeur: projet . travaux plafond: 20000 € +# Toutes ces aides ne sont pas implémentées grand narbonne: image wikidata: Le Grand Narbonne - titre: Grand Narbonne Communauté d'agglomération - questions: - type: liste - valeurs: - - ménage . commune - - ménage . personnes - - ménage . revenu - - vous . propriétaire . condition - - logement . période de construction - - projet . travaux image: le-grand-narbonne.png titre: Grand Narbonne Communauté d'agglomération - Prime Energie grand narbonne . conditions géo: ménage . EPCI = '241100593' @@ -482,25 +473,26 @@ grand narbonne . aides: grand narbonne . aides . conditions: toutes ces conditions: - conditions géo - - pig . bénéficiaire = non - prime énergie . statut bénéficiaire = oui -grand narbonne . montant: - somme: - - mon coach éco-logis - - aide département - - aide grand narbonne - - aide acv narbonne + - pig . bénéficiaire = non +grand narbonne . montant: 0 € # pour l'instant on ne souhaite pas afficher de montant + # somme: + # - mon coach éco-logis + # - aide département + # - aide grand narbonne + # - aide acv narbonne grand narbonne . prime énergie: -grand narbonne . prime énergie . conditions: - toutes ces conditions: - - ménage . EPCI = '241100593' - - statut bénéficiaire - - logement . résidence principale - - logement . construit avant 2013 - - mon coach éco-logis . bénéficiaire = non - - pig . bénéficiaire = non +# grand narbonne . prime énergie . conditions: + # toutes ces conditions: + # - ménage . EPCI = '241100593' + # - statut bénéficiaire + # - logement . résidence principale + # - logement . construit avant 2013 + # - mon coach éco-logis . bénéficiaire = non + # - pig . bénéficiaire = non grand narbonne . prime énergie . montant: 0 € # On ne communique pas de chiffre pour l'instant + grand narbonne . prime énergie . statut bénéficiaire: titre: Propriétaire éligible question: Etes-vous proprietaire (occupant, bailleur, SCI) ou accédant à la propriété qui occupera le logement dans les 6 mois suivant l'achèvement des travaux? @@ -526,97 +518,100 @@ grand narbonne . prime énergie . logement . résidence principale: grand narbonne . prime énergie . logement . construit avant 2013: question: Le permis de construire du logement a été déposé avant le 1er janvier 2013 par défaut: oui - +# TODO: Pour l'instant, cette aide n'est pas implémentée côté UI grand narbonne . prime énergie . innovation solidaire: grand narbonne . prime énergie . innovation solidaire . conditions: toutes ces conditions: - ménage . revenu < 2 x catégorie bleue -grand narbonne . aide département: -grand narbonne . aide département . montant: - valeur: 200 € -grand narbonne . aide grand narbonne: - applicable si: ménage . EPCI = '241100593' -grand narbonne . aide grand narbonne . montant: - valeur: 300 € - -grand narbonne . aide acv narbonne: - question: Etes-vous concerné par le dispositif "Action coeur de ville" Narbonne? - par défaut: non -grand narbonne . aide acv narbonne . montant: - valeur: 200 € -grand narbonne . mon coach éco-logis: - lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis - description: | - Pour bénéficier de ce programme: - - Vous devez être propriétaire de votre logement et avoir des ressources modestes - - Votre logement doit avoir été construit il y a plus de 15 ans - - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans - - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années - Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. -grand narbonne . mon coach éco-logis . bénéficiaire: - question: "Etes-vous bénéficiaire du Programme d'Intérêt Général du Département de l'Aude (Mon Coach EcoLogis)?" - par défaut: non - lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis - description: | - Pour bénéficier de ce programme: - - Vous devez être propriétaire de votre logement et avoir des ressources modestes - - Votre logement doit avoir été construit il y a plus de 15 ans - - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans - - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années - Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. - -grand narbonne . mon coach éco-logis . conditions: - toutes ces conditions: - - conditions géo - - logement . résidence principale propriétaire - - logement . période de construction = 'au moins 15 ans' - - conditions de revenu - - projet . gain energétique >= 35 % - - vivre trois ans - - pas de PTZ - - travaux recevables -grand narbonne . mon coach éco-logis . conditions de revenu: - une de ces conditions: - - ménage . revenu . classe = 'modeste' - - ménage . revenu . classe = 'très modeste' -grand narbonne . mon coach éco-logis . vivre trois ans: - question: Vous vous engagez à vivre à titre de résidence principale pendant trois ans dans le logement - par défaut: oui -grand narbonne . mon coach éco-logis . pas de PTZ: - question: Avez-vous eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années - par défaut: non -grand narbonne . mon coach éco-logis . travaux recevables: - question: Les travaux envisagés sont-ils éligibles à la prime éco-logis? - par défaut: oui - description: | - La fourniture des matériaux et les travaux doivent impérativement être réalisés par des artisans reconnu garant de l’environnement (RGE) et figurer parmi la liste suivante : - - Changement de chauffage - - Isolation des combles, des murs, du plancher - - Mise en place d’une ventilation - - Changement de menuiseries, etc. -grand narbonne . mon coach éco-logis . montant: - applicable si: conditions - somme: - - bonus bâtiment basse consommation - - bonus sortie passoire thermique - - 10 % * projet . travaux - plafond: 30000 € -grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation: -grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . conditions: - toutes ces conditions: - - projet . DPE visé <= 2 - - DPE . actuel >= 2 -grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . montant: - titre: Bonus "Bâtiment basse consommation" - applicable si: conditions - valeur: 1500 € -grand narbonne . mon coach éco-logis . bonus sortie passoire thermique: -grand narbonne . mon coach éco-logis . bonus sortie passoire thermique . conditions: - toutes ces conditions: - - projet . DPE visé < 6 - - DPE . actuel >= 6 -grand narbonne . mon coach éco-logis . bonus sortie passoire thermique . montant: - titre: Bonus "Sortie de passoire énergétique" - applicable si: conditions - valeur: 1500 € \ No newline at end of file +# # TODO: Pour l'instant, cette aide n'est pas implémentée côté UI +# grand narbonne . aide département: +# grand narbonne . aide département . montant: + # valeur: 200 € +# grand narbonne . aide grand narbonne: + # applicable si: ménage . EPCI = '241100593' +# grand narbonne . aide grand narbonne . montant: + # valeur: 300 € + +# # TODO: Pour l'instant, cette aide n'est pas implémentée côté UI +# grand narbonne . aide acv narbonne: + # question: Etes-vous concerné par le dispositif "Action coeur de ville" Narbonne? + # par défaut: non +# grand narbonne . aide acv narbonne . montant: + # valeur: 200 € + +# # TODO: Pour l'instant, cette aide n'est pas implémentée côté UI +# grand narbonne . mon coach éco-logis: + # lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis + # description: | + # Pour bénéficier de ce programme: + # - Vous devez être propriétaire de votre logement et avoir des ressources modestes + # - Votre logement doit avoir été construit il y a plus de 15 ans + # - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans + # - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + # Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. +# grand narbonne . mon coach éco-logis . bénéficiaire: + # question: "Etes-vous bénéficiaire du Programme d'Intérêt Général du Département de l'Aude (Mon Coach EcoLogis)?" + # par défaut: non + # lien: https://www.aude.fr/je-renove-mon-logement-avec-mon-coach-eco-logis + # description: | + # Pour bénéficier de ce programme: + # - Vous devez être propriétaire de votre logement et avoir des ressources modestes + # - Votre logement doit avoir été construit il y a plus de 15 ans + # - Vous vous engagez à y vivre à titre de résidence principale pendant trois ans + # - Vous ne devez pas avoir eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + # Pour savoir si vous pouvez bénéficier de Mon Coach Éco-Logis, appelez le 04 68 11 81 30. Du lundi au vendredi de 9h à 12h et de 14h à 17h. Prix d’un appel local. +# grand narbonne . mon coach éco-logis . conditions: + # toutes ces conditions: + # - conditions géo + # - logement . résidence principale propriétaire + # - logement . période de construction = 'au moins 15 ans' + # - conditions de revenu + # - projet . gain energétique >= 35 % + # - vivre trois ans + # - pas de PTZ + # - travaux recevables +# grand narbonne . mon coach éco-logis . conditions de revenu: + # une de ces conditions: + # - ménage . revenu . classe = 'modeste' + # - ménage . revenu . classe = 'très modeste' +# grand narbonne . mon coach éco-logis . vivre trois ans: + # question: Vous vous engagez à vivre à titre de résidence principale pendant trois ans dans le logement + # par défaut: oui +# grand narbonne . mon coach éco-logis . pas de PTZ: + # question: Avez-vous eu recours à un prêt à taux zéro pour l’acquisition du logement dans les cinq dernières années + # par défaut: non +# grand narbonne . mon coach éco-logis . travaux recevables: + # question: Les travaux envisagés sont-ils éligibles à la prime éco-logis? + # par défaut: oui + # description: | + # La fourniture des matériaux et les travaux doivent impérativement être réalisés par des artisans reconnu garant de l’environnement (RGE) et figurer parmi la liste suivante : + # - Changement de chauffage + # - Isolation des combles, des murs, du plancher + # - Mise en place d’une ventilation + # - Changement de menuiseries, etc. +# grand narbonne . mon coach éco-logis . montant: + # applicable si: conditions + # somme: + # - bonus bâtiment basse consommation + # - bonus sortie passoire thermique + # - 10 % * projet . travaux + # plafond: 30000 € +# grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation: +# grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . conditions: + # toutes ces conditions: + # - projet . DPE visé <= 2 + # - DPE . actuel >= 2 +# grand narbonne . mon coach éco-logis . bonus bâtiment basse consommation . montant: + # titre: Bonus "Bâtiment basse consommation" + # applicable si: conditions + # valeur: 1500 € +# grand narbonne . mon coach éco-logis . bonus sortie passoire thermique: +# grand narbonne . mon coach éco-logis . bonus sortie passoire thermique . conditions: + # toutes ces conditions: + # - projet . DPE visé < 6 + # - DPE . actuel >= 6 +# grand narbonne . mon coach éco-logis . bonus sortie passoire thermique . montant: + # titre: Bonus "Sortie de passoire énergétique" + # applicable si: conditions + # valeur: 1500 € \ No newline at end of file From 2e27d81828b0c0766ae1e1b62f2e0bc9030f37c8 Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Wed, 25 Sep 2024 16:37:44 +0200 Subject: [PATCH 09/10] =?UTF-8?q?Pr=C3=A9mice=20de=20ce=20qui=20pourrait?= =?UTF-8?q?=20devenir=20un=20simulateur=20d'aide=20locale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/locale/BlocLocale.tsx | 71 +++++++++++++++++++++++++++ components/locale/PageLocale.tsx | 82 ++++++++++++++++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 components/locale/BlocLocale.tsx create mode 100644 components/locale/PageLocale.tsx diff --git a/components/locale/BlocLocale.tsx b/components/locale/BlocLocale.tsx new file mode 100644 index 00000000..b3a53dd2 --- /dev/null +++ b/components/locale/BlocLocale.tsx @@ -0,0 +1,71 @@ +import React from 'react' +import Image from 'next/image' +import GesteQuestion from './../GesteQuestion' +import mprImage from '@/public/maprimerenov.svg' +import { BlocAide, PrimeStyle } from '../UI' +import { getAnsweredQuestions } from '../publicodes/situationUtils' +import { useSearchParams } from 'next/navigation' + +export const BlocAideLocale = ({ info, rules, engine, situation, setSearchParams }) => { + + const rawSearchParams = useSearchParams(), + situationSearchParams = Object.fromEntries(rawSearchParams.entries()) + + // On affiche les questions répondues, mais pas celles validées (sinon elles s'affichent lors du parcours par geste) + const questionsAnswered = Object.keys(situation) + .filter(q => info.questions.includes(q) && + !getAnsweredQuestions(situationSearchParams, rules).includes(q)) + + let lastQuestionAnswered = -1; + for (let i = info.questions.length - 1; i >= 0; i--) { + if (questionsAnswered.includes(info.questions[i])) { + lastQuestionAnswered = i; + break; + } + } + + const currentQuestion = info.questions[lastQuestionAnswered+1]; + + const isExactTotal = Array.isArray(info.questions) && info.questions.every(question => question in situation) + const isEligible = info.montant !== "Non applicable" + + return ( + +
+

Calculateur des aides à la rénovation énergétique du Grand Narbonne

+
+
+ {info.questions.slice(0, lastQuestionAnswered+1).map((question, index) => ( + + ))} + {currentQuestion && ( + + )} +
+ + {isEligible ? + (<>Prime de {isExactTotal ? info.montant : "..."}) : + (Non Éligible) + } + +
+
+
+ ) +} \ No newline at end of file diff --git a/components/locale/PageLocale.tsx b/components/locale/PageLocale.tsx new file mode 100644 index 00000000..43e651ff --- /dev/null +++ b/components/locale/PageLocale.tsx @@ -0,0 +1,82 @@ +'use client' +import { getSituation } from '@/components/publicodes/situationUtils' +import { CTA, CTAWrapper, ExternalLink, Main, MiseEnAvant, Section } from '@/components/UI' +import rules from '@/app/règles/rules' +import Publicodes, { formatValue } from 'publicodes' +import getNextQuestions from '@/components/publicodes/getNextQuestions' +import { useSearchParams } from 'next/navigation' +import Link from 'next/link' +import css from '@/components/css/convertToJs' +import useSetSearchParams from '../useSetSearchParams' +import useIsInIframe from '@/components/useIsInIframe' +import Breadcrumb from '../Breadcrumb' +import { BlocAideLocale } from './BlocLocale' + +export default function PageLocale({ params }: { params: { place: string } }) { + + const isInIframe = useIsInIframe() + const engine = new Publicodes(rules) + const rawSearchParams = useSearchParams(), + situationSearchParams = Object.fromEntries(rawSearchParams.entries()) + const rule = Object.keys(rules).find((rule) => rule == "aides locales . "+decodeURIComponent(params.place)) + const situation = { + ...getSituation(situationSearchParams, rules), + } + + const info = { + montant: formatValue(engine.setSituation(situation).evaluate(rule + ' . montant'), { precision: 0 }), + titre: rules[rule].titre, + questions: rules[rule].questions.valeurs, + } + + console.log("missingVariables", engine.setSituation(situation).evaluate(rule + ' . montant').missingVariables) + + const setSearchParams = useSetSearchParams() + + return ( +
+
+ { !isInIframe && ( + <> + + + + ⬅ Retour à la liste des aides Locales + + + + )} +

{info.titre}

+ +

Informations sur les conditions d'obtention:

+
    +
  • Recours à un professionnel RGE
  • +
  • Le dépôt du dossier de demande d'aide s'effectue avant le démarrage des travaux.
  • +
  • Vous pouvez déposer votre dossier en ligne sur [site grand narbonne].
  • +
+
+ +
+
+ ) +} From 92c447d067bdecb3ea2425125e2524a5c83b3314 Mon Sep 17 00:00:00 2001 From: Morgan Merzouk Date: Wed, 25 Sep 2024 19:31:39 +0200 Subject: [PATCH 10/10] correction de l'affichage sur mobile du logo pour les questions d'aides locales --- app/simulation/QuestionHeader.tsx | 2 ++ components/ClassicQuestionWrapper.tsx | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/simulation/QuestionHeader.tsx b/app/simulation/QuestionHeader.tsx index c05cb0d6..a066bab5 100644 --- a/app/simulation/QuestionHeader.tsx +++ b/app/simulation/QuestionHeader.tsx @@ -5,6 +5,8 @@ export const QuestionHeader = styled.header` flex-wrap: wrap; align-items: start; flex-direction: column; + flex: 1; + min-width: 80%; margin: 0.4rem 0.2rem 0.4rem 0.2rem; > small { color: var(--color); diff --git a/components/ClassicQuestionWrapper.tsx b/components/ClassicQuestionWrapper.tsx index 7199102c..5fb73ee5 100644 --- a/components/ClassicQuestionWrapper.tsx +++ b/components/ClassicQuestionWrapper.tsx @@ -47,11 +47,10 @@ export default function ClassicQuestionWrapper({
{(!rule.type || !rule.type === 'question rhétorique') && ( -
+
{ aideLocale?.image && () }