Code source wiki de Accueil Hypercerts

Version 48.1 par Cédric Champmartin le 23/07/2020 - 13:45

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