À propos du projet
Deck Lab est une application web Python/Flask pour construire, rechercher et tester des decks Commander compétitifs (Magic: The Gathering) dans un espace de travail unique. Les utilisateurs peuvent modifier des decks, étudier la métagame compétitive, consulter les informations des cartes et exécuter des simulations goldfish ; les decks sauvegardés, les comptes et les préférences persistent entre les sessions. L'instance hébergée nécessite un compte fourni par le propriétaire.
Principales capacités décrites dans le README :
- Workflow de modification de deck et de recherche : les résultats de recherche publics sont servis à partir d'un instantané persistant avec suivi des révisions, actualisation en arrière-plan et service temporaire limité ; les filtres et l'historique du navigateur sont mis à jour sans reconstruction complète des pages.
- Logique métier déterministe : la légalité Commander, l'identité de couleur, les combinaisons de partenaires et la taille du deck sont validées dans le code ; le constructeur de packs de stratégie sélectionne les cartes de manière déterministe, avec la sortie du modèle confinée à une frontière validée distincte pour les explications.
- Contrats de données explicites : la recherche PostgreSQL est exposée via des vues versionnées `mtg_v1` avec un consommateur en lecture seule, et un simulateur séparé échange du JSON versionné validé par rapport à un schéma empaqueté. Les preuves manquantes et les simulations indisponibles sont présentées comme des états visibles plutôt que comme des résultats inventés.
- Sécurité : mots de passe hachés avec Argon2, protection CSRF, fourniture de comptes, récupération de mot de passe et contrôles d'autorisation ; la production et la QA utilisent des identifiants, des données et des réseaux de conteneurs distincts.
- Versions reproductibles : GitHub Actions exécute des tests, un lint, un formatage, des types et des vérifications de fumée des conteneurs ; le déploiement vérifie la révision de l'image, le hachage de l'archive, la plateforme et les couches ; les sauvegardes chiffrées et les vérifications de restauration isolées soutiennent la récupération.
Architecture : une application web Flask + Waitress reposant sur SQLite pour les comptes, les decks et l'instantané de recherche ; une actualisation en arrière-plan extrait les vues PostgreSQL `mtg_v1` ; l'application peut appeler un simulateur privé via JSON versionné et une passerelle de modèle facultative. Le déploiement utilise Caddy pour HTTPS et Docker Compose sur DigitalOcean, les ports de la base de données et du simulateur restant privés ; la QA est disponible sur un sous-domaine séparé pour l'examen du propriétaire avant la mise en production.
Une exécution locale nécessite Python 3.11+. L'installation utilise un environnement virtuel, `pip install -e '.[dev,postgres,legacy]'`, un script de configuration de base de données, des variables d'environnement pour la clé secrète, le mode d'authentification et les indicateurs de déploiement, une commande CLI de création d'administrateur et une commande de service. Le CLI/paquet conserve le nom historique `sabermetrics` pour la compatibilité. Le chemin cEDH par défaut basé sur des fixtures fonctionne sans identifiants de fournisseur, PostgreSQL ou simulateur ; le corpus de recherche de production et les comptes privés ne sont pas distribués avec le dépôt. Un constructeur déterministe hors ligne peut être exercé via des commandes CLI qui listent et construisent des packs de stratégie.
La vérification utilise pytest, ruff, black et mypy ; la suite par défaut repose sur des fixtures et des mocks, tandis que les intégrations PostgreSQL, modèle et simulateur en direct sont facultatives et les tests de modèle peuvent entraîner des frais d'API. L'IC exerce également le comportement du paquet installé, l'authentification et la récupération, les commentaires avec livraison simulée et le démarrage du conteneur HTTP. La configuration des types enregistre des exclusions héritées limitées plutôt que de prétendre à une couverture complète.
Portée et limites : il s'agit d'une application axée sur Commander, pas d'un moteur de règles complet ; le goldfish mesure des schémas de jeu modélisés, pas la probabilité de victoire en multijoueur ; la couverture des tournois reflète les données sources disponibles et le taux d'inclusion n'est pas une preuve de la qualité d'une carte ; la prise en charge des packs de stratégie est limitée par le matériel organisé et les capacités du simulateur ; le déploiement mono-hôte est un compromis opérationnel délibéré, pas une affirmation de haute disponibilité. Certains modules générateurs d'origine restent comme code de compatibilité, le produit générateur actif étant dans un dépôt séparé. Le projet est un projet de fan non officiel, non affilié à Wizards of the Coast, et est sous licence MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.