Code source wiki de Accueil Hypercerts

Version 50.1 par Cédric Champmartin le 23/07/2020 - 13:58

Masquer les derniers auteurs
Matthieu Manginot 28.1 1
2
3 {{toc/}}
4
Cédric Champmartin 46.1 5 Vous cherchez à délivrer aux étudiants de votre université des attestations de réussite dématérialisées ? Hypercerts vous permettera de générer et envoyer des attestations officielles, numériques, et infalsifiables de façon automatique.
Benjamin Seclier 1.1 6
dufour18 39.1 7 Ces dernières pourront être envoyées par mail, déposées dans le nuage, et même être certifiées authentiques grâce à une blockchain dédiée.
Benjamin Seclier 1.1 8
dufour18 39.1 9 Une fois l'application connectée à Apogée et au LDAP, les gestionnaires de scolarité pourront demander la génération et l'envoi des attestations de réussite en un clic.
dufour18 4.1 10
dufour18 3.1 11 {{info}}
dufour18 44.1 12 La version 1.0.x est une première version limitée à l'envoi des attestations par email. Bien que le cœur de l'application soit fonctionnel, les dépôts de documents dans les coffres digisposte et la certification cryptographique sont en cours de développement actif.
dufour18 3.1 13 {{/info}}
Benjamin Seclier 1.1 14
Cédric Champmartin 49.1 15 == ==
16
17 {{confluence_children/}}
18
Matthieu Manginot 7.1 19 == Prérequis ==
dufour18 3.1 20
Cédric Champmartin 46.1 21 Hypercerts est une application Java qui se connecte à Apogée et au LDAP. Elle requiert l'utilisation d'une base MariaDB pour son fonctionnement interne. Elle se déploie sur des serveurs comme une application SpringBoot classique. Le WAR pourra être pris en charge par un tomcat et servir les utilisateur•ices via l'URL configurée.
dufour18 3.1 22
Cédric Champmartin 45.1 23 (% class="wrapped" %)
dufour18 2.1 24 |=(((
dufour18 3.1 25 Technologie
dufour18 2.1 26 )))|=(((
dufour18 3.1 27 Version
dufour18 2.1 28 )))
29 |(((
dufour18 3.1 30 JDK
dufour18 2.1 31 )))|(((
dufour18 3.1 32 11+
dufour18 2.1 33 )))
dufour18 3.1 34 |(% colspan="1" %)(((
35 SpringBoot
36 )))|(% colspan="1" %)(((
37 2.3
38 )))
39 |(% colspan="1" %)(((
40 Vaadin (Frontend)
41 )))|(% colspan="1" %)(((
42 14
43 )))
dufour18 2.1 44 |(((
dufour18 3.1 45 Tomcat
dufour18 2.1 46 )))|(((
dufour18 3.1 47 9+
48 )))
49 |(% colspan="1" %)(((
50 MariaDB
51 )))|(% colspan="1" %)(((
52 14+
53 )))
54 |(% colspan="1" %)(((
55 Maven
56 )))|(% colspan="1" %)(((
57 3.6+
58 )))
59 |(% colspan="1" %)(((
60 Connection Apogée
61 )))|(% colspan="1" %)(((
dufour18 2.1 62 \\
63 )))
dufour18 3.1 64 |(% colspan="1" %)(((
65 Connection Apogée via WS
66 )))|(% colspan="1" %)(((
dufour18 2.1 67 \\
dufour18 3.1 68 )))
69 |(% colspan="1" %)(((
70 Connection LDAP
71 )))|(% colspan="1" %)(((
dufour18 2.1 72 \\
73 )))
dufour18 3.1 74 |(% colspan="1" %)(((
75 Docker (optionnel)
76 )))|(% colspan="1" %)(((
77 docker-compose 3
78 )))
Benjamin Seclier 1.1 79
dufour18 4.1 80 == Téléchargement des sources ==
81
Cédric Champmartin 46.1 82 Les sources de l'application peuvent être téléchargées à [[cet endroit>>url:ftp://dufour18@download-sig.univ-lorraine.fr/public/hypercerts/hypercerts-1.0.2-SNAPSHOT.zip||shape="rect"]].
dufour18 4.1 83
Matthieu Manginot 27.1 84 == Installation d'Hypercerts ==
dufour18 2.1 85
Matthieu Manginot 26.1 86 === **Initialisation de la base** ===
dufour18 4.1 87
Matthieu Manginot 25.1 88 La base de données MariaDB/MySQL s'initialise avec la commande Flyway suivante :
Matthieu Manginot 23.1 89
Matthieu Manginot 25.1 90 {{code language="bash" theme="Eclipse"}}
91 mvn -Dflyway.configFiles=flyway.properties flyway:migrate
92 {{/code}}
Matthieu Manginot 19.1 93
Matthieu Manginot 25.1 94 Le fichier flyway.properties doit être créé à partir du fichier exemple flyway-sample.properties. Il contient les properties standard à Flyway.
95
96 {{code language="bash" theme="Eclipse" linenumbers="true" collapse="true"}}
97 # Flyway
98 # ConfigFiles : https://flywaydb.org/documentation/configfiles
99 # mvn -Dflyway.configFiles=xxx.properties flyway:migrate
100 flyway.url=jdbc:mariadb://localhost/hypercerts?serverTimezone=Europe/Paris
101 flyway.schemas=hypercerts
102 flyway.user=XXX
103 flyway.password=
104 # Emplacement des fichiers sql de migration
105 flyway.locations=classpath:db/migration
106 # baselineOnMigrate
107 flyway.baselineOnMigrate=false
108 {{/code}}
109
Matthieu Manginot 26.1 110 Au besoin, les fichiers sql de migration peuvent être trouvés sous //src/main/resources/db/migration//.
Matthieu Manginot 25.1 111
Matthieu Manginot 33.1 112 Pour remettre à zéro la base, lancer le script //src/main/resources/db/reset/reset.sql //puis exécuter à nouveau Flyway//.//
113
Cédric Champmartin 45.1 114 === Configuration de l'application ===
Matthieu Manginot 25.1 115
Matthieu Manginot 26.1 116 Créer et compléter un fichier **application.yaml** à la racine du projet sur le modèle de **application-sample.yaml**
117
Cédric Champmartin 47.1 118 Des indications sont présentes dans le fichier pour aider à sa configuration.
Matthieu Manginot 29.1 119
Cédric Champmartin 48.1 120 === **Éléments de configuration importants** ===
Matthieu Manginot 26.1 121
Matthieu Manginot 29.1 122 ==== Property (% style="letter-spacing: -0.003em;" %)//app.production//(%%) ====
Matthieu Manginot 26.1 123
Matthieu Manginot 19.1 124 Pour les tests, mettre **app.production** à false pour obtenir une année supplémentaire (N-2) pour la génération, ainsi des diplômes avec résultats seront plus facilement trouvables.
125
Cédric Champmartin 48.1 126 En étant à false, cette property autorise également l'interception de tous les mails applicatifs.
Matthieu Manginot 19.1 127
128 ==== **Envoi de mail** ====
129
Matthieu Manginot 15.1 130 (% style="color: rgb(0,51,102);" %)__**Sur votre environnement de test/développement**, pour empêcher l'envoi de mails de test en réel, il est conseillé :__
Matthieu Manginot 11.1 131
132 * d'utiliser un mail catcher ([[https:~~/~~/mailcatcher.me/>>url:https://mailcatcher.me/||shape="rect"]]) en remplacement de votre smtp
Cédric Champmartin 48.1 133 * ou de configurer l'application pour intercepter tous les mails applicatifs avec ces valeurs :
Matthieu Manginot 11.1 134 ** **app.production** à false
135 ** **spring.mail.intercept.active** à true
136 ** et **spring.mail.intercept.mails** contenant une ou plusieurs adresses de réception des mails
137
Cédric Champmartin 48.1 138 Enfin, la property **app.mails** sert à définir une ou plusieurs adresses permettant de recevoir les mails applicatifs. ⚠ Aujourd'hui, dans cette version tous les envois sont en copie de cette property. Elle peut être laissée vide.
Matthieu Manginot 31.1 139
Matthieu Manginot 20.1 140 ==== WebServices Apogée ====
141
Matthieu Manginot 36.1 142 Les WebServices Apogée sont appelés par l'intermédiaire d'une librairie UL.
Matthieu Manginot 20.1 143
Matthieu Manginot 36.1 144 Les properties différent du classique configUrlServices.properties de l'AMUE.
145
146 Des headers peuvent être ajoutés en paramètre de chaque WebService.
147
148 Exemple :
149
150 {{code language="bash" theme="Eclipse" linenumbers="true" collapse="true"}}
151 ws:
152 apogee:
153 administratif:
154 url: https://api.univ.fr/apo/amue_apo_administratif
155 headers:
156 # header1: value1
157 # header2: value2
158 username: xxxx
159 password: xxxx
160 {{/code}}
161
Matthieu Manginot 12.1 162 === Configurer et lancer le projet dans Eclipse ===
163
164 * Importer le projet Maven dans eclipse.
Matthieu Manginot 19.1 165 * Lorsque la configuration est terminée, démarrer l'application en faisant un clic droit sur {{code language="none"}}fr.univlorraine.hypercerts.Application.java{{/code}} et en choisissant 'Run As / Java Application'.
Matthieu Manginot 12.1 166
Matthieu Manginot 14.1 167 === Customisation des services ===
168
Matthieu Manginot 18.1 169 Plusieurs services sont personnalisables en fonction de votre environnement.
Matthieu Manginot 14.1 170
Matthieu Manginot 25.1 171 Sous //fr.univlorraine.hypercerts.apogee.service.customs// :
Matthieu Manginot 16.1 172
Matthieu Manginot 17.1 173 * ApogeeUserServiceCustomExample
Matthieu Manginot 18.1 174 ** Personnalisation de la récupération des adresses mails des utilisateurs Apogée à partir de l'uid LDAP
Matthieu Manginot 17.1 175 * BlocageServiceCustomExample
Matthieu Manginot 18.1 176 ** Personnalisation de la récupération des blocages/interdits à partir d'un code étudiant Apogée
Matthieu Manginot 17.1 177 * ComposanteServiceCustomExample
Matthieu Manginot 18.1 178 ** Personnalisation de la récupération :
179 *** de toutes les composantes
180 *** des composantes pour un utilisateur à partir de l'uid LDAP
181 *** du nombre de composantes pour un utilisateur à partir de l'uid LDAP
Matthieu Manginot 16.1 182
Matthieu Manginot 37.1 183 Pour personnaliser un de ces services :
Matthieu Manginot 21.1 184
Matthieu Manginot 37.1 185 1. Copier la classe en la renommant
Cédric Champmartin 48.1 186 1. Implémenter la ou les méthodes
187 11. Vous êtes libre de créer des repositories ou d'utiliser l'entityManager directement
Matthieu Manginot 37.1 188 1. (((
189 Dé-commenter les 2 annotations :1. (((
190 @Service
191 )))
192 1. (((
193 et @Override~*~*
194 )))
195 )))
Matthieu Manginot 38.1 196 1. Au démarrage de l'application
Cédric Champmartin 48.1 197 11. Une ligne "//Overriding XXX for YYY implementation//" doit apparaître dans les logs
Matthieu Manginot 37.1 198
199 Exemple :
200
Matthieu Manginot 38.1 201 {{code language="java" theme="Eclipse" linenumbers="true" collapse="true"}}
Matthieu Manginot 37.1 202 /**
203 * Override default ApogeeUserService implementation.
204 * >> README
205 * Décommenter l'annotation @Service pour que le service soit instancié et l'annotation @OverrideApogeeUserService pour que l'implémentation soit utilisée.
206 *
207 * @author Matthieu Manginot
208 */
209 @NoArgsConstructor
210 @Slf4j
211 @Service
212 @OverrideApogeeUserService
213 public class ApogeeUserServicePERSO implements IApogeeUserService {
214
215 @PersistenceContext(unitName = "apogeeEntityManagerFactory")
216 private EntityManager entityManagerApogee;
217
218 @PostConstruct
219 public void init() {
220 log.info("Overriding {} for IApogeeUserService implementation", getClass().getCanonicalName());
221 }
222
223 /**
224 * @see fr.univlorraine.hypercerts.apogee.services.IApogeeUserService#getEmail(java.lang.String)
225 */
226 @Override
227 public String getEmail(final String uidLdap) {
228 /* Implémentation personnalisée de getEmail. entityManagerApogee.createNativeQuery... */
229 return "mail@univ.fr";
230 }
231 }
232 {{/code}}
233
Matthieu Manginot 38.1 234 ===
235 Customisation de Digiposte ===
Matthieu Manginot 17.1 236
237 //Documentation à venir.//
238
Matthieu Manginot 12.1 239 === Tâches Maven ===
240
241 * Lancer l'application (hors d'un IDE) :
242
243 {{code language="bash" theme="Eclipse"}}
244 mvn spring-boot:run
245 {{/code}}
246
247 * Lancer les tests :
248
249 {{code language="bash" theme="Eclipse"}}
250 mvn verify
251 {{/code}}
252
253 * Créer le package pour production :
254
255 {{code language="bash" theme="Eclipse"}}
256 mvn clean package -Pproduction
257 {{/code}}
258
Matthieu Manginot 13.1 259 === Makefile ===
260
261 Un Makefile est également disponible. A la racine, utilisez `make help` pour obtenir les commandes disponibles.
262
Matthieu Manginot 14.1 263 == Tests unitaires ==
dufour18 4.1 264
Matthieu Manginot 40.1 265 Pour s'assurez que les résultats d'admission de vos étudiants soient bien correctes, et afin d'éviter les faux positifs (donc envoyer une attestation de réussite à un•e étudiant•e non reçu•e aux examens), vous pouvez ajouter vos jeux de données.
dufour18 4.1 266
Matthieu Manginot 41.1 267 Les tests utilisent 3 classes:
Matthieu Manginot 14.1 268
Matthieu Manginot 40.1 269 (% style="list-style-type: square;" %)
270 * ResultatsTests.java
Matthieu Manginot 41.1 271 * ResultatsTestCase.java
272 * ResultatsServiceTest.java
Matthieu Manginot 40.1 273
dufour18 42.1 274 ResultatTests.java énumère tous les tests. Il utilise l'objet ResultatTestCase dans lequel on précise:
Matthieu Manginot 41.1 275
dufour18 42.1 276 (% style="list-style-type: square;" %)
277 * Le codEtu
278 * L'année
279 * Le diplôme
280 * La VDI
281 * Le résultat attendu (le test réussi si c'est ce résultat qui est trouvé)
282
283 ResultatServiceTest.java est responsable du lancement des tests JUnit
284
dufour18 43.1 285 Ainsi, pour créer vos tests, ajoutez votre jeu de données dans ResultatTests, avec des résultats d'admissions réputés corrects et utilisez ResultatServiceTest pour tester les cas consécutivement.
286
Matthieu Manginot 30.1 287 == Utilisation d'Hypercerts ==
288
Cédric Champmartin 45.1 289 (% class="relative-table wrapped" style="width: 100.0%;" %)
Matthieu Manginot 34.1 290 |=(((
291 Vue
292 )))|=(((
293 Utilisation
294 )))
295 |(((
296 (% class="content-wrapper" %)
297 (((
dufour18 43.1 298 [[image:attach:1-Accueil.png||height="400"]]
Matthieu Manginot 34.1 299 )))
300 )))|(((
Matthieu Manginot 36.1 301 (% class="content-wrapper" %)
302 (((
dufour18 39.1 303 En tant que gestionnaire de scolarité ou super admin, rendez vous sur l'application.
Matthieu Manginot 33.1 304
dufour18 39.1 305 Une fois le CAS passé, vous atteignez la page d'accueil de l'application. Vous y retrouvez les composantes dans lesquelles vous pourrez faire des demandes de génération en envoi d'attestations dématérialisées. Pour les gestionnaires, celles-ci correspondent à vos droits Apogée. Les super admins ont eux accès à toutes les composantes.
Matthieu Manginot 36.1 306
Matthieu Manginot 38.1 307 Dans le panneau de gauche, vous retrouvez une série d'onglets. Ceux-ci sont disposés de haut en bas, dans l'ordre de leur utilisation.
Matthieu Manginot 34.1 308 )))
Matthieu Manginot 36.1 309 )))
Matthieu Manginot 34.1 310 |(((
Matthieu Manginot 36.1 311 (% class="content-wrapper" %)
312 (((
dufour18 43.1 313 [[image:attach:2-Génération.png||height="400"]]
Matthieu Manginot 36.1 314 )))
Matthieu Manginot 34.1 315 )))|(((
dufour18 39.1 316 Pour lancer la génération d'attestations de réussite pour un diplôme (créer une campagne de dématérialisation) choisissez:
317
318 (% style="list-style-type: square;" %)
319 * L'année académique
320 * La composante
321 * Le diplôme (les résultats proposés correspondent à la composante sélectionnée)
322
323 L'application retrouve les promotions d'étudiant.es et récapitule les informations avant le lancement des demandes.
324
325 Vous pouvez utiliser le bouton visualiser un specimen d'attestation pour valider visuellement le rendu des attestations qui vont être générées.
326
327 Veillez à ce que le libelle du diplôme soit bien celui que vous attendez.
328
Matthieu Manginot 34.1 329 \\
dufour18 39.1 330
331 * //Le bouton avec les flèches en rond permet de forcer une nouvelle recherche//
332 * //Le bouton gomme permet d'effacer les paramètres//
Matthieu Manginot 34.1 333 )))
334 |(((
Matthieu Manginot 36.1 335 (% class="content-wrapper" %)
336 (((
dufour18 44.1 337 **Avant la fin du traitement automatique**
338
dufour18 43.1 339 [[image:attach:3-diplomes.png||height="400"]]
Matthieu Manginot 36.1 340 )))
dufour18 39.1 341 )))|(% rowspan="2" %)(((
342 Une fois vos demandes faites, vous retrouvez leur avancement dans la vue "Diplômes"
343
344 Après que le traitement des demandes soit fait, les diplômes passent dans la section 'Terminés'
345
346 On y retrouve des informations relatives à la génération et distribution des attestations.
347
348 Le même rapport a été envoyé par email au gestionnaire qui à fait la demande.
Matthieu Manginot 34.1 349 )))
350 |(((
Matthieu Manginot 36.1 351 (% class="content-wrapper" %)
352 (((
dufour18 44.1 353 **Après le traitement automatique**
354
dufour18 43.1 355 [[image:attach:3-2.png||height="400"]]
Matthieu Manginot 36.1 356 )))
Matthieu Manginot 34.1 357 )))
Matthieu Manginot 36.1 358 |(% colspan="1" %)(((
359 (% class="content-wrapper" %)
360 (((
dufour18 43.1 361 === [[image:attach:4-etudiants.png||height="400"]] ===
Matthieu Manginot 36.1 362 )))
363 )))|(% colspan="1" %)(((
Cédric Champmartin 48.1 364 Si on cherche à vérifier comment s'est déroulée la génération et distribution d'une attestation pour un•e étudiant•e, on peut utiliser la vue "Étudiants".
dufour18 39.1 365
Matthieu Manginot 36.1 366 \\
dufour18 39.1 367
368 On peut utiliser le codEtu ou recherche par nom / prénom.
369
370 \\
371
Cédric Champmartin 48.1 372 On retrouve toutes les années pour lesquelles l'un•e étudiant•e a été traitée. Pour chaque année sont précisés les diplômes, et pour chaque diplôme on retrouve le rapport des étapes dans l'ordre chronologique.
dufour18 39.1 373
374 Si une erreur est survenue, la raison sera précisée ici.
375
376 \\
377
378 Il est aussi possible de télécharger l'attestation avec le bouton "Télécharger l'attestation"
Matthieu Manginot 36.1 379 )))
Matthieu Manginot 30.1 380
Matthieu Manginot 40.1 381 == Administration ==
dufour18 4.1 382
dufour18 44.1 383 Les super admins ont accès à des vues supplémentaires. Des onglets pour ces dernières apparaissent dans le panneau de gauche.
384
385 [[image:attach:image2020-7-23_12-41-56.png||align="center" height="400"]]
386
Matthieu Manginot 41.1 387 === Connexions ===
388
dufour18 44.1 389 \\
Matthieu Manginot 40.1 390
Cédric Champmartin 45.1 391 (% class="wrapped" %)
dufour18 44.1 392 |=(((
393 Vue
394 )))|=(((
395 Utilisation
396 )))
397 |(% colspan="1" %)(((
398 (% class="content-wrapper" %)
399 (((
400 [[image:attach:image2020-7-23_12-45-23.png||height="400"]]
401 )))
402 )))|(% colspan="1" %)(((
403 Cette vue donne accès à la liste des utilisateurs connectés, leur IP, ainsi que la page qu'ils consultent.
404
405 Un superadmin peut aussi demander à prendre le rôle d'un autre utilisateur en saisissant sont identifiant LDAP.
406
407 Pour retrouver son profil de super admin, cliquer sur l'avatar en haut à droite, puis cliquer sur "Rétablir utilisateur"
408 )))
409
410 \\
411
Matthieu Manginot 41.1 412 === Gestion ===
413
dufour18 44.1 414 \\
Matthieu Manginot 41.1 415
Cédric Champmartin 45.1 416 (% class="wrapped" %)
dufour18 44.1 417 |=(((
418 Vue
419 )))|=(((
420 Utilisation
421 )))
422 |(((
423 (% class="content-wrapper" %)
424 (((
425 [[image:attach:image2020-7-23_12-51-28.png||height="400"]]
426 )))
427 )))|(((
428 Cette vue permet de lancer les tâches qui s’exécutent automatiquement de façon manuelle.
429
Cédric Champmartin 48.1 430 Trigger CRON jobs permet de lancer toutes les tâches de dématérialisation jusqu'à ce qu'elles aboutissent toutes.
dufour18 44.1 431
432 On peut aussi utiliser des boutons pour lancer plus finement des tâches.
433
434 À noter que si l'application n'est pas configurée pour utiliser Digiposte, les boutons sous Digiposte n'auront pas d'effet.
435 )))
436
Matthieu Manginot 34.1 437 \\
438
dufour18 44.1 439 \\
440
Benjamin Seclier 1.1 441 {{section}}
442 {{column width="60%"}}
443 {{recently-updated/}}
444 {{/column}}
445
dufour18 2.1 446 {{column width="5%"}}
447 \\
448 {{/column}}
Benjamin Seclier 1.1 449
450 {{column width="35%"}}
451 ====== Navigate space ======
452
453 {{locationSearch reference="WebHome"/}}
454
455 {{pagetree/}}
456 {{/column}}
457 {{/section}}
Matthieu Manginot 37.1 458
459 {{code language="java" theme="Eclipse" linenumbers="true" collapse="true"}}
460 ws:
461 apogee:
462 administratif:
463 url: https://api.univ.fr/apo/amue_apo_administratif
464 headers:
465 # header1: value1
466 # header2: value2
467 username: xxxx
468 password: xxxx
469 {{/code}}