Projet

Général

Profil

Development #31216

Statistiques : répartion des temps de traitement d'une démarche en fonction d'un seuil arbitraire

Ajouté par Emmanuel Cazenave il y a environ 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
08 mars 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Club:
Non

Description

D'après Rouen indicateur très classique dans le cadre d'une démarche qualité (et utilisé par des certifications de ce type: https://certification.afnor.org/services/engagement-de-service-qualiville-prestations-a-destination-des-clients-utilisateurs-de-services-municipaux).

Pour la démarche 'toto', afficher le pourcentage des demandes traitées en moins de X jours. Où X est paramétrable, avec derrière l'idée qu'un collectivité cherchera à atteindre par exemple 80% de demandes traitées en moins de X jours, et que X varie selon la démarche.

Historique

#1

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

Ma vision du problème: il faudrait des dimensions paramétriques générés pour les colonnes simples de type integer ou duration.

Pour chaque mesure de type duration/integer "x" on génère une dimension "Répartion x" qui prend pour paramètre une liste de seuils.

Le widget utiliser pour les regroupements doit être évolué vers un widget complexe :
  • il affiche d'abord une combo box
  • si dans la combo box est choisie une dimension paramétrique il émet une erreur de validation et au réaffichage affiche un champ texte
  • dans les champ texte on doit entrer une liste de flottants (gérer la syntaxe française avec virgule) séparés par des blancs, au minimum 1 nombre
  • pour les mesures duration on cast ça avec timdelta(days=x) sinon float
  • à la génération de la query (par la méthode sql_query, drilldown peut maintenant contenir soit une chaîne (nom du regroupement, soit un objet BeanGrouping(name, thresholds=[]) et ici on a peut-être intéré à ne plus passer des chaînes et à travailler avec des objets Dimension directement
    • il faut séparer les objets BeanGrouping des autres regroupements, générer une première
    • BeanGrouping.group_by doit renvoyer une expression comme
      CASE WHEN {measure.name} < {threshold.0} THEN '{measure.label} < {threshold.0} jours/choucroutes'
           ...
           WHEN {measure.name} < {threshold.n-1} THEN '{threshold.n-1} < {measure.label} < {threshold.n} jours/choucroutes'
           ELSE "{threshold.n} < {measure.label} jours/choucroute'
      

Voilà ça ne résoud le problème que dans le cas où on a une colonne ou expression facilement calculable "durée de traitement".

Si on veut des pourcentages par rapport au total pour une période ce sera plus complexe....

Le plus simple pour réfléchir c'est de commencer par écrire les requête SQL équivalente et voir comment les générer.

Formats disponibles : Atom PDF