@@ -2,23 +2,30 @@ Ce document a pour vocation d'apporter plus de precisions quand aux amelioration
Techniques :
Securité -> Mise en place du HTTPS (VueJs & Flask)
Agencement du code -> Casser le composant Volet_Base pourrait être bénéfique pour la lecture du code (mais potentiellement fastidieux). Plusieurs portions de code dupliqués à optimiser (VueJs)
Tests plus exaustifs -> les tests actuels sont considérables comme trop basiques et ne demandent qu'à être plus pertinents. Utilisation de mocks recommandés (VueJs & Flask). La méthodologie de travail pendant le stage de 2021 n'était pas des plus optimales, développer cette partie pourrait améliorer la robustesse de l'application.
Empecher la multiconnexion -> si on peut éviter les problématiques d'acces concurrents aux contenus, ca peut être bien (VueJs probablement)
Integration continue -> A la convenance du développeur, idéalisme non converti du stagiaire de l'époque (J.Passerat)
- Securité -> Mise en place du HTTPS (VueJs & Flask). Le web service est mono-utilisateur (aucun système de compte intégré). La sécurisation n'est, pour le moment, uniquement faite via token JWT. Conserver tel quel ? Associer JWT avec un système d'utilisateurs (soit géré via mongo, soit en interne) ? Passer sur une solution plus 'lourde' (Oauth2)
- Agencement du code -> Casser le composant Volet_Base pourrait être bénéfique pour la lecture du code (mais potentiellement fastidieux). Plusieurs portions de code (dupliqués) à optimiser (VueJs)
- Tests plus exaustifs -> les tests actuels sont considérables comme trop basiques et ne demandent qu'à être plus pertinents. Utilisation de mocks recommandés (VueJs & Flask). La méthodologie de travail pendant le stage de 2021 n'était pas des plus optimales, développer cette partie pourrait améliorer la robustesse de l'application.
- Empecher la multiconnexion -> si on peut éviter les problématiques d'acces concurrents aux contenus, ca peut être bien (VueJs probablement)
- Integration continue -> A la convenance du développeur, idéalisme non converti du stagiaire de l'époque (J.Passerat)
Fonctionnels :
Integration d'autres contenus. Les contenus autres que xml sont importables, mais des choses à améliorer (ex : si on integre un contenu vidéo, comment on le consulte ?) (VueJs et surement Flask)
Mise en place de la partie evaluations. Normalement ok côté Flask, la partie VueJs serait à faire (VueJs)
Mode recherche complet -> implémenter la recherche sur le texte des contenus et traiter les saisies multi termes. Autre probleme, actuellement la recherche sur le titre marche sur le systeme = (egalite parfaite entre la saisie et le titre), avec un système d'array.filter(). Il faudrait modifier ça pour faire un système du genre le LIKE de SQL (si le titre contient le terme saisi c'est bon).
Système d'actualisation des contenus -> Permettrait d'avoir des maj de la banque ou des apparitions de maj contenu sans devoir se deconnecter. Pistes à creuser : une entrée HTTP sur FLask en 'écoute active' qui enverrai à chaque modification dans Flask l'information directement à VueJs (existe en Spring par exemple, en Flask pas trouvé (mais existe potentiellement aussi)
Automatisation des imports / exports -> Grosse problématique. Comment s'interfacer directement avec Moodle (et autres). Ces plate-formes proposent t'elles des api permettant une connexion 'programmaticalle' permettant de naviguer dans les cours d'un utilisateur et de récupérer / déposer des contenus. Développer un plugin Moodle (fonctionnerait pour l'import dans OpenQuizz, ptet plus difficile à imaginer pour l'export).
Amélioration de l'ergonomie -> Trouver qqun ayant des compétences en web design et éventuellement améliorer la lisibilité des fonctionnalités du site (un exemple au hasard -> proposer un comparatif avant / apres dans le menu des maj recues pour pouvoir évaluer la pertinence d'une maj recue)
- Integration d'autres contenus. Les contenus autres que xml sont importables, mais des choses à améliorer (ex : si on integre un contenu vidéo, comment on le consulte ?) (VueJs et surement Flask)
- Mise en place de la partie evaluations. Normalement ok côté Flask, la partie VueJs serait à faire (VueJs)
- Mode recherche complet -> implémenter la recherche sur le texte des contenus et traiter les saisies multi termes. Autre probleme, actuellement la recherche sur le titre marche sur le systeme = (egalite parfaite entre la saisie et le titre), avec un système d'array.filter(). Il faudrait modifier ça pour faire un système du genre le LIKE de SQL (si le titre contient le terme saisi c'est bon).
- Système d'actualisation des contenus -> Permettrait d'avoir des maj de la banque ou des apparitions de maj contenu sans devoir se deconnecter. Pistes à creuser : une entrée HTTP sur FLask en 'écoute active' qui enverrai à chaque modification dans Flask l'information directement à VueJs (existe en Spring par exemple, en Flask pas trouvé (mais existe potentiellement aussi)
- Automatisation des imports / exports -> Grosse problématique. Comment s'interfacer directement avec Moodle (et autres). Ces plate-formes proposent t'elles des api permettant une connexion 'programmaticalle' permettant de naviguer dans les cours d'un utilisateur et de récupérer / déposer des contenus. Développer un plugin Moodle (fonctionnerait pour l'import dans OpenQuizz, ptet plus difficile à imaginer pour l'export).
- Amélioration de l'ergonomie -> Trouver qqun ayant des compétences en web design et éventuellement améliorer la lisibilité des fonctionnalités du site (un exemple au hasard -> proposer un comparatif avant / apres dans le menu des maj recues pour pouvoir évaluer la pertinence d'une maj recue)
- Création de contenus directs via OpenQuizz -> Dans un premier temps pour moodle (formulaire similaire a la modification -> materialiser un xml dans flask), ajouter un module (lié au bouton ⊕)
- Une vraie authentification. 2 options possibles -> compléter le formulaire actuel (avec un mot de passe et les vérifications liées)
-> récupérer les plugins d'authentification universitaires (ex : celui de l'ent de l'Univ Orléans ou celui de Moodle)
- Trouver comment traiter la visualisation sur les fichiers importés non XML (par exemple un pdf)
ANNEXE : Déploiement de l'application sur Apache (ou autres)
- Mettre un système de détection d'incohérences pour le filtre notes (si on prend note mini a 3.5 et note maxi a 2.5 on aura jamais rien en sortie)
ANNEXE : - Déploiement de l'application sur Apache (ou autres)
La procédure est expliquée dans le guide d'installation, disponible sur la même branche Moodle ou vous avez trouvé ce contenu
...
...
@@ -27,5 +34,13 @@ ANNEXE : Déploiement de l'application sur Apache (ou autres)
Il est donc possible que subsistent des bugs liés à la migration et aux spécificités d'avoir un web service distant et non local
Pour débugger des éventuels problèmes, une solution peut être de cabler le VueJs qui tourne en local sur votre ordinateur au web service distant (se référer au guide d'installation pour la connexion), ce qui peut permettre de débugger le coté client plus facilement. Concernant le côté serveur, les logs sont disponibles dans un fichier spécifique, actuellement situé à "/var/www/flask/logs" (peut varier selon la configuration mise en place)
- Cela vaudrait-il le coup de faire tourner le VueJS avec la version locale de Flask sur le serveur ovh ? (Interroger Flask sur 127.0.0.1/api au lieu de 193.70.2.155/api)
- Le CORS est actuellement configuré pour accepter tout le monde dans le Flask. A voir si cela doit être restreint dans le futur.
@@ -11,6 +11,8 @@ Manuel d'Installation Flask v2 -> permet d'installer, mettre à jour, générer
ameliorations_esperees -> précisions sur les améliorations envisagées au 30/09/2021 (txt)
Tests a valider Vue -> une liste de fonctionnalités et des indications pour savoir si elles tournent bien ou non. 3 lignes de commentaires sont présentes en bas de tableau
## Documentation rédigée pour le stage M2
Rapport Stage M2 - PASSERAT Jérémie -> le rapport rendu (Gestion des Quiz - Analyse fonctionnelle (avancée) en annexe) (pdf)
Soutenance de Stage -> le powerPoint créé pour accompagner la soutenance de stage. Contient des animations (pptx)