Projet

Général

Profil

Abs2 » Historique » Version 5

Anonyme, 07/01/2009 10:48
Ajout des tables de la base (ébauche à travailler).

1 1
= Cahier des charges du module absences 2 =
2
3
 == Avant propos ==
4
5
Devant la nécessité de recoder le module absences, nous allons profiter de ce lieu pour établir un cahier des charges le plus complet possible. A cet effet, en fonction des discussions sur les différentes liste de diffusion de gepi, la synthèse sera mise à jour ici même. Tous ceux qui veulent participer à ces échanges sont les bienvenus.
6
7
 ==== Quelques principes pour le développement ====
8
9
 * Pour éviter de disperser les bonnes volontés, il serait bien qu'une version aboutie soit prète avant la fin de l'année scolaire 2008-2009 pour pouvoir tester en grandeur nature le module dans les établissements.
10 2
 * Le choix technologique a été porté sur un outil d'ORM récent et puissant : Propel ([http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3 Doc. officielle] et [wiki:propel traduction partielle]) est en test sinon un motif ActiveRecord adapté à la structure de Gepi fera l'affaire.
11 1
 * Le module portera le nom de mod_abs2 dont la structure est déjà présente sur le [browser:trunk/mod_abs2 trunk].
12
 * Il faudra que le code respecte quelques principes (conventions de nomage, DRY, POO).
13
 * Ce module devra être lié avec le nouveau module Disciplines de Stéphane Boireau ainsi qu'avec le module emploi du temps. Pour la saisie des absences, on utilisera les AID pour constituer des groupes d'élèves-professeurs-activité. Le module AID devra donc également être lié au module absences.
14
 * Tous les documents produits par Gepi devront être possibles sous plusieurs formats (html, [browser:trunk/class_php/odf.php open document], [browser:trunk/fpdf pdf], [browser:trunk/class_php/RSSFeed rss], csv).
15
 * 3 méthodes d'envoi devront être possibles (papier, courriel et sms).
16
17
 == Les fonctionnalités ==
18
19
 === La saisie ===
20
21
 * Chaque utilisateur devra pouvoir disposer de droits bien définis => un professeur ne peut saisir "absent" que des élèves qu'il a en cours par exemple.
22 3
  * => Les différents niveaux de saisie possible (indépendants du statut de l'utilisateur) :
23
   * l'utilisateur peut saisir seulement les élèves auxquels il est rattaché
24
   * l'utilisateur peut saisir tous les élèves de l'établissement
25
  * => Les "moments" possibles de la saisie
26
   * l'utilisateur peut saisir son niveau d'absence à n'importe quel moment de la journée
27
   * l'utilisateur peut saisir son niveau d'absence en respectant son emploi du temps seulement
28
  * => Que peut saisir l'utilisateur ?
29
   * l'utilisateur peut saisir les élèves absents seulement
30
   * l'utilisateur peut corriger une absence en retard
31
   * l'utilisateur peut saisir les élèves absents et ceux en retard
32 4
   * l'utilisateur peut saisir tous les types d'absence (absence, retard, dispense, inclusion, ...)
33 3
34
 * Il faudra prévoir d'utiliser les statuts personnalisés pour permettre à un administrateur de créer des utilisateurs avec des droits particuliers sur ses fonctionnalités.
35
36
37
 === Le traitement ===
38
39
  ==== Préambule ====
40
41
  * Seuls les personnels autorisés (CPE et statuts personnalisés qui auront ces droits) pourront accéder à cette partie du module
42
43 4
  ==== le traitement en lui même ====
44
 ''comme ça vient ;)''
45 3
46 4
 * Mettre un motif à une absence
47
 * Mettre un type à une absence
48
 * Lancer une action sur une absence
49
 * Allonger/Raccourcir une absence
50
 * Fusionner/regrouper des absences
51
 * Envoyer un courrier/mail/sms aux responsables (responsable 1, 2 ou un simple contact)
52
 * Suivre le retour de ces courriers
53
 * Avoir accès très rapidement sur la liste des absents à toutes les informations concernant l'élève absent (numéro de téléphone, adresse, bilan de ses absences,...)
54
 * Pouvoir faire des statistiques sur chaque classe, chaque élève, chaque type d'absence, en tenant compte du nombre de jour, de la discipline, du professeur, du régime.
55
   * Faire un lien fort avec le module discipline déjà existant sur le trunk
56
 * Lire le bilan de la saisie "fond de salle" dans un seul tableau en précisant le nombre d'absents total (avec également une distinction par régime)
