프로젝트 소개
Deck Lab은 경쟁적 Commander(Magic: The Gathering) 덱을 하나의 작업 공간에서 빌드하고, 리서치하고, 테스트하기 위한 Python/Flask 웹 애플리케이션이다. 사용자는 덱을 편집하고, 경쟁 메타게임을 조사하고, 카드 정보를 확인하고, 골드피시 시뮬레이션을 실행할 수 있다. 저장된 덱, 계정, 환경 설정은 세션을 넘어 유지된다. 호스팅 인스턴스는 소유자가 프로비저닝한 계정이 필요하다.
README에 설명된 주요 기능:
- 덱 편집 및 리서치 워크플로우: 공개 리서치 결과는 리비전 추적, 백그라운드 새로고침, 제한된 스테일 서빙을 갖춘 영속 스냅샷에서 제공된다. 필터와 브라우저 기록은 전체 페이지 재구축 없이 업데이트된다.
- 결정적 도메인 로직: Commander 적법성, 색 정체성, 파트너 조합, 덱 크기는 코드로 검증된다. 전략 팩 빌더는 카드를 결정적으로 선택하며, 모델 출력은 설명을 위한 별도의 검증된 경계에 국한된다.
- 명시적 데이터 계약: PostgreSQL 리서치는 읽기 전용 소비자를 가진 버전화된 `mtg_v1` 뷰를 통해 노출된다. 별도 시뮬레이터는 패키지된 스키마에 대해 검증된 버전화 JSON을 교환한다. 누락된 증거와 사용 불가능한 시뮬레이션은 허구적 결과 대신 가시적 상태로 표시된다.
- 보안: Argon2 비밀번호 해시, CSRF 보호, 계정 프로비저닝, 비밀번호 복구, 인가 검사. 프로덕션과 QA는 별도의 자격 증명, 데이터, 컨테이너 네트워크를 사용한다.
- 재현 가능한 릴리스: GitHub Actions가 테스트, 린트, 포맷, 타입, 컨테이너 스모크 검사를 게이트한다. 배포는 이미지 리비전, 아카이브 해시, 플랫폼, 레이어를 검증한다. 암호화된 백업과 격리된 복원 검사가 복구를 지원한다.
아키텍처: Flask + Waitress 웹 앱으로, 계정·덱·리서치 스냅샷은 SQLite가 뒷받침한다. 백그라운드 새로고침이 PostgreSQL `mtg_v1` 뷰에서 데이터를 가져온다. 앱은 버전화된 JSON을 통해 비공개 시뮬레이터와 선택적 모델 게이트웨이를 호출할 수 있다. 배포는 Caddy로 HTTPS를 처리하고 DigitalOcean에서 Docker Compose를 사용하며, 데이터베이스와 시뮬레이터 포트는 비공개로 유지된다. QA는 프로덕션 릴리스 전 소유자 검토를 위해 별도 서브도메인에서 제공된다.
로컬 실행에는 Python 3.11+가 필요하다. 설정은 가상 환경, `pip install -e '.[dev,postgres,legacy]'`, 데이터베이스 설정 스크립트, 비밀 키·인증 모드·롤아웃 플래그용 환경 변수, 관리자 생성 CLI 명령, 서브 명령을 사용한다. CLI/패키지는 호환성을 위해 기존 `sabermetrics` 이름을 유지한다. 기본 픽스처 기반 cEDH 경로는 공급자 자격 증명, PostgreSQL, 시뮬레이터 없이 작동한다. 프로덕션 리서치 말뭉치와 비공개 계정은 저장소에 배포되지 않는다. 오프라인 결정적 빌더는 전략 팩을 나열하고 빌드하는 CLI 명령으로 실행할 수 있다.
검증은 pytest, ruff, black, mypy를 사용한다. 기본 스위트는 픽스처와 목에 의존하며, 라이브 PostgreSQL·모델·시뮬레이터 통합은 옵트인이고 모델 테스트는 API 비용이 발생할 수 있다. CI는 설치된 패키지 동작, 인증/복구, 목 배달 피드백, HTTP 컨테이너 시작도 테스트한다. 타입 구성은 전체 커버리지를 주장하지 않고 범위가 제한된 레거시 예외를 기록한다.
범위와 한계: 이 앱은 전체 규칙 엔진이 아닌 Commander 중심 애플리케이션이다. 골드피싱은 모델링된 플레이 패턴을 측정하며 멀티플레이어 승률을 측정하지 않는다. 토너먼트 커버리지는 사용 가능한 소스 데이터를 반영하며, 포함률은 카드 품질의 증거가 아니다. 전략 팩 지원은 큐레이션된 자료와 시뮬레이터 기능에 의해 제한된다. 단일 호스트 배포는 고가용성 주장이 아닌 의도적 운영 트레이드오프다. 일부 원래 생성기 모듈은 호환성 코드로 남아 있으며, 활성 생성기 제품은 별도 저장소에 있다. 이 프로젝트는 비공식 팬 프로젝트로 Wizards of the Coast와 무관하며 MIT 라이선스다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.