## page was renamed from Projet/GestionDesUtilisateursDesCampus/SchemaBase/HistoriquePropositionJC ## page was renamed from Projet/GestionDesUtilisateursDesCampus/PropositionJC Cette page présente ma proposition de version 0. -- JeanChristopheAndré <> = 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`