[Modèle] Gestion de la Relation Usagers / Gestion des demandes

Un modèle Grist pensé pour les mairies et collectivités qui souhaitent structurer la Gestion de la Relation Usager (GRU). Ce prototype permet de centraliser les demandes des citoyens, de les attribuer aux services concernés et de suivre leur traitement.

Accéder au template : Modèle GRU Mairie

Lien de téléchargement direct (à importer ensuite dans un dossier, bouton Nouveau > Importer un document) :
Démo GRU Mairie.grist (220 Ko)

:bar_chart: Structure des données

Le document s’articule autour de 5 tables interconnectées.

  • Services regroupe les services de la mairie (Service Technique, Police Municipale, Papiers et passeports…) avec leur code et responsable désigné.

  • Agents constitue l’annuaire des agents avec leurs coordonnées, poste et service de rattachement. Une colonne calculée Nom_Prenom facilite l’affichage.

  • Demandes est le cœur du système. Chaque demande contient les informations du demandeur (civilité, nom, prénom, adresse, téléphone, email), la date de réception, la description, le(s) service(s) concerné(s), le caractère urgent ou non, le moyen de contact initial, et la possibilité de joindre des pièces. Un numéro de demande unique au format AAAA-XXXX est généré.

  • Commentaires conserve l’historique des échanges et actions sur chaque demande, datés et liés à la demande correspondante via le numéro de demande.

  • Suivi_avancement est la table qui permet de suivre l’état d’avancement de chaque demande (« traité », « bloqué », « en cours »)

:bookmark_tabs: Pages et vues

Le template propose 7 pages pour différents usages.

:convenience_store: Services & Agents permet l’administration des services et de l’annuaire des agents.

:memo: Formulaire de demande expose un formulaire public pour la saisie des demandes par les citoyens

:sos: Demandes urgentes filtre uniquement les demandes marquées comme urgentes.

:chart_with_upwards_trend: Suivi Global est le tableau de bord principal avec trois widgets liés

Les pages :man_police_officer: Suivi - Police Municipale, :hammer_and_wrench: Suivi - Services Techniques et :black_nib: Suivi - Admin offrent des vues dédiées à chaque service.

:link: Focus sur les vues liées de « Suivi Global »

La page Suivi Global est un bon exemple de l’utilisation des vues liées dans Grist. Elle contient trois widgets connectés entre eux.

Le premier widget affiche la liste des Demandes sous forme de tableau. C’est le widget « maître » qui pilote les deux autres.

Le deuxième widget est une vue fiche de la table Suivi_avancement**. Elle est liée au premier widget via la colonne Demande : quand on sélectionne une demande dans le tableau, la fiche affiche automatiquement le suivi correspondant à cette demande.

Le troisième widget montre les Commentaires liés. Il est également connecté au premier widget via la colonne Numero_de_demande : seuls les commentaires de la demande sélectionnée s’affichent.

Concrètement, quand un agent clique sur une demande dans le tableau de gauche, il voit instantanément à droite la fiche de suivi avec l’état d’avancement et le dernier commentaire, ainsi que l’historique complet des commentaires en dessous. C’est fluide et ça évite de naviguer entre plusieurs pages.

Formules

Le template utilise plusieurs formules intéressantes.

Génération du numéro de demande: Un numéro de demande unique au format AAAA-XXXX est généré grâce à une formule d’initialisation :

annee = str(NOW().year)
maxvalue = PEEK(MAX(int(v.split("-")[1]) if (v and v[:4] == annee) else 0 for v in Demandes.all.Numero_demande2))
return "{}-{:04d}".format(annee, maxvalue + 1)

Récupération du dernier commentaire (Suivi_avancement.Dernier_Commentaire) :

commentaires = Commentaires.lookupRecords(Numero_de_demande=$Demande)
if commentaires:
  return max(commentaires, key = lambda x: x.Date).Commentaire
return None

État d’avancement synchronisé : La colonne Etat_d_avancement dans la table Demandes est récupérée depuis la table Suivi_avancement :

Suivi_avancement.lookupOne(Demande=$id).Etat_avancement

Mise en forme conditionnelle : Les demandes traitées sont colorées en vert grâce à une règle conditionnelle basée sur $Etat_d_avancement == "Traité".


N’hésitez pas à dupliquer ce template et à l’adapter à vos besoins ! Vos retours et suggestions d’amélioration sont les bienvenus.

2 « J'aime »