Outils pour utilisateurs

Outils du site


slvpartage:cartes_d_artistes

Echange de cartes d'artistes

( https://en.wikipedia.org/wiki/Artist_trading_cards )

Etude d'un projet de logiciel par philippe suite à des échanges réalisés par ma fille ( https://pire.artisanlogiciel.net/videos/watch/1292ab2d-1af8-46f6-90a8-9c45f43538b3 ).

Le projet pourra être présenté à slv pour hébergement.

Le cahier des charges

La demande émane de @guillemettesilvand@framapiaf.org ( sur le réseau mastodon de framapiaf ) qui propose d'organiser les échanges : https://www.guillemettesilvand.fr/index.php/artist-trading-cards/

J'organise des échanges de cartes d'artistes depuis janvier et la charge de travail augmente.

Je n'ai pas les compétences pour créer un logiciel ou une appli pour m'aider, peut-être qu'il existe quelque chose déjà qui pourrait faire l'affaire. On m'a parlé de Notion.

Mon boulot: - chaque mois envoyer un mail à tous ceux qui ont participé pour qu'ils s'inscrivent, s'ils veulent, pour le nouveau mois - récolter les réponses qui donnent le nom, le mail, le téléphone et le nombre de cartes

1/

- organiser qui échange avec qui en tenant compte des échanges précédents pour faire tourner et éviter qu'on échange avec les mêmes personnes, si qqn fait 3 cartes, il échangera avec 3 personnes, les échanges se font par binôme (c'est un casse-tête cette étape)

- envoyer un mail à tous les participants du mois avec le nom et le mail d'avec qui ils échangent (avant je faisais à chacun en individuel, là je partage la liste des mails et dit qui échange avec qui, bcp plus court)

2/

Sachant que ce mois-ci il y a trois groupes: - le groupe des ados-adultes de 14 à 74 ans - le groupe des enfants de 3 à 11 ans - et le groupe de tout le monde mélangé de 2,5 ans à 74 ans

Certains participants sont dans deux groupes, certains parents dans les trois groupes.

Alors, est-ce que Notion peut m'aider? Une idée sinon?

3/3

Pré etude

logiciel Notion https://www.notion.so/product : gros truc … pas trop envie de rentrer là dedans …

Notion n'est pas libre è> rédhibitoire pour que je fasse quoi que ce soit avec.

X-Wiki ? https://xwiki.com/en/Alternatives/xwiki-vs-notion ( merci vincent !)

X-Wiki semble encore plus gros que Notion.

il n'y a pas d'intégration X-Wiki dans Yunohost, cela aurait été de bonne augure…

Fait mimine …

Utilisation de LibreOffice Macro Basic + Calc

Première implémentation de l'algorithme quadratique algo1 défini plus loin.

Sur le GitLab de framagit : https://framagit.org/artlog/artistcardmanagertools

Il y a un exemple de feuille sur laquelle on peut lancer la macro qui prend les entrées dans une zone prédéfinie de la feuille et re-rempli une zone de la feuille.

Lire le LISEZMOI sur https://framagit.org/artlog/artistcardmanagertools

Premier tuto vidéo https://peertube.serveur.slv-valbonne.fr/videos/watch/30d64830-ffff-413e-8bd2-96ed7054acfc

Utilisation de LibreOffice Base

création des tables et des formulaires dans libreoffice base. Ce sera une première je ne suis pas un habitué de cet outil.

Ici il y a une seul base de donnée gérée localement par l'organisateur et qui effectue les croisement de donnée pour générer les échanges.

Application en ligne.

en plugin sur une solution existante ? une application yunohost ? mobilizon ? nexctcloud ?

contraintes de confidentialité :

L'organisateur n'a besoin que de la liste des adresses mail, du nom et âge des participants, nombre de cartes pour la campagne, et téléphone ? ( est-ce vraiment néccessaire ? ).

Les participants n'ont besoin que de la liste des adresses mail et postales de personnes sélectionnées par l'organisateur. Les participants renseignent leur adresse postale s'ils le souhaitent, elle n'est accessible qu'aux autres personnes sélectionnées. S'ils ne le souhaitent pas il leur faudra échanger cette adresse postale à leur pair par mail.

S'il pouvait y avoir un système de chiffrement de la base de donnée qui protège la visibilité de ses données à l'hébergeur une fois l'application stoppée, ce serait l'idéal. le chiffrement serait basé sur le mot de passe organisateur.

Implementation

algo1

Focalisation sur la phase de répartition et distribution des cartes.

répartition des échanges avec certains échanges forcés

Un première répartition plus ou moins manuelle pourrait être faite et l'algorithme joué dessus cet ensemble de données pour compléter les échanges.

Un algorithme incrémental serait judicieux, c'est à dire un algorithme qui permettre de rajouter des cartes à des participants et de rajouter des participants en regénérant de nouveaux échanges sans remettre en question les échanges initiaux.

Un algorithme de vérification/validation serait aussi le bienvenue dans le cas de manipulations manuelle des résultats.

Phases

Phase de création de la campagne

L'utilisateur créé une campagne, il en devient l'organisateur de fait.

contrainte : il n'y a qu'un organisateur par campagne

Phase de collecte des participants.

Soit en s'enregistrant sur le service, soit rajouté par l'organisateur.

Phase d'appariement

réalisée par l'organisateur. Un algo automatique peut aider à construire la première liste et laisser les adaptations à l'organisateur.

Cette phase est proposée en local via une feuille de caclul LibreOffice avec le prototype https://framagit.org/artlog/artistcardmanagertools

Phase de lancement

depuis de service en ligne les mail sont envoyés en To: aux deux personnes appariées avec leur mail.

Dans le corps du courrier une explication rapide du fonctionnenement, ce corps est un template. dans ce template peut être ajouté un lien pour contacter l'organisateur / modérateur

puis les informations connues de chacun des participant , rappel des mail, nom des personnes. et un lien pour accéder au site ( étudier le système de login ).

Phase de renseignement des adresses postales

Une fois les personnes en contact car elles ont reçu le mail ( il faudrait ici une vérification croisée… au cas où… ) elles peuvent soit décider de s'échanger les adresses directement en utilisant le mail, ou bien de le renseigner sur le site pour ne le faire qu'une fois pour tous les autres contacts potentiels.

Phase de collecte des échanges

Un fois la carte envoyée il est conseillé aux participants de le renseigner sur le site. Un fois la carte reçue il est conseillé aux participants de le confirmer sur le site.

L'organisateur peut voir l'état des échanges

Données

Utilisateurs

Type Nom
TexteNom
TextePrénom
TexteMail

Echanges

pour chaque appariement il y a deux échanges, A→B et B→A.

Type Nom description
Utilisateur(*)envoyeurPair envoyeur
Utilisateur(*)recepteurPair recepteur
Etatetatinitial, contacté, envoyé, reçu_par_recepteur

Campagne

chaque nouvelle campagne qui couvre par défaut un mois est enregistrée ici.

Type nom description
Datedebutdébut de la campagne
Datefin_enregistrementfin d'enregistrement à cette campagne
Datefinfin de la campagne
Texteintroductiontexte d'introduction spécifique à cette campagne
Utilisateur(*)organisateurréférence sur l'organisateur de la campagne
Etatphasecollecte_participants,appariement,lancement,collecte_carte
Textelienlien pour s'enregistrer à la campagne

Commentaire

durant une campagne un utlisteur peut émettre un commentaire, soit à tous, soit aux membre d'un groupe soit à un utilisateur en particulier.

Type nome description
Utilisateur(*)emetteur
Campagne(*)campagne
Groupe(*)groupe optionel, pour un groupe uniquement
Datedatedate du commentaire
Utilisateur(*)recepteuroptionel , nécessaire si message direct )

Description de Groupe / Categorie

