这个项目能做什么
Deck Lab 是一个用于在单一工作空间中构建、研究和测试竞争性指挥官(万智牌)套牌的 Python/Flask Web 应用。用户可以编辑套牌、研究竞争性元游戏、查看卡牌信息并运行黄金鱼模拟;保存的套牌、账户和偏好设置会在会话间持久化。托管实例需要由所有者提供的账户。
README 中描述的关键能力:
- 套牌编辑与研究流程:公开研究结果来自持久化快照,带有修订跟踪、后台刷新和有界过期服务;过滤器和浏览器历史更新无需整页重建。
- 确定性领域逻辑:指挥官合法性、颜色标识、搭档组合和套牌大小均在代码中验证;策略包构建器确定性选择卡牌,模型输出被限制在单独验证的边界内用于解释。
- 显式数据契约:PostgreSQL 研究通过版本化的 `mtg_v1` 视图暴露给只读消费者,单独的模拟器通过针对打包模式验证的版本化 JSON 进行交换。缺失的证据和不可用的模拟以可见状态呈现,而非编造结果。
- 安全性:Argon2 密码哈希、CSRF 保护、账户开通、密码恢复和授权检查;生产环境和 QA 使用独立的凭据、数据和容器网络。
- 可复现发布:GitHub Actions 对测试、lint、格式、类型和容器冒烟检查进行门控;部署验证镜像修订、存档哈希、平台和层;加密备份和隔离恢复检查支持灾难恢复。
架构:一个 Flask + Waitress Web 应用,由 SQLite 支持账户、套牌和研究快照;后台刷新从 PostgreSQL `mtg_v1` 视图拉取;应用可以通过版本化 JSON 调用私有模拟器,以及可选模型网关。部署使用 Caddy 处理 HTTPS 和 Docker Compose 于 DigitalOcean,数据库和模拟器端口保持私有;QA 可在单独子域上供所有者在生产发布前查看。
本地运行需要 Python 3.11+。设置使用虚拟环境、`pip install -e '.[dev,postgres,legacy]'`、数据库设置脚本、用于密钥、认证模式和发布标志的环境变量、管理员创建 CLI 命令和服务命令。CLI/包出于兼容性保留了历史名称 `sabermetrics`。默认基于 fixture 的 cEDH 路径无需提供者凭据、PostgreSQL 或模拟器即可工作;生产研究语料库和私有账户不随仓库分发。可以通过 CLI 命令列出和构建策略包来演练离线确定性构建器。
验证使用 pytest、ruff、black 和 mypy;默认套件依赖 fixture 和 mock,而实时 PostgreSQL、模型和模拟器集成是可选的,模型测试可能产生 API 费用。CI 还演练已安装包行为、认证/恢复、带 mock 投递的反馈以及 HTTP 容器启动。类型配置记录了作用域内的传统排除项,而非声称完全覆盖。
范围与限制:这是一个面向指挥官的应用,不是完整规则引擎;黄金鱼度量的模拟玩法模式,而非多人胜率;锦标赛覆盖反映可用源数据,包含率并非卡牌质量的证明;策略包支持受限于精选材料和模拟器能力;单主机部署是有意的运维权衡,而非高可用性声明。一些原始生成器模块保留为兼容代码,活跃生成器产品位于单独仓库。该项目是非官方粉丝项目,与威世智公司无关,并以 MIT 许可发布。
评论
0 评分人数达到10人后显示
登录后参与讨论。