Casse-tête : Paramétrage et combinatoire.
jaramal
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je ne suis pas sûr de poster dans la bonne section, car ma question ne porte pas directement sur de la BDD. Cependant, c'est certainement ici que j'ai le plus de chances de trouver quelqu'un confronté au même casse-tête, donc je me lance. :)
Dans le cadre d'un projet sur lequel je travaille, nous sommes amenés à gérer en BDD un paramétrage assez volumineux fourni par un client, qui nous pose des problèmes de volumétrie et surtout de combinatoire. Voici pour schématiser (rien à voir avec le domaine concerné), à quoi ressemblent les données que nous utilisons :
- Une voiture : contient un champ marque et un champ modèle
- Une couleur : contient uniquement un libellé
- Un véhicule : c'est une table d'association simple entre une voiture et une couleur (exemple : <Peugeot 306/rouge>)
- Un concessionnaire : contient uniquement un libellé
- Un véhicule en vente : c'est une table d'association entre un véhicule et un concessionnaire. Elle contient en plus des informations propres à la vente, choisies par le concessionnaire : Le prix, si une reprise est possible, s'il offre la carte grise, etc...
Pour l'instant, tout ce paramétrage est régulièrement mis à jour en partant d'un référentiel sous forme de fichier Excel (transmis par le client) et ensuite mis en forme et injecté en BDD. L'avantage d'Excel est de proposer des filtres qui permettent de grouper les données identiques et de simplifier l'édition. On me demande de proposer au client une interface qui rende le processus de paramétrage moins "artisanal".
Le problème, c'est la volumétrie :
- voiture : 495
- couleur : 164
- véhicule : 11415
- concessionnaire : 68
- véhicule en vente : 36707
L'interface doit pouvoir permette d'ajouter des nouvelles voitures, couleurs, concessionnaires et surtout de gérer les combinaisons <voiture/couleur> et <concessionnaire/véhicule>. Lorsqu'un nouveau modèle de voiture sort dans le commerce, il faut pouvoir facilement configurer les couleurs disponibles, la liste des concessionnaires qui la proposeront, à tel prix et avec telles possibilités de financement. A savoir que 9X sur 10, les infos (prix, reprise, carte grise etc...) sont les mêmes d'un concessionnaire à un autre. Mais pas toujours, donc pas possible de généraliser...
Ma question porte sur la partie ergonomie de l'interface, et pas du tout sur la partie technique. Si l'un de vous a une idée de comment rendre tout ça utilisable et ergonomique (en tenant compte de la volumétrie) ? A savoir que la modification d'un paramétrage existant doit être la plus simple possible : si le client doit effectuer 50 actions en passant par 15 pages différentes, il va vouloir rester sur son modèle Excel=>BDD.
J'ajouterais que ce sujet est dans les bacs depuis des années, et que mes prédécesseurs se sont tous systématiquement cassé les dents dessus. Donc à ce stade, toute proposition sérieuse est la bienvenue ! ;-)
Merci de m'avoir lu,
JmL
Je ne suis pas sûr de poster dans la bonne section, car ma question ne porte pas directement sur de la BDD. Cependant, c'est certainement ici que j'ai le plus de chances de trouver quelqu'un confronté au même casse-tête, donc je me lance. :)
Dans le cadre d'un projet sur lequel je travaille, nous sommes amenés à gérer en BDD un paramétrage assez volumineux fourni par un client, qui nous pose des problèmes de volumétrie et surtout de combinatoire. Voici pour schématiser (rien à voir avec le domaine concerné), à quoi ressemblent les données que nous utilisons :
- Une voiture : contient un champ marque et un champ modèle
- Une couleur : contient uniquement un libellé
- Un véhicule : c'est une table d'association simple entre une voiture et une couleur (exemple : <Peugeot 306/rouge>)
- Un concessionnaire : contient uniquement un libellé
- Un véhicule en vente : c'est une table d'association entre un véhicule et un concessionnaire. Elle contient en plus des informations propres à la vente, choisies par le concessionnaire : Le prix, si une reprise est possible, s'il offre la carte grise, etc...
Pour l'instant, tout ce paramétrage est régulièrement mis à jour en partant d'un référentiel sous forme de fichier Excel (transmis par le client) et ensuite mis en forme et injecté en BDD. L'avantage d'Excel est de proposer des filtres qui permettent de grouper les données identiques et de simplifier l'édition. On me demande de proposer au client une interface qui rende le processus de paramétrage moins "artisanal".
Le problème, c'est la volumétrie :
- voiture : 495
- couleur : 164
- véhicule : 11415
- concessionnaire : 68
- véhicule en vente : 36707
L'interface doit pouvoir permette d'ajouter des nouvelles voitures, couleurs, concessionnaires et surtout de gérer les combinaisons <voiture/couleur> et <concessionnaire/véhicule>. Lorsqu'un nouveau modèle de voiture sort dans le commerce, il faut pouvoir facilement configurer les couleurs disponibles, la liste des concessionnaires qui la proposeront, à tel prix et avec telles possibilités de financement. A savoir que 9X sur 10, les infos (prix, reprise, carte grise etc...) sont les mêmes d'un concessionnaire à un autre. Mais pas toujours, donc pas possible de généraliser...
Ma question porte sur la partie ergonomie de l'interface, et pas du tout sur la partie technique. Si l'un de vous a une idée de comment rendre tout ça utilisable et ergonomique (en tenant compte de la volumétrie) ? A savoir que la modification d'un paramétrage existant doit être la plus simple possible : si le client doit effectuer 50 actions en passant par 15 pages différentes, il va vouloir rester sur son modèle Excel=>BDD.
J'ajouterais que ce sujet est dans les bacs depuis des années, et que mes prédécesseurs se sont tous systématiquement cassé les dents dessus. Donc à ce stade, toute proposition sérieuse est la bienvenue ! ;-)
Merci de m'avoir lu,
JmL
A voir également:
- Casse-tête : Paramétrage et combinatoire.
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum Bureautique
- Réparation écran tv samsung cassé ✓ - Forum Téléviseurs
- Écran ordinateur cassé sans choc - Forum Ecran
- Lordi région écran cassé - Forum Ecran
- Ecran telephone cassé de l'interieur - Forum Wiko
2 réponses
salut,
A mon avis le premier élément à identifier sera l'élément "maitre", ou plutot l'éléments qui dans tous les cas existe : je pense que c'est la voiture dans ton cas.
L'idée est donc de proposer un écran qui comportera plusieurs onglets :
- Ajouter des éléments fixes (liste de couleurs, liste de concésionnaires) : l'utilisateur pourra depuis cette écran afficher la liste actuelle + ajouter / supprimer (attention si cascade ou non) des éléments.
- ajouter les liaisons en partant du véhicule : une liste (on pourrai avoir une combo) pour sélectionner un véhicule, une autre pour la couleur, le concessionnaire, etc. Dans cet écran, l'utilisateur pourra sélectionner tous les éléments pour constituer le véhicule en vente .
- un écran de synthèse qui contiendra un tableau de tous les véhicules en vente (avec la possibilité de supprimer un élément).
Bien sûr, on pourrai aussi n'avoir que le tableau pour ajouter les éléments on encore combiner les deux derniers onglets en deux parties (par exemple un clic sur une ligne du tableau rempli les champs pour l'éditions, si tu souhaite autoriser l'édition).
Le tout permettant bien sûr de soit générer un fichier de données pour ta base, soit travailler en direct sur la base.
naga
A mon avis le premier élément à identifier sera l'élément "maitre", ou plutot l'éléments qui dans tous les cas existe : je pense que c'est la voiture dans ton cas.
L'idée est donc de proposer un écran qui comportera plusieurs onglets :
- Ajouter des éléments fixes (liste de couleurs, liste de concésionnaires) : l'utilisateur pourra depuis cette écran afficher la liste actuelle + ajouter / supprimer (attention si cascade ou non) des éléments.
- ajouter les liaisons en partant du véhicule : une liste (on pourrai avoir une combo) pour sélectionner un véhicule, une autre pour la couleur, le concessionnaire, etc. Dans cet écran, l'utilisateur pourra sélectionner tous les éléments pour constituer le véhicule en vente .
- un écran de synthèse qui contiendra un tableau de tous les véhicules en vente (avec la possibilité de supprimer un élément).
Bien sûr, on pourrai aussi n'avoir que le tableau pour ajouter les éléments on encore combiner les deux derniers onglets en deux parties (par exemple un clic sur une ligne du tableau rempli les champs pour l'éditions, si tu souhaite autoriser l'édition).
Le tout permettant bien sûr de soit générer un fichier de données pour ta base, soit travailler en direct sur la base.
naga
Merci naga pour ta réponse !
J'ai déjà pensé à un fonctionnement de ce style. Cela fonctionne relativement bien si l'on n'ajoute que quelques voitures. C'est problématiques dans la plupart des use case pour lesquels l'interface est destinée.
Prenons un cas concret : un concessionnaire A en a marre de vendre uniquement des Peugeot, et veut vendre des Renault. Il veut proposer 10 modèles du catalogue, dont chacun est disponible en 5 couleurs. => Ce qui représente déjà 50 véhicules.
Ensuite, il faut paramétrer les "véhicules en vente" :
Imaginons le cas simple où le prix et les conditions de vente ne sont pas dépendantes de la couleur. On se retrouve avec 10 paramétrages (un par voiture) qu'il faut dupliquer 5X (un par couleur). Ça commence à faire beaucoup de données, et à charger l'interface. Et ce n'est qu'un cas simple...
Imaginons maintenant qu'un nouveau modèle de Citroën sorte d'usine. Elle est disponible en 2 finitions (essence et diesel, donc deux enregistrements "voiture"), en 5 couleurs et est disponible chez les 68 concessionnaires (pas toutes les finitions, ni toutes les couleurs, et à des prix propres à chaque concessionnaire)... Ce qui représente entre 68 et 680 combinaisons... Et là, bonjour la saisie des infos...
Ces deux exemples sont malheureusement assez représentatifs des situations rencontrées par le client. Il faut donc que l'interface soit utilisable dans ces cas de figure...
J'ai déjà pensé à un fonctionnement de ce style. Cela fonctionne relativement bien si l'on n'ajoute que quelques voitures. C'est problématiques dans la plupart des use case pour lesquels l'interface est destinée.
Prenons un cas concret : un concessionnaire A en a marre de vendre uniquement des Peugeot, et veut vendre des Renault. Il veut proposer 10 modèles du catalogue, dont chacun est disponible en 5 couleurs. => Ce qui représente déjà 50 véhicules.
Ensuite, il faut paramétrer les "véhicules en vente" :
Imaginons le cas simple où le prix et les conditions de vente ne sont pas dépendantes de la couleur. On se retrouve avec 10 paramétrages (un par voiture) qu'il faut dupliquer 5X (un par couleur). Ça commence à faire beaucoup de données, et à charger l'interface. Et ce n'est qu'un cas simple...
Imaginons maintenant qu'un nouveau modèle de Citroën sorte d'usine. Elle est disponible en 2 finitions (essence et diesel, donc deux enregistrements "voiture"), en 5 couleurs et est disponible chez les 68 concessionnaires (pas toutes les finitions, ni toutes les couleurs, et à des prix propres à chaque concessionnaire)... Ce qui représente entre 68 et 680 combinaisons... Et là, bonjour la saisie des infos...
Ces deux exemples sont malheureusement assez représentatifs des situations rencontrées par le client. Il faut donc que l'interface soit utilisable dans ces cas de figure...
re !
Dans ce cas il te faut des écran pour répandre des modifications donc des listes de sélection plutot que des combos : l'utilisateur vas sélectionner X voitures, Y Couleurs et N concessionnaires, et toi tu fais le produit en croix. Tu auras les cas ou les concessionnaires n'auront pas tel ou tel voiture donc à toi de gérer tes vérif avant d'insérer.
Pour info je travaille sur une application qui regroupe tous les constructeurs automobiles, toutes les séries de voitures (en passant par le modèle/genre), toutes les pièces présentes dans chaque voiture avec les méthodes de réparations, les pièces de rechanges, etc. le tout bien sûr soumis à des critères ... de plus on lie, en fonction du constructeur, les promo qui changent tout le temps et les zones de ventes pour les tarifs (ca varie en fonction des concessions).
Bref tout ca pour dire que n'obtient jamais un produit qui va palier à toutes les petites exceptions : soit l'utilisateur va devoir suivre des procédures définies soit tu souhaite être moins restrictif et du coup il faut que tu gère toutes les possibilités (et donc maintenir l'application tout le temps).
Dans ton cas tu semble avoir tous les éléments pour faire ton appli, mais c'est sûr que ce n'est pas toujours facile de faire l'interface adéquate ^^
Dans ce cas il te faut des écran pour répandre des modifications donc des listes de sélection plutot que des combos : l'utilisateur vas sélectionner X voitures, Y Couleurs et N concessionnaires, et toi tu fais le produit en croix. Tu auras les cas ou les concessionnaires n'auront pas tel ou tel voiture donc à toi de gérer tes vérif avant d'insérer.
Pour info je travaille sur une application qui regroupe tous les constructeurs automobiles, toutes les séries de voitures (en passant par le modèle/genre), toutes les pièces présentes dans chaque voiture avec les méthodes de réparations, les pièces de rechanges, etc. le tout bien sûr soumis à des critères ... de plus on lie, en fonction du constructeur, les promo qui changent tout le temps et les zones de ventes pour les tarifs (ca varie en fonction des concessions).
Bref tout ca pour dire que n'obtient jamais un produit qui va palier à toutes les petites exceptions : soit l'utilisateur va devoir suivre des procédures définies soit tu souhaite être moins restrictif et du coup il faut que tu gère toutes les possibilités (et donc maintenir l'application tout le temps).
Dans ton cas tu semble avoir tous les éléments pour faire ton appli, mais c'est sûr que ce n'est pas toujours facile de faire l'interface adéquate ^^
Ouep, c'est l'idée !
Donc j'imagine bien 3 listes avec sélection multiple : une pour les voitures, l'autre pour les couleurs, la dernière pour les concessionnaires.
Une fois que la combinatoire est générée (ce que tu appelles le produit en croix), un écran récap propose la liste exhaustive (avec factorisation déroulable pour les paramétrages identiques) sur lequel on peut supprimer ou modifier certaines lignes (par exemple le concessionnaire A souhaite facturer les voitures rouges plus cher, ou le concessionnaire B ne vend que des diesel, etc...)
Ça pourrait marcher... Je vais plancher là-dessus.
Merci ! Et si tu as d'autres pistes ou un lien vers un exemple concret, n'hésite pas ! ;-)
JmL
Donc j'imagine bien 3 listes avec sélection multiple : une pour les voitures, l'autre pour les couleurs, la dernière pour les concessionnaires.
Une fois que la combinatoire est générée (ce que tu appelles le produit en croix), un écran récap propose la liste exhaustive (avec factorisation déroulable pour les paramétrages identiques) sur lequel on peut supprimer ou modifier certaines lignes (par exemple le concessionnaire A souhaite facturer les voitures rouges plus cher, ou le concessionnaire B ne vend que des diesel, etc...)
Ça pourrait marcher... Je vais plancher là-dessus.
Merci ! Et si tu as d'autres pistes ou un lien vers un exemple concret, n'hésite pas ! ;-)
JmL
pas de soucis, là je ne suis pas en mesure de te proposer un exemple complet (ca serai assez lourd), mais je peux déjà te dire qu'il faudra bien gérer les filtre d'affichage pour que l'utilisateur puisse cibler facilement ses véhicules.
Ensuite il y aura des questions à se poser :
- tel combinaison n'est pas possible (voiture pas chez cosntructeur etc). Que fait-on? on créé d'office ? on ignore d'office? on propose ? (si on propose, il faudra peu être limiter => si + de 10 propositions l'utilisateur n'aura peu être pas envie de dire oui/non a chacunes). Le top étant bien sûr de rendre paramétrable pour gérer tous les cas.
- tel combinaison existait déjà mais avec un prix différents, que fait-on ?
- de même il pourrai être intéressant de faire un rapprochement avec ce qui existe pour identifier des erreurs possibles. Par exemple : une même voiture pour une couleur différente et pour un même concessionnaire à une différence de prix "bizard" (rendre paramétrable l'écart qui donnerai l'alerte) : avant de sauvegarder, informer l'utilisateur (si jamais il se serai trompé).
- permettre d'importer un contenu csv par exemple (pour les migrations de base ou ne serais-ce que pour laisser la possibilité).
Le plus difficile est toujours de satisfaire tout le monde (ceux qui veulent du nouveau et ceux qui au contraire y sont très réticent ^^)
Ensuite il y aura des questions à se poser :
- tel combinaison n'est pas possible (voiture pas chez cosntructeur etc). Que fait-on? on créé d'office ? on ignore d'office? on propose ? (si on propose, il faudra peu être limiter => si + de 10 propositions l'utilisateur n'aura peu être pas envie de dire oui/non a chacunes). Le top étant bien sûr de rendre paramétrable pour gérer tous les cas.
- tel combinaison existait déjà mais avec un prix différents, que fait-on ?
- de même il pourrai être intéressant de faire un rapprochement avec ce qui existe pour identifier des erreurs possibles. Par exemple : une même voiture pour une couleur différente et pour un même concessionnaire à une différence de prix "bizard" (rendre paramétrable l'écart qui donnerai l'alerte) : avant de sauvegarder, informer l'utilisateur (si jamais il se serai trompé).
- permettre d'importer un contenu csv par exemple (pour les migrations de base ou ne serais-ce que pour laisser la possibilité).
Le plus difficile est toujours de satisfaire tout le monde (ceux qui veulent du nouveau et ceux qui au contraire y sont très réticent ^^)