Type Nom
Textedescriptiondescription du groupe / categorie
Textecontraintesdescription des contraintes

Groupe

Nom
Description Groupe(*)
Campagne(*)
nom local

Membre

Type Description
Groupe(*)membre_de
Utilisateur(*)utilisateur

Contact

Type description
Utilisateur(*)utilisateur
TexteAdresse
Textetéléphone

Login

Type description
Utilisateur(*)utilisateur
Textepreuve de mot de passe

enrolement

Type description
Utilisateur(*)utilisateur
Textemot de passe d'enrolement
Etatetat: initial, complet, revoqué

droits

Un même utilisateur peut avoir plusieurs droits selon la campagne.

Type Description
Utilisateur(*)
Campagne(*)
Etatstatus : Utilisateur, Organisateur

contrat

Type Nom Description
Utilisateur(*)utilisateur
Campagne(*)campagne
Nombrecartesnombre de cartes promises

Algorithme

algo1 quadratique

L'algo1 est assez disperisf mais ne permet pas de distribuer toutes les cartes si de nombreux participants ont un faible nombre de carte. Il permet cependant à des participants avec une faible nombre de carte d'échanger avec d'autres participants ayant aussi un faible nombre de cartes.

Avec n utilisateurs il y a n * ( n - 1 ) / 2 paires possibles de participants différents. La complexité est donc proportionnelle au carré du nombre de participants.

Créer la liste des participants pouvant échanger entre eux en respectant leur groupes

pour cette liste :

a. Tant la liste contient plus d'un participant; Créer une paire pour chacun des participants c'est à dire : Supprimer le premier de la liste et l'apparier avec un autre qui ne lui soit pas déjà apparié (*) Si l'appariement a eu lieu, décrémenter de 1 le compteur de cartes de chacun et supprimer l'autre de la liste. si la liste contient plus d'un participant, recommencer en a. ; Reconstruire la liste des participants ayant encore des cartes à échanger, si elle contient plus d'un participant, recommencer en a.

Ici la liste peut encore contenir un participant avec des cartes en excès. Il sera traité plus tard.

On recommence le même procédé pour chaque groupe sachant que certains participants peuvent appartenir à plusieurs groupes, l'ordre des groupe peut influer sur la distribution finale.

(*) la création de paires doit se faire de façon intelligente pour éviter de créer plusieurs fois les même paires dans une même passe ou bien même dans plusieurs.

algo2 linéaire

Il existe une autre manière d'aborder le problème en considérant chaque carte à échanger et en les tirant au sort deux par deux dans un chapeau. Le cas d'exception à traiter est quand les deux cartes obtenues sont les même. Dans ce mode deux participants peuvent se retrouver à échanger plusieurs cartes entre eux, sinon il faut un mécanisme de vérification que l'appariement n'a pas déjà eu lieu avec le même participant.

pour chaque participant ajouter dans la liste autant de cartes avec la référence au participant qu'il veut en échanger.

Retirer deux cartes de la liste (*)

- S'il n'y a pas assez de cartes c'est la fin.

- Si les cartes sont identiques : Tant qu'elle est identique retirer une carte supplémentaire. S'il n'y a plus de cartes, c'est la fin. S'il y a une carte différente : enregistrer la carte initiale et celle ci dans les appariement. Poser les cartes non enregistrées sur le tas des cartes non utilisés du participant, cela revient à enregistrer le nombre de cartes non utilisées pour le participant.

- Si les cartes sont différentes, les enregistrer dans les appariements.

Une fois la liste vide regarder s'il reste plus d'un participant avec des cartes inutilisées, si c'est le cas, reconstruire la liste est recommencer.

(*) on peut retirer les cartes en tête cependant dans ce cas il est préférable d'avoir consturit la liste de manière à entrelacer les cartes des participants, on peut aussi les tirer de façon aléatoire.

slvpartage/cartes_d_artistes.txt · Dernière modification : 2021/05/17 15:04 de cyberyunohost