Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gestion des aides disponibles sur plusieurs collectivités #25

Open
EmileRolley opened this issue Dec 11, 2024 · 2 comments
Open

Gestion des aides disponibles sur plusieurs collectivités #25

EmileRolley opened this issue Dec 11, 2024 · 2 comments
Labels
🏛️ aides Lié à la modélisation des aides bug Something isn't working help wanted Extra attention is needed

Comments

@EmileRolley
Copy link
Collaborator

EmileRolley commented Dec 11, 2024

Contexte

Actuellement, pour chaque aide, est récupéré à la compilation, l'information de la collectivité dans laquelle l'aide est éligible :

const localisation = reduceAST(
(acc, node) => {
if (acc) {
return acc;
}
if (node.nodeKind === "operation" && node.operationKind === "=") {
for (let kind of collectityKinds) {
if (node.explanation[0]?.dottedName === `localisation . ${kind}`) {
return {
kind,
value: node.explanation[1]?.nodeValue,
};
}
}
}
},
null,
rule
);

Ainsi dans aides-collectivities.json, est associé pour chaque aide une collectivité :

{
  "aides . paris": {
    "collectivity": { "kind": "code insee", "value": "75056" },
    "country": "france"
  },
  "aides . saint-étienne": {
    "collectivity": {
      "kind": "epci",
      "value": "Saint-Etienne Métropole",
      "code": "244200770"
    },
    "country": "france"
  },

Qui est ensuite utilisé par la méthode getAllAidesIn de la classe AideVeloEngine :

public getAllAidesIn(
country: Localisation["country"] = "france"
): Omit<Aide, "amount">[] {
return aidesAvecLocalisationEntries
.filter(([, { country: aideCountry }]) => aideCountry === country)
.map(([ruleName]) => {
const rule = this.engine.getRule(ruleName);
// PERF: could simplify this by simply extracting the collectivity from
// the AST instead of the data object. And removing Luxembourg and
// Monaco to avoid needing to import the whole
// aides-collectivities.json file?
const collectivity = aidesAvecLocalisation[ruleName].collectivity;
return {
id: ruleName,
title: rule.title,
description: rule.rawNode.description,
url: (rule.rawNode as any).lien,
collectivity,
logo: miniatures[ruleName],
};
});
}

Cette information est ensuite utilisée pour permettre d'associer un logo correspondant à la collectivité par exemple :

image

Le problème

Il a été fait l'hypothèse implicite que la première comparaison de type localication . <type> = <valeur> rencontrée serait la collectivité associée à cette aide. Cependant, il existe plusieurs aides qui ne sont pas éligible pour une unique localisation.

C'est le cas par exemple de l'aide . grenoble, portée à la fois par le Syndicat Mixte des Mobilités de l’Aire Grenobloise et par Grenoble Alpes Métropole :

aides . grenoble:
remplace: intercommunalité
titre: Syndicat Mixte des Mobilités de l'Aire Grenobloise et Grenoble Alpes Métropole
description: >
Afin d'encourager les déplacements à vélo et de vous aider dans
l'acquisition d'un équipement, le Syndicat Mixte des Mobilités de l'Aire
Grenobloise et Grenoble Alpes Métropole mettent en place une aide à l'achat
de vélo.
applicable si:
toutes ces conditions:
- une de ces conditions:
- localisation . epci = 'Grenoble-Alpes-Métropole'
- localisation . epci = 'CC Le Grésivaudan'

Ici, l'aide est donc associée à la métropole Grenoble-Alpes :

{
  "aides . grenoble": {
    "collectivity": {
      "kind": "epci",
      "value": "Grenoble-Alpes-Métropole",
      "code": "200040715"
    },
    "country": "france"
  },
}

Et ce, même dans le cas où elle est eligible car la localisation de la situation situe le:a demandeur:euse dans le Grésivaudan.

Question

Comment souhaitons-nous gérer les cas des aides qui ne sont pas rattachées à une unique collectivité ?

Curieux d'avoir votre avis sur ce sujet @mquandalle @Shamzic @WoWo79 car ça peut avoir un impact sur les différents produits.

@EmileRolley EmileRolley added bug Something isn't working help wanted Extra attention is needed 🏛️ aides Lié à la modélisation des aides labels Dec 11, 2024
@Shamzic
Copy link
Contributor

Shamzic commented Dec 11, 2024

Assez naïvement (je ne sais pas si cela implique un gros travail technique), cela ne me choquerait pas d'avoir un tableau collectivities dans une aide pour contenir plusieurs collectivités. Pour mesaidesvelo, il faudra choisir la collectivité associée au code postal du demandeur à l'affichage de l'aide.

@EmileRolley
Copy link
Collaborator Author

EmileRolley commented Dec 11, 2024

Assez naïvement (je ne sais pas si cela implique un gros travail technique), cela ne me choquerait pas d'avoir un tableau collectivities dans une aide pour contenir plusieurs collectivités. Pour mesaidesvelo, il faudra choisir la collectivité associée au code postal du demandeur à l'affichage de l'aide.

Oui ça serait peut-être le plus logique.

Je me pose la question alors de savoir si l'information pertinente ne serait pas juste d'avoir l'échelle : état (RIP), région, département, etc.. et que ce soit au client de retrouver l'information. En effet, si le client doit de toute façon embarquer la logique de pouvoir retrouver un EPCI à partir d'un code insee par exemple, l'avoir dans l'aide n'est pas très utile.

Il faudrait transformer l'attribut logo en logos également ou alors avoir un attribut collectivities :

  collectivity: Array<{
    kind: "pays" | "région" | "département" | "epci" | "code insee";
    value: string;
    code?: string;
    logo?: string;
  }>;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏛️ aides Lié à la modélisation des aides bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants