Cette page présente ma proposition de version 0. -- JeanChristopheAndré
Sommaire
Introduction
Ma vision des choses :
- le logiciel doit comprendre un noyau dur et des extensions
le noyau dur doit consister en ce qui est indispensable, commun à toutes les situations
les extensions consistant alors en ce qui peut être utile d'ajouter, suivant le contexte
- les extensions doivent donc être modulaires, configurables et pouvoir être (dés)activées, selon les besoins
toutes les informations doivent être dans une unique base de données, source pour tout le reste
Partant de là on peut détailler :
- le noyau dur :
on veut gérer des usagers, il faut donc une base de données pour les enregistrer
on veut confier cette gestion à des non-techniciens, il faut donc une interface web
on veut pouvoir étendre les fonctionnalités, il faut donc définir une API
on veut pouvoir retrouver les traces des opérations, il faut donc une journalisation
les extensions indispensables :
on veut pouvoir générer une base d'authentification MySQL (avec libnss-mysql-bg)
on veut pouvoir générer une base d'authentification Samba (dans MySQL ou des fichiers, via pdbedit)
on veut pouvoir générer une base d'adéls pour postfix (dans MySQL ou des fichiers)
on veut pouvoir générer une base de boîtes aux lettres pour dovecot (dans MySQL ou des fichiers)
les extensions souhaitées :
on souhaiterait pouvoir générer une base d'authentification NIS (dans /etc/passwd, /etc/shadow et /etc/group)
on souhaiterait pouvoir générer une base de boîtes aux lettres pour courier (dans MySQL ou des fichiers)
- on souhaiterait pouvoir intervenir depuis la ligne de commande (pas moi...)
- on souhaiterait pouvoir gérer les quota d'impression (via CUPS)
- on souhaiterait pouvoir gérer les paiements reçus (abonnement, commande de document, remboursement, état de caisse, bilan mensuel)
les extensions possibles :
on souhaiterait pouvoir générer une base d'authentification LDAP (mais... finalement non)
La base de données
L'objet « personne »
Il sert à identifier un utilisateur dans la « Vraie Vie »™. Les acteurs de ce système de gestion sont aussi des utilisateurs et doivent donc également s'y trouver enregistrés.
id |
Identifiant unique d'une personne |
nom |
Son(ses) nom(s) tel(s) qu'indiqué(s) sur une pièce d'identité |
prenom |
Son(ses) prénom(s) tel(s) qu'indiqué(s) sur une pièce d'identité |
nom_affichage |
Le nom d'affichage souhaité |
genre |
Son genre |
date_naissance |
Sa date de naissance |
nom_utilisateur |
Nom d'utilisateur des systèmes |
mot_de_passe |
Mot de passe de l'utilisateur |
adel |
Son adél de contact préférée |
adel_alternative |
Son adél de contact alternative (en cas d'injoignabilité sur la précédente) |
adresse_personnelle |
Son adresse personnelle |
adresse_professionnelle |
Son adresse professionnelle |
telephone_personnel |
Son numéro de téléphone personnel |
telephone_professionnel |
Son numéro de téléphone professionnel |
telephone_mobile |
Son numéro de téléphone mobile |
telephone_fax |
Son numéro de fax |
commentaire |
Un commentaire éventuel |
L'objet « groupe »
Il sert à créer des groupes de personnes.
id |
Identifiant unique d'un groupe |
nom |
Nom du groupe |
description |
Description du groupe |
La relation « personne_groupe »
Elle sert à indiquer quelle personne appartient à quel groupe.
id |
Identifiant unique d'une appartenance |
id_personne |
Identifiant de la personne |
id_groupe |
Identifiant du groupe |
L'objet « abonnement »
Il sert à enregistrer une période d'activité d'un utilisateur.
id |
Identifiant unique d'un abonnement |
id_personne |
Identifiant de l'utilisateur concerné |
id_groupe |
Identifiant du groupe de l'utilisateur pendant cette période |
id_implantation |
Identifiant de l'implantation où se situe l'activité |
date_debut |
Date de début d'activité |
date_fin |
Date de fin d'activité |
commentaire |
Un commentaire éventuel sur l'activité |
L'objet « journal »
Il sert à retrouver une opération faite dans le système. J'imagine un besoin simple au départ : qui fait quoi et quand.
id |
Identifiant unique d'une entrée de journal |
id_personne |
Identifiant de l'utilisateur ayant opéré |
date_entree |
Date de cette entrée de journal |
description |
La description textuelle de l'opération |
Extension de gestion de commandes de documents
L'objet « commande_document »
Il sert à enregistrer une commande de document primaire par un utilisateur.
id |
Identifiant unique d'une commande |
id_personne |
Identifiant de l'utilisateur concerné |
id_implantation |
Identifiant de l'implantation où est faite la commande |
date_saisie |
Date de saisie de la commande |
date_commande |
Date de lancement de la commande |
date_reception |
Date de réception de la commande |
reference |
Référence de la commande (numéro INIST ou autre) |
commentaire |
Un commentaire éventuel sur la commande |
id_langue |
Identifiant de la langue de la commande |
nb_pages |
Nombre de pages dans la commande |
Extension de gestion financière
voir le problème de la monnaie !
L'objet « recu »
Il sert à enregistrer le reçu d'un paiement, que ce soit en crédit ou en débit.
id |
Identifiant unique d'un reçu |
id_recu_origine |
Lien vers le reçu d'origine en cas de remboursement après clôture |
id_personne |
Identifiant de l'utilisateur recevant le reçu |
id_implantation |
Identifiant de l'implantation où est émis le reçu |
date_saisie |
Date de saisie du reçu |
date_valeur |
Date de valeur du reçu |
credit |
Valeur du reçu (perçue) |
debit |
Valeur du reçu (remboursée) |
Note : credit et debit indiquent des sommes dans le même mois ; les remboursements d'un mois sur l'autre devant faire l'objet d'un nouveau reçu pour des raisons de clôture financière mensuelle. Cela permet ensuite de générer un « état de caisse » mensuel qui correspond effectivement au contenu de la caisse à la fin de chaque mois.
L'objet « recu_abonnement »
Il sert à enregistrer le paiement d'un abonnement.
id |
Identifiant unique d'un paiement d'abonnement |
id_recu |
Identifiant du reçu pour le paiement |
id_abonnement |
Identifiant de l'abonnement concerné |
L'objet « recu_commande »
Il sert à enregistrer le paiement d'une commande.
id |
Identifiant unique d'un paiement de commande |
id_recu |
Identifiant du reçu pour le paiement |
id_commande_document |
Identifiant de la commande concernée |
Ce qui suit ne doit pas être pris en compte : ce sont des notes temporaires !
Nous aurons à manipuler :
des objets groupe
des objets compte
des objets commande