PapillonApp / papillon-v6

Le client alternatif de vie scolaire ouvert à tous et porté par la communauté
https://getpapillon.xyz
GNU General Public License v3.0
128 stars 47 forks source link

[Enhancement]: Ajout d'une durée d'absence d'un professeur #41

Closed Vilerio closed 5 months ago

Vilerio commented 8 months ago

Description du problème

Lorsqu'un cours est annulé pour le motif prof absent, la durée depuis laquelle ce professeur est absent est affichée

Description de l'amélioration

Lorsqu'un cours est annulé pour le motif prof absent, la durée depuis laquelle ce professeur est absent est affichée

Contexte supplémentaire

No response

LeGeek01 commented 7 months ago

Pronote ne retourne pas cette valeur, et pour l'avoir il faudrait récupérer l'edt entier, ce qui est vraiment casse gueule niveau requêtes... Pour moi c'est pas une fonctionalité utile

Vilerio commented 7 months ago

Oui faudrait effectivement le calculer après est-ce que on peut pas stocker ça en cache pour pas avoir à faire 800 requêtes ?

LeGeek01 commented 7 months ago

Stocker quoi en cache ? L'edt complet ?

Vilerio commented 7 months ago

non, la durée d'absence d'un professeur tant qu'il est absent

LeGeek01 commented 7 months ago

Détaille ce que tu veux dire

Vexcited commented 7 months ago

Le problème de stocker juste la valeur c'est

  1. Comment tu relie la valeur au professeur (en étant sûr que ce soit exactement le même à travers deux sessions différentes) ?
  2. Comment tu assures la validité de cette valeur, sachant que la vie scolaire / direction peut étendre l'absence ou même la réduire ? Il faudrait actualiser ce cache, ce qui voudrait dire récupérer l'EDT entier à chaque fois que l'on veut mettre à jour cette valeur...

C'est assez coûteux à implémenter, si jamais il faudrait le faire, je pense que l'utilisateur doit forcer la récupération de cette valeur en avertissant que l'opération risque de prendre un petit temps (car un fetch vers Pronote ça prend assez longtemps, et sachant qu'on a genre 35-40 semaines dans une année, bah on tape facilement dans la trentaine de requêtes, bon..., faut aussi ajouter un throttler car sinon y a moyen de se faire ban IP / rate limit sur l'API de Pronote)

Vilerio commented 7 months ago

Effectivement ça peut être couteux à implémenter, et pas prioritaire comme feature, mais ça peut être interessant ce genre de stats, par exemple pour un bilan à la fin de l'année

Vexcited commented 6 months ago

sachant qu'on a genre 35-40 semaines dans une année, bah on tape facilement dans la trentaine de requêtes, bon...

Je souhaite revenir sur ce que j'ai dis : avec la nouvelle version de Pawnote (0.20.0) et mes nouvelles découvertes, on peut récupérer l'ENTIÈRETÉ de l'emploi du temps en UNE seule requête.

import { authenticatePronoteCredentials, PronoteApiAccountId } from "pawnote";

const pronote = await authenticatePronoteCredentials("https://demo.index-education.net/pronote", {
  accountTypeID: PronoteApiAccountId.Student,
  username: "demonstration",
  password: "pronotevs",

  // Because this is just an example, don't forget to change this.
  deviceUUID: "my-device-uuid"
});

const timetable = await pronote.getTimetableOverview(pronote.firstDate, pronote.lastDate);
const classes = timetable.parse({
  withSuperposedCanceledClasses: false,
  withCanceledClasses: true,
  withPlannedClasses: true
});

console.log(classes.length) // 881

Rien qu'avec l'instance de démo, on peut récupérer les 881 cours en moins de deux secondes. Ces 881 cours représentent tout les cours de l'année (sans les cours superposés, donc sans les doublons).

Pour vérifier qu'on a bien tout les cours de l'année, on peut s'amuser à faire

classes.forEach((currentClass) => console.log(currentClass.startDate));

et on obtient...

2023-09-01T06:00:00.000Z
2023-09-01T07:00:00.000Z
...
2024-06-28T08:00:00.000Z
2024-06-28T11:30:00.000Z

donc au final, y a bien moyen de récupérer toute l'année de manière bien moins coûteuse.


Tout ça pour dire qu'au final ta fonctionnalité PEUT être implémenté (uniquement pour Pronote)

Vilerio commented 6 months ago

Nice ! j'avais vu passer tes découvertes, merci pour ces informations !

LeGeek01 commented 6 months ago

@LeMaitre4523 il me semble que t'avais dis que sur ed c'étais pareil ?

LeMaitre4523 commented 6 months ago

Sur ED, on peut effectivement aussi récupérer tout l'EDT d'un coup

LeMaitre4523 commented 6 months ago

Après faut penser aux services qui seront ajouté après, tel que Skolengo

LeGeek01 commented 5 months ago

faute d'activité je ferme cette issue je pense aussi qu'il n'est pas forcément pertinent d'avoir le nombre d'heures qu'on a pas eu avec un prof, à voir quand le système d'extensions fonctionnera