-
Notifications
You must be signed in to change notification settings - Fork 24
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
Pilotage : Chiffres clés dynamiques dans le tableau de bord #4589
base: master
Are you sure you want to change the base?
Conversation
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
134df89
to
2c65d14
Compare
2c65d14
to
141745d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je t'ai pushé un petit commit d'ajustement ui 😘
@rsebille si t'es chaud, y'a le même besoin sur pilotage qui attend que j'ai le temps et que j'en sois capable ;) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
clevercloud/cron.json
Outdated
@@ -17,6 +17,7 @@ | |||
"1 0 * * * $ROOT/clevercloud/run_management_command.sh update_prescriber_organization_with_api_entreprise --verbosity 2", | |||
"30 0 * * * $ROOT/clevercloud/run_management_command.sh collect_analytics_data --save", | |||
"30 1 * * * $ROOT/clevercloud/run_management_command.sh new_users_to_mailjet --wet-run", | |||
"30 2 * * * $ROOT/clevercloud/run_management_command.sh metabase_data fetch --wet-run", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Est-ce qu'on ne voudrait pas l'appeler plus souvent (quitte à ne pas appeler metabase si les données du redis ont moins de 24h) ?
Parce que si le redis tombe, on aura 0 donnée pendant 24h
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai pas fait de fioriture car c'est vraiment pas critique comme information, si on n'a rien ça affichera juste N/A
dans les 4 blocs et la date de MAJ mais les TB complets seront OK eux.
Mais effectivement on pourrais faire ça aussi, surtout que le breakout
a permis de bien optimiser le nombre de requête à faire donc c'est moins lourd que ma première version qui utilisais filter
pour chaque bucket.
a942fb7
to
4695868
Compare
<a href="https://pilotage.inclusion.beta.gouv.fr/tableaux-de-bord/bilan-candidatures-iae/" | ||
target="_blank" | ||
rel="noopener" | ||
aria-title="En savoir plus sur ces données" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je pense il devrait être aria-label (le WAI ne recommande pas utiliser title
sans label
)
aria-title="En savoir plus sur ces données" | |
aria-label="En savoir plus sur ces données (ouverture dans un nouvel onglet)" | |
aria-title="En savoir plus sur ces données" |
<p>C’est le nombre de fiches de poste en tension chez les SIAE de votre territoire à l’instant.</p> | ||
</div> | ||
<div> | ||
<a href="{% url "stats:redirect" "tension" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<a href="{% url "stats:redirect" "tension" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> | |
<a href="{% url "stats:redirect" "tension" %}" target="_blank" rel="noopener" aria-label="En savoir plus sur ces données (ouverture dans un nouvel onglet)" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
</p> | ||
</div> | ||
<div> | ||
<a href="{% url "stats:redirect" "ph_prescription" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<a href="{% url "stats:redirect" "ph_prescription" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> | |
<a href="{% url "stats:redirect" "ph_prescription" %}" target="_blank" rel="noopener" aria-label="En savoir plus sur ces données (ouverture dans un nouvel onglet)" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
</p> | ||
</div> | ||
<div> | ||
<a href="{% url "stats:redirect" "state" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<a href="{% url "stats:redirect" "state" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> | |
<a href="{% url "stats:redirect" "state" %}" target="_blank" rel="noopener" aria-label="En savoir plus sur ces données (ouverture dans un nouvel onglet)" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pour infos, aria-title
n'existe pas. C'est soit aria-label
, soit title
. Il est recommandé d'utiliser aria-label
car mieux interprété par les screen reader.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, OK! J'ai lu que title
fait le tooltip (et aria-label
non) donc je pense les deux ensemble est mieux ici ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Si on a vraiment besoin d'un tooltip, on mettra plutot celui de BS5
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est pas moi chef ! J'ai fait que copier/coller 😁
https://github.com/gip-inclusion/pilotage/blob/799c0e3d7423cf2cb18404387a0109056ab40755/pilotage/templates/partials/home_section_apercu.html#L23
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ça t'apprendra à reprendre le code des autres ;) Je corrige sur pilotage 🙈
itou/www/stats/utils.py
Outdated
def get_stats_for_institution(institution: Institution, datum_key: DatumKey, *, is_percentage=False): | ||
match institution.kind: | ||
case ( | ||
InstitutionKind.DGEFP_GEIQ | ||
| InstitutionKind.DGEFP_IAE | ||
| InstitutionKind.DIHAL | ||
| InstitutionKind.IAE_NETWORK | ||
): | ||
grouped_by = None | ||
case InstitutionKind.DREETS_GEIQ | InstitutionKind.DREETS_IAE | InstitutionKind.DRIHL: | ||
grouped_by = "region" | ||
case InstitutionKind.DDETS_GEIQ | InstitutionKind.DDETS_IAE | InstitutionKind.DDETS_LOG: | ||
grouped_by = "department" | ||
case _: | ||
raise ValueError | ||
|
||
datum_key_to_fetch = DatumKey[f"{datum_key.name}_BY_{grouped_by.upper()}S"] if grouped_by else datum_key | ||
data = caches["stats"].get(datum_key_to_fetch) | ||
value = data.get(getattr(institution, grouped_by)) if grouped_by and data else data | ||
return value * 100 if is_percentage and value else value |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
import enum | ||
|
||
|
||
class DatumKey(enum.StrEnum): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
metabase_data = {DatumKey.DATA_UPDATED_AT: timezone.now()} | ||
for datum_key, metabase_informations in self.DATA_TO_FETCH.items(): | ||
self.logger.info("Fetching datum_key=%s", datum_key) | ||
converter = metabase_informations.get("converter", lambda x: x) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'aime bien le converter
:)
# Fetch the "group_by" data | ||
for name, fields in metabase_informations.get("group_by", {}).items(): | ||
self.logger.info("Fetching datum_key=%s group_by=%s", datum_key, name) | ||
metabase_data[DatumKey[f"{datum_key.name}_BY_{name.upper()}S"]] = converter( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
f"{datum_key.name}_BY_{name.upper()}S"
est partagé avec get_stats_for_institution
. Il pourrait être une méthode sur DatumKey
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Totalement !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PI, la PR passe en stand by pour le moment car il y a un problème métier avec les deux derniers indicateurs donc j’attends la décision sur le sujet : soit suppression, soit remplacement
</p> | ||
</div> | ||
<div> | ||
<a href="{% url "stats:redirect" "state" %}" target="_blank" rel="noopener" aria-title="En savoir plus sur ces données" class="btn btn-link ps-0 has-external-link">Consulter ces données</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est pas moi chef ! J'ai fait que copier/coller 😁
https://github.com/gip-inclusion/pilotage/blob/799c0e3d7423cf2cb18404387a0109056ab40755/pilotage/templates/partials/home_section_apercu.html#L23
# Fetch the "group_by" data | ||
for name, fields in metabase_informations.get("group_by", {}).items(): | ||
self.logger.info("Fetching datum_key=%s group_by=%s", datum_key, name) | ||
metabase_data[DatumKey[f"{datum_key.name}_BY_{name.upper()}S"]] = converter( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Totalement !
9cd5095
to
83990c8
Compare
eb9d130
to
7a5a314
Compare
155bb71
to
15f688c
Compare
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
15f688c
to
a9e0f58
Compare
a9e0f58
to
cc614a2
Compare
🤔 Pourquoi ?
[Chiffres clés dynamiques TB privés] - Institutions : intégrer les chiffres clés dynamiques et à jour sur la page statistique privée des emplois
🍰 Comment ?
Récupération des données via l'API Metabase, elles sont ensuite stockées dans le cache (un redis avec une expiration très longue)
🏝️ Comment tester
[Optionnel] Pour avoir des données :
METABASE_API_KEY
./manage.py metabase_data fetch --wet-run
💻 Captures d'écran