57
 * Pouvoir faire des exports sous plusieurs formats (csv, xml, Excell/Calc.OOo, pdf).
58 3
59
60 4
61
62
63
64 1
 === La structure de la base ===
65 5
66
  ==== Modélisation ====
67
68
 Si des codeurs préfèrent modéliser (UML ?) avant de concevoir la base, n'hésitez pas à faire des propositions ??
69
70
  ==== Proposition de structure ====
71
72 1
'' ébauche à continuer et à finir en fonction des échanges ''
73 5
 -> table a_saisies :  ''PRIMARY KEY  (`id`)''[[BR]]
74 3
75
||`id`||int(11)||NOT NULL||auto_increment||-||
76
||`utilisateurs_id`||varchar(100)||NOT NULL||-||Utilisateurs::login||
77
||`eleves_id`||int(4)||NOT NULL||-||eleves::id_eleve||
78 1
||`date_saisie`||int(13)||NOT NULL||-||timestamp UNIX||
79
||`debut_abs`||int(12)||NOT NULL||-||timestamp UNIX||
80
||`fin_abs`||int(12)||NOT NULL||-||timestamp UNIX||
81 5
[[BR]]
82 4
83 5
 -> table a_traitements : ''PRIMARY KEY'' (`id`)[[BR]]
84 1
85 5
||`id`||int(11)||NOT NULL||auto_increment||-||
86
||`a_saisie_id`||varchar(250)||NOT NULL||-||a_saisies::id||
87
||`utilisateur_id`||int(13)||NOT NULL||-||utilisateurs::login||
88
||`created_on`||int(13)||NOT NULL||-||timestamp UNIX||
89
||`update_on`||int(13)||NOT NULL||-||timestamp UNIX||
90
||`a_type_id`||int(4)||NOT NULL||-||a_types::id||
91
||`a_motif_id`||int(4)||NOT NULL||-||a_motifs_id||
92
||`a_justification_id`||int(4)||NOT NULL||-||a_justications::id||
93
||`texte_justification`||varchar(250)||NOT NULL||-||-||
94
||`a_action_id`||int(4)||NOT NULL||-||a_actions::id||
95
[[BR]]
96 4
97 5
 -> table a_justifications : ''PRIMARY KEY'' (`id`)[[BR]]
98 1
99 5
||`id`||int(11)||NOT NULL||auto_increment||-||
100
||`nom`||varchar(100)||NOT NULL||-||-||
101
||`ordre`||int(3)||NOT NULL||-||-||
102
[[BR]]
103
104
 -> table a_motifs : ''PRIMARY KEY'' (`id`)[[BR]]
105
106
||`id`||int(11)||NOT NULL||auto_increment||-||
107
||`nom`||varchar(100)||NOT NULL||-||-||
108
||`ordre`||int(3)||NOT NULL||-||-||
109
[[BR]]
110
111
 -> table a_types : ''PRIMARY KEY'' (`id`)[[BR]]
112
113
||`id`||int(11)||NOT NULL||auto_increment||-||
114
||`nom`||varchar(100)||NOT NULL||-||-||
115
||`ordre`||int(3)||NOT NULL||-||-||
116
[[BR]]
117
118
 -> table a_actions : ''PRIMARY KEY'' (`id`)[[BR]]
119
120
||`id`||int(11)||NOT NULL||auto_increment||-||
121
||`nom`||varchar(100)||NOT NULL||-||-||
122
||`ordre`||int(3)||NOT NULL||-||-||
123
[[BR]]
124
125
 -> table a_creneaux : ''PRIMARY KEY'' (`id`)[[BR]]
126
127
||`id`||int(11)||NOT NULL||auto_increment||-||
128
||`nom`||varchar(100)||NOT NULL||-||-||
129
||`debut`||int(12)||NOT NULL||-||en nombre de secondes par rapport à 00:00:00||
130
||`fin`||int(12)||NOT NULL||-||en nombre de secondes par rapport à 00:00:00||
131
||`type`||varchar(100)||NOT NULL||-||'cours', 'pause', 'repas'||
132
||`jour`||varchar(100)||NOT NULL||default '9'||-||
133
[[BR]]
134
135
 -> table j_traitement_saisie
136
137
||`a_traitement_id`||int(11)||NOT NULL||-||a_traitements::id||
138
||`a_saisie_id`||int(11)||NOT NULL||-||a_saisies::id||
139
140
141
142
[[BR]]
143
[[BR]]
144
[[BR]]
145
[[BR]]
146 1
147
... @ suivre ...