Sobre el proyecto

Deck Lab es una aplicación web en Python/Flask para construir, investigar y probar mazos competitivos de Commander (Magic: The Gathering) en un único espacio de trabajo. Los usuarios pueden editar mazos, investigar el metajuego competitivo, consultar información de cartas y ejecutar simulaciones goldfish; los mazos guardados, las cuentas y las preferencias persisten entre sesiones. La instancia alojada requiere una cuenta proporcionada por el propietario. Capacidades clave descritas en el README: - Flujo de trabajo de edición e investigación de mazos: los resultados de investigación públicos se sirven desde una instantánea persistida con seguimiento de revisiones, actualización en segundo plano y servicio obsoleto acotado; los filtros y el historial del navegador se actualizan sin reconstrucciones completas de la página. - Lógica de dominio determinista: la legalidad de Commander, la identidad de color, las combinaciones de compañeros y el tamaño del mazo se validan en código; el constructor de paquetes de estrategia selecciona cartas de forma determinista, con la salida del modelo confinada a un límite validado separado para las explicaciones. - Contratos de datos explícitos: la investigación de PostgreSQL se expone a través de vistas `mtg_v1` versionadas con un consumidor de solo lectura, y un simulador separado intercambia JSON versionado validado contra un esquema empaquetado. La evidencia faltante y las simulaciones no disponibles se muestran como estados visibles en lugar de resultados inventados. - Seguridad: hashes de contraseña Argon2, protección CSRF, aprovisionamiento de cuentas, recuperación de contraseña y comprobaciones de autorización; producción y QA utilizan credenciales, datos y redes de contenedores separados. - Lanzamientos reproducibles: GitHub Actions controla pruebas, lint, formato, tipos y comprobaciones de humo de contenedores; el despliegue verifica la revisión de la imagen, el hash del archivo, la plataforma y las capas; las copias de seguridad cifradas y las comprobaciones de restauración aisladas respaldan la recuperación. Arquitectura: una aplicación web Flask + Waitress respaldada por SQLite para cuentas, mazos y la instantánea de investigación; una actualización en segundo plano extrae de las vistas `mtg_v1` de PostgreSQL; la aplicación puede llamar a un simulador privado mediante JSON versionado y una pasarela de modelos opcional. El despliegue utiliza Caddy para HTTPS y Docker Compose en DigitalOcean, con los puertos de la base de datos y del simulador mantenidos privados; QA está disponible en un subdominio separado para la revisión del propietario antes del lanzamiento a producción. Ejecutar localmente requiere Python 3.11+. La configuración utiliza un entorno virtual, `pip install -e '.[dev,postgres,legacy]'`, un script de configuración de base de datos, variables de entorno para la clave secreta, el modo de autenticación y los indicadores de lanzamiento, un comando CLI de creación de administrador y un comando de servicio. El CLI/paquete conserva el nombre histórico `sabermetrics` por compatibilidad. La ruta cEDH predeterminada respaldada por fixtures funciona sin credenciales de proveedor, PostgreSQL ni simulador; el corpus de investigación de producción y las cuentas privadas no se distribuyen con el repositorio. Se puede ejercitar un constructor determinista sin conexión mediante comandos CLI que listan y construyen paquetes de estrategia. La verificación utiliza pytest, ruff, black y mypy; la suite predeterminada se basa en fixtures y mocks, mientras que las integraciones en vivo con PostgreSQL, modelos y simulador son opcionales y las pruebas de modelos pueden generar cargos de API. CI también ejercita el comportamiento del paquete instalado, autenticación/recuperación, comentarios con entrega simulada y arranque de contenedor HTTP. La configuración de tipos registra exclusiones heredadas con alcance definido en lugar de reclamar cobertura completa. Alcance y limitaciones: esta es una aplicación centrada en Commander, no un motor de reglas completo; el goldfish mide patrones de juego modelados, no la probabilidad de victoria en multijugador; la cobertura de torneos refleja los datos fuente disponibles y la tasa de inclusión no es prueba de la calidad de las cartas; el soporte de paquetes de estrategia está limitado por el material curado y las capacidades del simulador; el despliegue de un solo host es una compensación operativa deliberada, no una afirmación de alta disponibilidad. Algunos módulos generadores originales permanecen como código de compatibilidad, con el producto generador activo en un repositorio separado. El proyecto es un proyecto de fans no oficial, no afiliado a Wizards of the Coast, y tiene licencia MIT.