Envoi des sujets par AMC (Bug #713)


Added by Gérard Carpeaux 5 months ago. Updated 4 months ago.


Status:Feedback Start date:03/15/2020
Priority:Normal Due date:
Assignee:- % Done:

0%

Category:-
Target version:1.5.0

Description

Bonjour,
avec cette situation de confinement, je relance mon idée d'envoi des sujets par AMC de façon automatique comme pour les corrections.


AMC-DEBUG-i8lrlaBp.log (19.4 kB) Joël Brogniart, 03/31/2020 02:38 pm

etudiants.csv (511 Bytes) Joël Brogniart, 03/31/2020 03:52 pm

source.txt (5.6 kB) Joël Brogniart, 03/31/2020 03:52 pm

AMC-DEBUG-WpCBtBB7.log (66.4 kB) Gérard Carpeaux, 04/02/2020 10:00 am

original-pdf.png (57 kB) Joël Brogniart, 04/02/2020 02:50 pm

reconnaissance.png (50.2 kB) Joël Brogniart, 04/02/2020 02:50 pm

AMC-DEBUG-tshpXS_K.log (68 kB) Joël Brogniart, 04/02/2020 02:50 pm

pollux.adjara-pdfformfields-data.txt (7.6 kB) Joël Brogniart, 04/07/2020 11:16 am

pdfformfields.c.patch (917 Bytes) Joël Brogniart, 04/07/2020 01:03 pm


Related issues

duplicates Feature #711: Emailing tests to solve @home Feedback 03/10/2020

History

Updated by Alexis Bienvenüe 4 months ago

Cette fonctionnalité vient de faire son entrée dans la version de développement (git:3a26f34c654 ou 1.4.0+git2020-03-29-1 sur launchpad) : à vos tests !
Vous devez utiliser la pré-association et imprimer le sujet dans des fichiers avant de pouvoir envoyer ces fichiers aux étudiants dont les adresses électroniques sont indiquées dans le fichier CSV contenant la liste des étudiants.

  • Category deleted (Graphical Interface)
  • Status changed from New to Feedback
  • Priority changed from Urgent to Normal

Updated by Gérard Carpeaux 4 months ago

Merci.

Updated by Joël Brogniart 4 months ago

Est-ce que cette option est accessible avec des fichiers au format AMC-TXT ?

Updated by Alexis Bienvenüe 4 months ago

Est-ce que cette option est accessible avec des fichiers au format AMC-TXT ?

Pas pour l'instant car cela ne marche qu'avec la pré-association.

Updated by Alexis Bienvenüe 4 months ago

Est-ce que cette option est accessible avec des fichiers au format AMC-TXT ?

Ça devrait marcher avec la version git:8015fff0d22640 / 1.4.0+git2020-03-30-1
Fichier CSV liste.csv dans le répertoire projet :

nom,prenom,id,email
Avogadro,Amedeo,1776,aa@example.com
Bohr,Niels,1885,nb@example.com
Copernic,Nicolas,1473,nc@example.com
Einstein,Albert,1879,ae@example.com

Options AMC-TXT :
PreAssociation: liste.csv
PreAssociationKey: id
PreAssociationName: \prenom{} \nom{}

Updated by Gérard Carpeaux 4 months ago

Je viens de finir la doc pour latex (pas encore alsocorrect et keepas)
Je vais ajouter les options pour AMC-txt et tester dès la mise à jour du ppa.

Updated by Joël Brogniart 4 months ago

Est-ce que cette option est accessible avec des fichiers au format AMC-TXT ?

Alexis Bienvenüe wrote:

Ça devrait marcher avec la version git:8015fff0d22640 / 1.4.0+git2020-03-30-1
[...]

Wouaou, impressionnant. Après avoir lu la doc, et les exemples latex, je me suis dit que ça serait peut-être compliqué d'ajouter ça pour le format AMC-TXT. C'était déjà bien d'avoir cette fonctionnalité avec Latex. Bravo et merci pour le boulot. Je vais tester ça.

Updated by Joël Brogniart 4 months ago

J'ai un petit problème. Avec les données indiquées et le nombre de copies mis à 4.

Lorsque je fais la mise à jour des documents, quand je regarde le document "Correction individuelle" j'ai des trucs bizzares.

- J'ai 4 exemplaires du sujet pour le premier étudiant, 4 pour le suivant… Le chiffre x indiqué dans le nombre de copies génère x sujets par étudiant du fichier csv.

- Pour chacun des 4 exemplaires, le nom de l'étudiant est bien indiqué dans la case du nom de la page Réponse, mais les cases du numéro de l'étudiant ne sont pas cochées.

Remarques complémentaires.

- Le fichier indiqué avec PreAssociation dans le source AMC-TXT doit être à nouveau sélectionné dans la zone "Imprimer" avec le bouton "List…" (d'ailleurs "List" est en anglais.

- Il serait bien qu'il y ait aussi une option PreAssociationEmail pour indiquer le nom du champ contenant l'adresse électronique.

Updated by Alexis Bienvenüe 4 months ago

En pré-association, il faut laisser le nombre de copies a zéro.

Updated by Alexis Bienvenüe 4 months ago

mais les cases du numéro de l'étudiant ne sont pas cochées.

Et ne pas utiliser de codage du numéro d'étudiant (par ailleurs c'est inutile car les copies sont déjà associées).

Remarques complémentaires.
Le fichier indiqué avec PreAssociation dans le source AMC-TXT doit être à nouveau sélectionné dans la zone "Imprimer" avec le bouton "List…"

Oui c'est pertinent : j'essayerai d'y penser prochainement.

Il serait bien qu'il y ait aussi une option PreAssociationEmail pour indiquer le nom du champ contenant l'adresse électronique.

Moins utile à mon avis, car la bonne colonne est choisie automatiquement en général

Updated by Gérard Carpeaux 4 months ago

En pré-association, il faut laisser le nombre de copies a zéro.

Je vais rajouter cette remarque.

Et ne pas utiliser de codage du numéro d'étudiant

Vous parlez de AMCcode ?

" (d'ailleurs "List" est en anglais.

les fichiers pot et fr.po ne sont pas à jour.
Le faîtes-vous Alexis ?

Updated by Alexis Bienvenüe 4 months ago

Vous parlez de AMCcode ?

Oui c'est ça.

les fichiers pot et fr.po ne sont pas à jour.
Le faîtes-vous Alexis ?

Je vais m'en occuper en effet.

Updated by Joël Brogniart 4 months ago

Avec le nombre de copies à zéro, j'ai bien un exemplaire par étudiant.

Autre petit soucis.
Après avoir effectué la mise à jour des documents et calculé la mise en page, lorsque je clique sur "Imprimer des copies", sélectionne toutes les copies et clique sur "Valider" j'ai droit au message "Vous n'avez sélectionné que quelques copies à imprimer. Allez vous photocopier…" alors que j'ai bien sélectionné toutes les copies. Peut-être une comparaison du nombre de copies sélectionnées avec le zéro du nombre de copies indiqué plus haut. Peut-être faudrait-il qu'après l'appui sur le bouton "Mettre à jour les documents", un champ "Nombre d'étudiants" apparaissent avec le nombre d'étudiants du fichier CSV (pas le top au niveau interface). Et ensuite la comparaison du nombre de copies sélectionnées pour l'impression se fasse avec ce nombre d'étudiants.

Updated by Alexis Bienvenüe 4 months ago

Peut-être une comparaison du nombre de copies sélectionnées avec le zéro du nombre de copies indiqué plus haut.

C'est juste une comparaison avec 10. Si vous avez plus de 10 étudiants, il n'y aura pas cet avertissement.
Il faut que j'adapte quand le nombre de copies est faible, pour éviter cet effet déstabilisant.

Updated by Joël Brogniart 4 months ago

Encore un petit soucis.

Ma liste d'étudiants contient 10 étudiants. AMC a bien généré 10 fichiers, mais l'envoi du courrier n'envoie que vers 9 étudiants. On dirait que le dernier est oublié.

Updated by Alexis Bienvenüe 4 months ago

Et son message après l'envoi, c'est "10 messages envoyés", ou 9 ? Fichier log en mode débogage ?

Updated by Joël Brogniart 4 months ago

Le message après l'envoi est "9 messages envoyés.". Et voici le journal correspondant à un envoi.

Updated by Alexis Bienvenüe 4 months ago

Est-ce qu'il y avait bien 10 lignes dans la fenêtre du choix des sujets à envoyer, avec des adresses électroniques, et est-ce que vous en avez bien sélectionné 10 ?

Updated by Joël Brogniart 4 months ago

Oui et oui. En lisant le journal, j'ai l'impression que le problème provient du fichier des IDs généré.

[  20803,   0.21] provided IDS:
[  20803,   0.21] [2060321]
[  20803,   0.21] [2040654]
[  20803,   0.21] [2050963]
[  20803,   0.21] [2080852]
[  20803,   0.22] [2020456]
[  20803,   0.22] [2050147]
[  20803,   0.22] [2010789]
[  20803,   0.22] [2030369]
[  20803,   0.22] [2040741]
[  20803,   0.22] Create progression pipe for <mailing> up to 1

Il en manque un. Je pensais qu'il y avait un problème avec l'adresse du dernier étudiant et j'ai inversé les deux dernières lignes pour vérifier, mais c'est toujours le dernier qui n'est pas envoyé. J'essaie de fouiller le code aussi pour voir quand est généré ce fichier.

Updated by Joël Brogniart 4 months ago

La source du problème a l'air d'avoir lieu à l'étape "Calculer les mises en pages". Avant cette étape, dans la base data/layout.sqlite, les tables layout_association et layout_namefield sont vides mais après le calcul, la table layout_association ne contient que 9 entrées et la table layout_namefield contient 10 entrée.

Updated by Alexis Bienvenüe 4 months ago

Pouvez-vous poster le fichier source et le fichier de noms que vous utilisez ?

Updated by Joël Brogniart 4 months ago

Updated by Joël Brogniart 4 months ago

Joël Brogniart wrote:

La source du problème a l'air d'avoir lieu à l'étape "Calculer les mises en pages". Avant cette étape, dans la base data/layout.sqlite, les tables layout_association et layout_namefield sont vides mais après le calcul, la table layout_association ne contient que 9 entrées et la table layout_namefield contient 10 entrée.

En fait c'est avant. dans la phase prépare (appui sur le bouton "Mettre à jour les documents". Dans cette phase est généré le document "DOC-calage.xy" (qui sert à rempli la base ultérieurement). Dans ce document, ne sont présents que les 9 premiers numéros d'étudiants;

Updated by Gérard Carpeaux 4 months ago

Est-il possible de paramétrer AMC pour que le dossier d'impression soit le dossier courant ?
Merci

Updated by Alexis Bienvenüe 4 months ago

En fait c'est avant. dans la phase prépare

Oui en effet. Cela va être corrigé dans la prochaine version en cours de préparation.

Updated by Joël Brogniart 4 months ago

Ouf, parce que là j'étais perdu dans les méandres d'amc.sty, des macro latex… J'allais attaquer le cvsreader. J'approchais petit à petit mais c'était laborieux.

Updated by Gérard Carpeaux 4 months ago

\begin{macro}{\AMCstudentslistfile}
%   You can also pass AMC the path to the CSV file with students, and
%   the unique key that can be used, with
%   |\AMCstudentslistfile|\marg{path}\marg{key}.

Est-ce que c'est à documenter ou un code « invisible » pour l’utilisateur ?

Updated by Alexis Bienvenüe 4 months ago

Est-ce que c'est à documenter ou un code « invisible » pour l’utilisateur ?

Ce n'est pas très intéressant à documenter à mon avis. Je l'utilise pour le cas particulier AMC-TXT, mais autrement ça n'apporte pas forcément grand chose d'entrer les informations avec cette commande plutôt que dans l'interface.

Updated by Gérard Carpeaux 4 months ago

D'accord.

Ce que j'ai envoyé doit être caduque

En pré-association, il faut laisser le nombre de copies a zéro.

Sur le code, je crois comprendre que vous forcez à mettre 0 dans la GUI en AMC-txt

Le fichier indiqué avec PreAssociation dans le source AMC-TXT doit être à nouveau sélectionné dans la zone "Imprimer" avec le bouton "List…"

Pareil, j'avais noté la démarche.

J'attends le upload sur le PPA pour vérifier et modifier si besoin.

Updated by Alexis Bienvenüe 4 months ago

En effet, suite au retours, j'ai essayé d'améliorer l'utilisation.

Sur le code, je crois comprendre que vous forcez à mettre 0 dans la GUI en AMC-txt

Oui

Pareil, j'avais noté la démarche.

Maintenant la transmission est automatique effectivement.

Updated by Gérard Carpeaux 4 months ago

Bonjour,
la nouvelle version présente un bug important pour le mode prérempli avec AMC-txt.
Le logiciel ne détecte pas du premier coup l'identifiant.
Une vidéo https://www.swisstransfer.com/d/c4ecfe88-3a3f-4a7d-aedc-dde5e922d69b et le log joint.
Je vais tester en mode latex.

Updated by Gérard Carpeaux 4 months ago

avec latex cela fonctionne.

Updated by Alexis Bienvenüe 4 months ago

la nouvelle version présente un bug important pour le mode prérempli avec AMC-txt.

Merci pour ce retour. Pouvez-vous essayer en intégrant la modification suivante ?
https://gitlab.com/jojo_boulix/auto-multiple-choice/-/commit/f6680c98c04fb3ac06f6a98061a5153d215acaee

Updated by Joël Brogniart 4 months ago

Pour moi, avec la dernière version, tous les courriers sont envoyés et en plus ils sont tous arrivés. Merci beaucoup.

Updated by Joël Brogniart 4 months ago

Euh, une petite question. Est-ce que les PDF générés sont censés avoir des cases cliquables ?

Updated by Alexis Bienvenüe 4 months ago

Est-ce que les PDF générés sont censés avoir des cases cliquables ?

Si vous utilisez l'option pdfform, ce devrait être le cas.

Updated by Gérard Carpeaux 4 months ago

  • Alexis : ça fonctionne
  • Joël : il faut utiliser PackageOptions:pdfform

Updated by Joël Brogniart 4 months ago

Ça marche mieux avec PackageOptions !

Les copies partent bien par courrier et arrivent chez le destinataire. Le destinataire peut les remplir et le renvoyer.

Par contre j'ai l'impression qu'il y a petit problème à la reconnaissance. Les copies sont bien identifiées, mais on dirait que la réponse à la première question de chaque page n'est pas reconnue (voir image de l'original et de la copie affichée lorsque clique sur le bouton "Manuelle".

En fait c'est plus compliqué que ça. Des fois la case cochée est reconnue. Je joins le journal de la reconnaissance automatique.

Updated by Joël Brogniart 4 months ago

J'ai mis le dossier du projet avec les originaux des réponses sur Firefox send (disponible 1 jour pour 1 seul téléchargement) au cas où.

Lien : https://send.firefox.com/download/1c334708a075fed7/#NMm-R9GTjHQS-UJrS5F8Jg

Updated by Gérard Carpeaux 4 months ago

L'avertissement dont parlait Joël a complètement disparu. Est-ce normal ?

Updated by Joël Brogniart 4 months ago

Bon, j'ai fouillé un peu plus dans les résultats bizarres lors de la reconnaissance.

Si je prends le premier sujet rempli.

Cases cochée sur le sujet (entre parenthèse, le numéro de la question et le numéro de la réponse dans le fichier source) :
Page 1, question 1, réponse 1 (phys10, 2) - non reconnue
Page 1, question 2, réponse 2 (phys02, 3) - reconnue
Page 1, question 3, réponse 3 (phys03, 2) - reconnue
Page 1, question 4, réponse 4 (phys08, 4) - reconnue
Page 2, question 5, réponse 1 (phys06, 3) - non reconnue
Page 2, question 6, réponse 2 (phys04, 3) - reconnue
Page 2, question 7, réponse 3 (phys09, 2) - reconnue
Page 2, question 8, réponse 4 (phys01, 4) - reconnue
Page 2, question 9, réponse 1 (phys05, 3) - reconnue
Page 2, question 10, réponse 2 (phys07, 2) - reconnue
Page 2, question 11, réponse 3 (cata10, 2) - reconnue
Page 3, question 12, aucune réponse (cata09, ) - reconnue
Page 3, question 13, réponse 1 (cata04, 2) - reconnue
Page 3, question 14, réponse 2 (cata03, 2) - reconnue
Page 3, question 15, réponse 3 (cata05, 1) - reconnue
Page 3, question 16, réponse 1 (cata01, 2) - reconnue
Page 3, question 17, réponse 2 (cata06, 1) - reconnue
Page 3, question 18, réponse 3 (cata02, 1) - reconnue
Page 3, question 19, réponse 1 (cata07, 1) - reconnue
Page 3, question 20, réponse 2 (cata08, 3) - reconnue

Je ne vois pas ce qui peut provoquer la non reconnaissance pour 2 des questions.

Pour aller un peu plus loin j'ai utilisé le script perl suivant pour rechercher les données de formulaire dans les fichiers pdf.

use strict;
use warnings;
use Data::Dump 'pp';
use CAM::PDF;

#my $pdf_path = 'copie-0001.pdf';
my $pdf_path = 'sujet-rempli.pdf';
my $pdf = CAM::PDF->new($pdf_path);

my @formfields = $pdf->getFormFieldList();
foreach (@formfields){
  my $obj = $pdf->getFormField($_);
  #pp $obj;
  printf "%s = %s\n",$_,$obj->{value}{value}{V}{value};
}

Quand j'utilise le script sur le premier sujet rempli, j'obtiens des lignes de données de la forme

1:case:phys10:1,2 = Off

Il y a 700 lignes dans le fichier résultat. Toutes les lignes commençant par le chiffre 1 (les 20 premières) contiennent correctement "= Yes" lorsque la case est cochée. Donc apparemment les données sur les cases cochées sont bien inclues dans le sujet qui a été saisi par l'étudiant. Par contre je ne sais pas à quoi correspondent les 680 lignes supplémentaires qui apparaissent dans le résultat. Lorsque j'utilise le script sur le fichier généré par AMC (avant remplissage), j'obtiens aussi 700 lignes mais toutes avec "= Off".

Updated by Joël Brogniart 4 months ago

Apparemment le problème est, au moins en partie, dans le code de pdfformfields.c.

Si j'applique l'utilitaire au fichier du sujet 1, j'obtiens le résultat du fichier joint (pollux.adjara-pdfformfields-data.txt). Dans ce fichier, il manque le séparateur "---" à deux endroit et la première des deux questions qui ne sont pas séparées est ignorée.

Lignes 90 à 101

---
FieldType: Button
FieldName: 1:case:phys10:1,2
FieldValue: Yes
FieldStateOption: Off
FieldStateOption: Yes
FieldType: Button
FieldName: 1:case:cata10:11,2
FieldValue: Yes
FieldStateOption: Off
FieldStateOption: Yes
---

Lignes 251 à 262

---
FieldType: Button
FieldName: 1:case:phys06:5,3
FieldValue: Yes
FieldStateOption: Off
FieldStateOption: Yes
FieldType: Button
FieldName: 1:case:cata08:20,1
FieldValue: Off
FieldStateOption: Off
FieldStateOption: Yes
---

Updated by Joël Brogniart 4 months ago

J'ai trouvé.

Le problème est bien dans pdfformfields.c. Le séparateur de questions n'était pas imprimé après la dernière entrée de formulaire d'une page (qui correspond à la première case de la première question de la page). Du coup cette case n'était pas prise en compte dans AMC-read-pdfform.pl. Cette case était donc toujours considérée comme non cochée.

J'ai testé une modification de pdfformfields.c avec les données de mon projet de test et tout est rentré en ordre. Toutes les cases des formulaires sont correctement reconnues.

Je joins le patch @@ avec mes modifications.

Updated by Alexis Bienvenüe 4 months ago

Patch intégré dans la modification git:8b05a15f : merci !

Updated by Joël Brogniart 4 months ago

Youpie !

Merci à vous, je me suis planté quand j'ai tenté de faire un merge request et j'ai dû l'annuler.

Also available in: Atom PDF