Site Uniksim
Information sur tout ce qui concerne le site web de uniksim. Principalement pour l'équipe de développement
- Note uniksimWeb
- Update/Deploy dans Angular (old)
- Debug en Web frontEnd
- Test de fonctionnalité complète
- Compte test - Création de compte
- Local database (PHPMyAdmin) - Conflict
- Build Unity en local
Note uniksimWeb
Les versions utilisées sur le site :
- Node.js v.22.5.1
- Angular v.18.2.11 (FrontEnd)
- NestJs v.11.0.11 (BackEnd)
Angular / NodeJs compatibilité : Lien
|
Changer de version avec nvm (Node Version Manager) : Voir la liste sur nvm (Node Version Manager) : Voir les packages outdated : Mettre à jour les packages (classique) : Mettre à jour les packages (avec npm-check-updates) : |
|
Node version : Angular version : NestJs version : *npm-check-updates (backendEnd) :
Note : Le fichier package.json possède toutes les versions Note : Ne pas oublier de faire un |
Les imports importants NestJs :
- TypeOrmModule : Communication et conversion des données avec la mySql (Query)
-
DatabaseProviders : Connection avec mySql
- Guard : Authentification et accès
- MailGun : Système de messagerie
- Generate Password TS : Système de génération de mot de passe (mot de passe oublié)
Pour plus de détails voir : app.module.ts ou package.json
Les roles :
- user:
- Permission de jouer (Games uniquement)
- user_uniksim:
- Permission d'accès au site
- Permission de jouer
- admin_user:
- Permission d'accès au site
- Permission de jouer
- Permission avec accès limité à la page admin
- admin:
- Toute permission
*note: Il existe un role superAdmin, mais cela n'est pas vraiment utilisé...
DigitalOcean (Update branch) :
Si vous avez accès à DigitalOcean, vous pouvez faire des changements sur le site en version live* (Principalement pour des updates en Git)
*Ici "live" peut-être un site de développement avec un domain, pas forcément le vrai site
**n'oublie pas de builder vos channgements avant d'update! (frontend surtout)
- Dans la section, Droplets, puis le dossier du site en question
- Ensuite dans Console
- Vous devriez voir une console en linux pour faire les modifications
- Naviguer à travers les fichiers pour trouver le dossier recherché
- Note 1: Les commandes git se font généralement sur le fichier source (Dans ce cas sim.uniksim.com)
- Note 2: Durant un
npm installsur la console de Droplet, il faudrait ajouter--legacy-peer-depsà la fin. (la version de Droplet est plus récente)- Note 2.1: Un
npm audit fixpourrait être intéressant pour fix les soucis de package conflict. [Autre Solution Non recommandé] Pour être aussinpm audit fix --force, cependant ceci risque de brisser des packages.
- Note 2.1: Un
- Note 3: Il se peut que le dossier source root n'est pas le dossier recherché, puisque votre username de base de donnée (database) n'est pas le même.
- Faire la commande suivante si c'est le cas (forge fait référence au username, changer selon le cas)
-
su - forge
-
- Faire la commande suivante si c'est le cas (forge fait référence au username, changer selon le cas)
- Utiliser les commandes nécessaire à vos changements
- Remettre à l'état d'origine le dossier
-
git reset .
-
git reset --hard
-
git reset --hardrisque de nécessiterorigin/mastercomme paramètre
-
-
- Récupérer la branch commit
-
git pull
-
- Aller vers la branche
-
git checkout
-
- Voir l'état de la branche actuel
-
git status
-
- Similaire à reset, elle permet de retirer les dossiers non nécessaires
-
git clean -fd
-
- Remettre à l'état d'origine le dossier
- Faire
cd uniksim-back-end, puis fairenpm run buildpour appliquer les changements - (optionnel) Faire
npm run startpour lancer le site. *n'oublie de faire de même pour admin_server si nécessaire
Cookieyes :
Url : https://app.cookieyes.com/
Script url : https://cdn-cookieyes.com/client_data/b08568c123e8efb0b38c9ce6/script.js
Build :
- Pour les build, utiliser la commande Build Frontend project
- Si cela n'est pas possible, utiliser la commande ci-dessous dans un terminal (dans le dossier uniksimFrontEnd)
ng build
- Vous devriez avoir créer un build nommer Front dans le dossier uniksim-back-end
- Par la suite ServeStaticModule (Permet de rendre le build static et disponible pour le serveur) va pourvoir recréer ce dossier à l'intérieur de dist, lorsque le serveur sera en marche.
- Note: le fichier nest-cli.json est important pour importer tous les fichiers du dossier front généré. Spécifiquement la ligne :
{ "include": "front/**/*"} - Note: si vous changez unity build (ex: Build.data.unityweb), s'assurer de mettre la même version dans constantsVariable
Notes :
- Dans database.providers.ts, "synchronize" permet de faire en sorte que les entitées de node.js (typeOrm) sont créer ou modifier sur Sql. Il est donc préférable de le laisser false
- Si vous voulez augmenter la taille maximum pour le phpmyadmin suivre ce post:
https://stackoverflow.com/questions/3958615/import-file-size-limit-in-phpmyadmin
- La commande pour envoyer le serveur backend en local (il faut bien sûr "cd" dans le bon dossier) :
npm run start
- Version en live/demo :
npm run start:live
- Cette commande nécessite le build
npm run build
- Cette commande nécessite le build
- Version en live/demo :
-
- Celui du frontend est :
ng serve
- Celui du frontend est :
- Pour debug le code du frontend (Angular), il faudra utiliser l'inspecteur du navigateur (Dans source)
- Accès au SQL : https://db.uniksim.com/phpmyadmin/sql.php?server=1&db=uniksim&table=constants&pos=0
- La commande pour lancer admin_server (après su- forge) :
node sim.dev.uniksim.com/uniksim-back-end/src/node.js/server/admin_server.js
- Il est possible d'ajouter un paramètre :
node admin_server.js dev
- Il est possible d'ajouter un paramètre :
Problèmes :
- Si les modifications appliqués sur le dossier server ne sont pas appliqués, vous avez probablement compilé le script sur "dist/../"
- Si vous avez un problème de ENOENT: no such file or directory, scandir sur le serveur dev (sim.dev.uniksim), il y a probablement un problème de version dans les packages. Une solution serait de refaire les fichiers non tracés par git (supprimer et installer)
- Si vous avez cette erreur sur la console DigitalOcean
- Faite
sudo lsof -i :3000pour trouver le node en cours -
~hFHs>!SLx3)d4Yc_HbQsi nécessaire - Puis
kill -9 <PID>pour le terminer - Refaire votre commande
- Faite
Les références de création :
- Site de NestJs : https://docs.nestjs.com/first-steps
- Site de compatibilité de version Angular/Node : https://v17.angular.io/guide/versions
- Léger tread de discussion sur les version NestJs/Node : https://stackoverflow.com/questions/77160198/how-to-find-supported-node-js-version-for-nest-js
- Configuration de NestJs/MySQL (phpMyAdmin) : https://blog.stackademic.com/connecting-nestjs-to-mysql-a-step-by-step-guide-ab4086baf918
- Configuration de NestJs : https://medium.com/@anteprocess/%EF%B8%8Fnestjs-for-beginners-part-1-overview-and-project-setup-launch-33dc7d8071e9
- Imports of node.js (Javascript files) : https://medium.com/@eladk/moving-from-javascript-to-typescript-lifehacks-e29d7e1aa3e0
- Decoration pour les expressions Sql : https://typeorm.io/decorator-reference#column-decorators
- Typeorm wiki (NestJs/Sql data communication) : https://orkhan.gitbook.io/typeorm/docs/find-options
- Debugger for NestJs : https://dev.to/gentax/nestjs-right-settings-for-debugging-kl0
- bCrypt détailes post : https://stackoverflow.com/questions/15733196/where-2x-prefix-are-used-in-bcrypt/36225192#36225192
- TypeOrm relations (Many-to-one / one-to-many): https://github.com/typeorm/typeorm/blob/master/docs/many-to-one-one-to-many-relations.md
- Simple Unity/Angular intégration : https://medium.com/@6386391ritesh/unity-webgl-in-angular-686397677500
- Build le projet Angular à l'intérieur de Nestjs : https://medium.com/codeshake/deploy-an-angular-nestjs-app-to-heroku-807a2833d88c
- SSE notification : https://medium.com/@andrewkoliaka/implementing-server-sent-events-in-angular-a5e40617cb78
- Erreur commun pour nvm lorsqu'il refuse de changer de version : https://stackoverflow.com/questions/47017812/nvm-use-does-not-switch-node-versions
Update/Deploy dans Angular (old)
Faire un déployement sur Angular pour Admin (old)
Tous les étapes se font sur Visual Studio Code
1) Se déplacer au bon dossier :
-
- Avec la command suivante
cd {uniksim}/frontend/angular
2) Build Angular :
-
- Avec la command suivante
ng build
3) Modifier le angular.blade.php :
Situé à {uniksim}/resources/views/angular.blade.php
-
- Remplacer les balises html, head et base
- Remplacer les balises html, head et base
|
@extends('layouts.app') @section('title') @section('applink') @stop @section('content') |
-
- Remplacer les balises body et html
- Remplacer les balises body et html
|
@endsection |
-
- Retirer la balise ouvrante body et la balise fermante head
Debug en Web frontEnd
Avant de commencer assurer vous d'être en localhost:4200 (à moins qu'il a était changé), car :
- localhost:4200 utilise le dossier frontEnd et backEnd (source)
- localhost:3000 utilise uniquement le backEnd (source) et la version build du frontEnd
De plus, ce tutoriel va modifier la connexion à titre d'exemple
- Activer le site sous Launch Frontend and Backend (dev)
- Vérifier que tout soit en marche :
- Sur le frontEnd vous devriez avoir
- Sur le backend vous devriez avoir (les messages peuvent varier d'ordre)
- Sur le frontEnd vous devriez avoir
-
Ouvrir une session localhost:4200 web - Sous Sources>Page>webpack://>login>login.component.ts
- Mettre des points d'arrêts sur la requête attendu
- Envoyer la requête, vous devriez commencé à débugger
Note: Tous les changements sont sauvegarder automatiquement sur le site local. Si vous avez un doute, faite un changement et sauvegarder. La page devrait se rafraîchir tout seul (s'il n'est pas en debuggeur actuellement). Cependant, le backend est indépendant du frontEnd, donc il faudrait attendre quelque seconde avant d'envoyer la requête (regarder la console pour voir l'état)
Test de fonctionnalité complète
*note: Les tests ci-dessous sont déjà dans un ordre pour simplifier les tests. Cependant, beaucoup de déconnexions seront requises
Fonctionnalité - Cas d'utilisateur normal
Register :Vérifier que le bouton Créer un compte enseignant fonctionne, suite aux étapes de création
Vérifier aussi les cas d'échecs
Ceci devrait créer un token (dans LocalStorage)
*note: Si ceci est fait sur le site Live ou Dev, veuillez l'ajouter sur Compte test - Création de compte (Se trouvant sur le Wiki) et les supprimer par la suite serait pertinent |
|
L'ajout de produit :Vérifier que l'ajout de code d'activation fonctionne bien. Ceci devrait ajouter un ou des produits sur la liste en conséquence
Vérifier aussi les cas d'échecs
*note: Un test de ressources et de simulation démo seront vu ci-dessous. Ajouter un produit enseignant à cet étape serait pratique pour vous |
|
Jouer à la simulation :Vérifier que les produits fonctionnent bien en cliquant dessus. Ceci inclus:
Ceci devrait Créer un token (dans Cookies) lors de l'ouverture, puis il devrait supprimer le token (dans Cookies) lorsqu'il appuie sur Sauvegarder et quitter
*note: Le bouton Sauvegarder et quitter ferme votre connexion
**note: Il n'est pas nécessaire d'approfondir l'utilisation de la simulation. Juste pouvoir l'ouvrir est suffisant. Quelques fonctionnalités seront testées avec le rôle en True Admin plus bas |
|
La liste des produits :Vérifier que tous les produits sont bien présents. Faites particulièrement attention à l'ajout de Démo |
|
L'affichage des ressources :Vérifier que le bouton Ressources fonctionne et que ses liens fonctionnent aussi
Vérifier également les options offertes :
|
|
Les liens externes :Vérifier que tous les liens en bas de page se dirigent bien sur les informations pertinentes |
|
Bouton d'accueil :Vérifier que le bouton Uniksim essaie, joue, apprends se dirige vers l'accueil des produits |
|
Vérifier que tous les options sont présents :Vérifier que les options sont actives pour un utilisateur régulier: Mes Simulations et Se déconnecter |
|
Changement de language :Vérifier que l'option de changement de langue fonctionne bien
Ceci devrait aussi garder la même langue après une déconnexion et un reconnexion |
|
SignOff :Vérifier que le bouton Se déconnecter se dirige bien vers la page d'accueil
Ceci devrait supprimer le token (dans LocalStorage) |
|
Page Mot de passe oublié :Vérifier que le changement de mot de passe fonctionne bien
*note: Un email valide sera requis |
|
SignIn :Vérifier que le bouton pour Se connecter à l'accueil du site se dirige bien à la page produit (Require: Courriel et Mot de pass)
Vérifier aussi les cas d'échecs
Ceci devrait créer un token (dans LocalStorage) |
|
SignIn (chenLogin) :Vérifier que l'ajout du lien chenLogin va directement dans une simulation
ceci requiert un compte i+ et de pouvoir avoir un moyen de copier le lien (Cependant si vous êtes assez rapide, vous pouvez récupérer le lien directement en copiant/collant le lien 🐻)
*uniquement la partie du code d'activation est intéressante
exemple de code d'activation: chenlogin?expiration=1749565644&isbn=N782765065364&userEmail=uniksim@gmail.com&userFirstName=Nicolas&userLastName=Babin&expirationLicence=2043-08-31&token=d29ca9f591d017fe4e9eba7c3de9318430603d7bee7e78022e1f0a77c1404a7f |
|
Les boutons de retour :Vérifier que tous les boutons de retour de la page d'accueil fonctionnent bel et bien |
|
Les cookies :Vérifier que les cookies (provenant de cookieYes) fonctionnent bel et bien |
|
Fonctionnalité - Cas d'utilisateur admin
Compte déjà existant
Courriel: comptetestadmin01@gmail.com
Mot de passe: E4Vx<52
Autre
Web (admin_user) | user : 31957
*note: Ce compte test uniquement le cas de Uqam
Le rôle de l'utilisateur :Vérifier que le rôle est affiché en bleu sur le nom de l'utilisateur |
|
Vérifier que tous les options sont présents :Vérifier que les options sont actives pour un utilisateur admin: Mes Simulations, Admin et Se déconnecter |
|
La page admin :Vérifier que seulement une partie de la page admin est affichée. Ceci inclus:
|
|
La page admin (filtre) :Vérifier que tous les filtres fonctionnes |
|
Changement de language :Vérifier que l'option de changement de langue fonctionne bien
Ceci devrait aussi garder la même langue après une déconnexion et un reconnexion |
|
Fonctionnalité - Cas d'utilisateur true admin
Le rôle de l'utilisateur :Vérifier que le rôle est affiché en orange sur le nom de l'utilisateur |
|
La désactivation de produit :Vérifier que la suppression de produit sous
Ceci devrait uniquement rendre le produit non actif |
|
La page admin :Vérifier que tous les options sont disponible. Cela inlus :
|
|
La page user :Vérifier que tous les informations sont présentés. Cela peut inclure :
Vérifier aussi les cas d'échecs (si possible)
*note: Il est nécessaire de tester ce cas sur plusieurs utilisateurs différents, car ils ont chacun des cas distincts
Requis: Brainlcloud |
|
La page user (Tous les teams étudiants) :Vérifier que l'élément est bien chargé après un clic
Vérifier aussi les cas d'échecs (si possible)
Requis: Brainlcloud |
|
La page user (Options) :Vérifier que le copySim fonctionne bien sur différents cas
Vérifier aussi les cas d'échecs (si possible)
Requis: Brainlcloud |
|
Jouer à la simulation :Vérifier que les simulations sont disponibles pour être lancées sur différentes Braincloud. Ceci inclus :
*note: Il n'est pas nécessaire d'approfondir l'utilisation du jeu. Juste pouvoir l'ouvrir est suffisant. |
|
La page commentaire :Vérifier que le filtre et les informations sont disponibles
Vérifier aussi les cas d'échecs (si possible)
Requis: Brainlcloud |
|
La page actives :Vérifier que le filtre et les informations sont disponibles
Vérifier aussi les cas d'échecs (si possible)
Requis: Brainlcloud |
|
La page paramètre :Vérifier l'ajout d'un nouveau code produit. (Préférablement un code professeur)
*Cela inclut l'activation du produit
*note: Chaque ajout de code de produit se fait immédiatement créer sur le SQL. Veuillez créer des codes avec modération pour ne pas surcharger le SQL de code produit.
|
|
Options de changement de serveur :Vérifier que le changement de serveur Braincloud se fait bien. Pour cela, il sera nécessaire de refaire toutes les étapes qui requièrent Brainlcloud
Ceci devrait créer un currentBraincloud (dans LocalStorage)
*note: Certaines données ne pourront pas être disponibles, puisque l'affichage de la liste est selon la base de données de Live |
|
Fonctionnalité - Cas d'utilisateur true admin (Unity)
Il faudra se connecter en tant qu'un utilisateur Alpha
Téléchargement Excel :Vérifier que le téléchargement d'Excel fonctionne bien
*note: Les données peuvent ne pas s'afficher directement. Activer les modifications |
|
Classement détaillé :Vérifier que l'onglet Classement détaillé fonctionne bien sur toutes les sélections
*note: Il serait nécessaire de vérifier sur plusieurs simulations si certaines données ne sont pas disponibles |
|
Téléchargement PDF :Vérifier que le téléchargement de PDF fonctionne bien
*note: Il serait recommandé de vérifier sur plusieurs pièces justificatives |
|
Compte test - Création de compte
Liste de tous les comptes créé pour tester la création de compte
|
|
Password |
| test1234@gmail.com | `J8,1r6f5z`\ |
| test123@gmail.com | |
| test546.uniksim@gmail.com | 9*H0wi}N5Mh9 |
| test123456@gmail.com | 9*H0wi}N5Mh9 |
| test12345@test.com | |
| ll.uniksim.test987@gmail.com | 8q7Z34sw3[]j |
| test555@test.com | @d*44V$"u:94 |
| fahira8491@2insp.com | vm9fuZvk5GML9aH3bbmT |
| UrsusTempMailToTest123456@account.xn--yaho-sqa.com | @testpasword |
Local database (PHPMyAdmin) - Conflict
Local database (PHPMyAdmin) - Conflict
- Si vous avez une erreur comme ci-dessous avec XAMPP, suivez les fixs de cette vidéo : https://www.youtube.com/watch?v=OEUVth2Av48 (Généralement, le dossier backup fix l'erreur "0:41")
- Si vous avez cette erreur en utilisant XAMPP :
- Faire une suppression de toute Cookies et de LocalStorage
- Si vous ne trouvez pas l'option drop database
- Suivre les méthode de ce lien : https://stackoverflow.com/questions/4410630/phpmyadmin-enable-drop-database-statement
- En bref: Ajouter
$cfg['AllowUserDropDatabase'] = true;dans phpMyAdmin(config.inc.php) sous XAMPP (Ceci se trouve dans Apache>Config)
- En bref: Ajouter
- Suivre les méthode de ce lien : https://stackoverflow.com/questions/4410630/phpmyadmin-enable-drop-database-statement
Build Unity en local
Note:
Avant de commencer, vérifiez que votre Unity est bien mis en place (aucun crash, aucune erreur, stable, etc.) puisque le Build prend du temps (en moyenne 5-7 minutes, dépendamment de l'ordinateur).
Ignorer cette étape si votre ordinateur fait partie des top 1 pour build 🚀
Unity:
- Avec les touches
CTRL + SHIFT + B, vous devez avoir les paramètres suivants sur Unity - Regarder la version de votre Unity dans le fichier
version.txt(situé à "Assets/Ressources/data/version.txt"). -
Changer la version du build dans la version locale du backend en web (Dans le fichier
constantsVariable.js).- Changer :
LOCAL_WEBGL_VERSION: {votre version}
- Changer :
-
Changer la version du build dans la version locale du database (Situé dans constants)
- Une fois le build de Unity terminé, mettre les fichiers du build dans le frontend (Dans le dossier
uniksimFrontEnd\src\assets\unity\Build)- Il est important que les fichiers soit les mêmes (Type et nom)
-
Il est aussi possible de modifier les fichiers du backend directement dans front, mais il n'est pas recommandé de le faire sachant qu'un build du frontend écrasera le build et que les versions seront erronées.
- Faire un build du frontend
- Tester 🥳
Erreurs courantes:
- Si vous avez :
-
Une des versions de votre build (en backend ou en database) ne correspond pas. Veuillez revoir les étapes 3 et 4.
-