mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-09-22 04:50:46 +02:00
161 lines
9.2 KiB
YAML
161 lines
9.2 KiB
YAML
services:
|
||
web:
|
||
build: .
|
||
container_name: mtg-deckbuilder-web
|
||
ports:
|
||
- "8080:8080"
|
||
environment:
|
||
PYTHONUNBUFFERED: "1"
|
||
TERM: "xterm-256color"
|
||
DEBIAN_FRONTEND: "noninteractive"
|
||
|
||
# ------------------------------------------------------------------
|
||
# Core UI Feature Toggles
|
||
# (Enable/disable visibility of sections; most default to off in code)
|
||
# ------------------------------------------------------------------
|
||
|
||
# UI features/flags
|
||
SHOW_LOGS: "1" # 1=enable /logs page; 0=hide
|
||
SHOW_SETUP: "1" # 1=show Setup/Tagging card; 0=hide (still runs if WEB_AUTO_SETUP=1)
|
||
SHOW_DIAGNOSTICS: "1" # 1=enable /diagnostics & /diagnostics/perf; 0=hide
|
||
ENABLE_PWA: "0" # 1=serve manifest/service worker (experimental)
|
||
ENABLE_THEMES: "1" # 1=expose theme selector; 0=hide (THEME still applied)
|
||
ENABLE_PRESETS: "0" # 1=show presets section
|
||
WEB_VIRTUALIZE: "1" # 1=enable list virtualization in Step 5
|
||
ALLOW_MUST_HAVES: "1" # 1=enable must-include/must-exclude cards feature; 0=disable
|
||
SHOW_MISC_POOL: "0"
|
||
|
||
# ------------------------------------------------------------------
|
||
# Random Build (Alpha) Feature Flags
|
||
# RANDOM_MODES: backend enablement (seeded selection endpoints)
|
||
# RANDOM_UI: enable Surprise/Reroll controls in UI
|
||
# RANDOM_MAX_ATTEMPTS: safety cap on retries for constraints
|
||
# RANDOM_TIMEOUT_MS: per-attempt timeout (ms) before giving up
|
||
# ------------------------------------------------------------------
|
||
|
||
# Random Modes (feature flags)
|
||
RANDOM_MODES: "0" # 1=enable random build endpoints and backend features
|
||
RANDOM_UI: "0" # 1=show Surprise/Theme/Reroll/Share controls in UI
|
||
RANDOM_MAX_ATTEMPTS: "5" # cap retry attempts
|
||
RANDOM_TIMEOUT_MS: "5000" # per-build timeout in ms
|
||
|
||
# Theming
|
||
THEME: "dark" # system|light|dark
|
||
|
||
# ------------------------------------------------------------------
|
||
# Setup / Tagging / Catalog Controls
|
||
# WEB_AUTO_SETUP: auto-run initial tagging & theme generation when needed
|
||
# WEB_AUTO_REFRESH_DAYS: refresh card data if older than N days (0=never)
|
||
# WEB_TAG_PARALLEL + WEB_TAG_WORKERS: parallel tag extraction
|
||
# THEME_CATALOG_MODE: merge (Phase B) | legacy | build | phaseb (merge synonyms)
|
||
# WEB_AUTO_ENFORCE: 1=run bracket/legal compliance auto-export JSON after builds
|
||
# WEB_CUSTOM_EXPORT_BASE: override export path base (optional)
|
||
# APP_VERSION: surfaced in UI/health endpoints
|
||
# ------------------------------------------------------------------
|
||
|
||
# Setup/Tagging performance
|
||
WEB_AUTO_SETUP: "1" # 1=auto-run setup/tagging when needed
|
||
WEB_AUTO_REFRESH_DAYS: "7" # Refresh cards.csv if older than N days; 0=never
|
||
WEB_TAG_PARALLEL: "1" # 1=parallelize tagging
|
||
WEB_TAG_WORKERS: "4" # Worker count when parallel tagging
|
||
THEME_CATALOG_MODE: "merge" # Use merged Phase B catalog builder (with YAML export)
|
||
THEME_YAML_FAST_SKIP: "0" # 1=allow skipping per-theme YAML on fast path (rare; default always export)
|
||
WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds
|
||
WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts
|
||
APP_VERSION: "dev" # Displayed version label (set per release/tag)
|
||
|
||
# ------------------------------------------------------------------
|
||
# Misc / Land Selection (Step 7) Environment Tuning
|
||
# Uncomment to fine-tune utility land heuristics. Theme weighting allows
|
||
# matching candidate lands to selected themes for bias.
|
||
# ------------------------------------------------------------------
|
||
|
||
# Misc land tuning (utility land selection – Step 7)
|
||
# MISC_LAND_DEBUG: "1" # 1=write misc land debug CSVs (post-filter, candidates); off by default unless SHOW_DIAGNOSTICS=1
|
||
# MISC_LAND_EDHREC_KEEP_PERCENT_MIN: "0.75" # Lower bound (0–1). When both MIN & MAX set, a random keep % in [MIN,MAX] is rolled each build
|
||
# MISC_LAND_EDHREC_KEEP_PERCENT_MAX: "1.0" # Upper bound (0–1) for dynamic EDHREC keep range
|
||
# MISC_LAND_EDHREC_KEEP_PERCENT: "0.80" # Legacy single fixed keep % (used only if MIN/MAX not both provided)
|
||
# (Optional theme weighting overrides)
|
||
# MISC_LAND_THEME_MATCH_BASE: "1.4" # Multiplier if at least one theme tag matches
|
||
# MISC_LAND_THEME_MATCH_PER_EXTRA: "0.15" # Increment per extra matching tag beyond first
|
||
# MISC_LAND_THEME_MATCH_CAP: "2.0" # Cap for total theme multiplier
|
||
|
||
# ------------------------------------------------------------------
|
||
# Deck Export / Directory Overrides (headless & web browsing paths)
|
||
# DECK_EXPORTS / DECK_CONFIG: override mount points inside container
|
||
# OWNED_CARDS_DIR / CARD_LIBRARY_DIR: inventory upload path (alias preserved)
|
||
# ------------------------------------------------------------------
|
||
|
||
# Paths (optional overrides)
|
||
# DECK_EXPORTS: "/app/deck_files" # Where the deck browser looks for exports
|
||
# DECK_CONFIG: "/app/config" # Where the config browser looks for *.json
|
||
# OWNED_CARDS_DIR: "/app/owned_cards" # Preferred path for owned inventory uploads
|
||
# CARD_LIBRARY_DIR: "/app/owned_cards" # Back-compat alias for OWNED_CARDS_DIR
|
||
|
||
# ------------------------------------------------------------------
|
||
# Headless / Non-interactive Build Configuration
|
||
# Provide commander or tag indices/names; toggles for which phases to include
|
||
# Counts optionally tune land/fetch/ramp/etc targets.
|
||
# ------------------------------------------------------------------
|
||
|
||
# Headless-only settings
|
||
# DECK_MODE: "headless" # Auto-run headless flow in CLI mode
|
||
# HEADLESS_EXPORT_JSON: "1" # 1=export resolved run config JSON
|
||
# DECK_COMMANDER: "" # Commander name query
|
||
# DECK_PRIMARY_CHOICE: "1" # Primary tag index (1-based)
|
||
# DECK_SECONDARY_CHOICE: "" # Optional secondary index
|
||
# DECK_TERTIARY_CHOICE: "" # Optional tertiary index
|
||
# DECK_PRIMARY_TAG: "" # Or tag names instead of indices
|
||
# DECK_SECONDARY_TAG: ""
|
||
# DECK_TERTIARY_TAG: ""
|
||
# DECK_BRACKET_LEVEL: "3" # 1–5
|
||
# DECK_ADD_LANDS: "1"
|
||
# DECK_ADD_CREATURES: "1"
|
||
# DECK_ADD_NON_CREATURE_SPELLS: "1"
|
||
# DECK_ADD_RAMP: "1"
|
||
# DECK_ADD_REMOVAL: "1"
|
||
# DECK_ADD_WIPES: "1"
|
||
# DECK_ADD_CARD_ADVANTAGE: "1"
|
||
# DECK_ADD_PROTECTION: "1"
|
||
# DECK_FETCH_COUNT: "3"
|
||
# DECK_DUAL_COUNT: ""
|
||
# DECK_TRIPLE_COUNT: ""
|
||
# DECK_UTILITY_COUNT: ""
|
||
# DECK_TAG_MODE: "AND" # AND|OR (if supported)
|
||
|
||
# Entrypoint knobs (only if you change the entrypoint behavior)
|
||
# APP_MODE: "web" # web|cli — selects uvicorn vs CLI
|
||
# HOST: "0.0.0.0" # Uvicorn bind host
|
||
# PORT: "8080" # Uvicorn port
|
||
# WORKERS: "1" # Uvicorn workers
|
||
# (HOST/PORT honored by entrypoint; WORKERS for multi-worker uvicorn if desired)
|
||
|
||
# ------------------------------------------------------------------
|
||
# Testing / Diagnostics Specific (rarely changed in compose)
|
||
# SHOW_MISC_POOL: "1" # (already above) expose misc pool debug UI if implemented
|
||
# ------------------------------------------------------------------
|
||
|
||
# ------------------------------------------------------------------
|
||
# Editorial / Theme Catalog (Phase D) Controls
|
||
# These drive automated description generation, popularity bucketing,
|
||
# YAML backfilling, and regression / metrics exports. Normally only
|
||
# used during catalog curation or CI.
|
||
# ------------------------------------------------------------------
|
||
# EDITORIAL_SEED: "1234" # Deterministic seed for description & inference ordering.
|
||
# EDITORIAL_AGGRESSIVE_FILL: "0" # 1=borrow extra synergies for sparse themes (<2 curated/enforced).
|
||
# EDITORIAL_POP_BOUNDARIES: "50,120,250,600" # Override popularity bucket boundaries (4 comma ints).
|
||
# EDITORIAL_POP_EXPORT: "0" # 1=emit theme_popularity_metrics.json alongside theme_list.json.
|
||
# EDITORIAL_BACKFILL_YAML: "0" # 1=enable YAML metadata backfill (description/popularity) on build.
|
||
# EDITORIAL_INCLUDE_FALLBACK_SUMMARY: "0" # 1=include description_fallback_summary block in JSON output.
|
||
# EDITORIAL_REQUIRE_DESCRIPTION: "0" # (lint script) 1=fail if a theme lacks description.
|
||
# EDITORIAL_REQUIRE_POPULARITY: "0" # (lint script) 1=fail if a theme lacks popularity bucket.
|
||
# EDITORIAL_MIN_EXAMPLES: "0" # (future) minimum curated example commanders/cards (guard rails).
|
||
# EDITORIAL_MIN_EXAMPLES_ENFORCE: "0" # (future) 1=enforce above threshold; else warn only.
|
||
volumes:
|
||
- ${PWD}/deck_files:/app/deck_files
|
||
- ${PWD}/logs:/app/logs
|
||
- ${PWD}/csv_files:/app/csv_files
|
||
- ${PWD}/config:/app/config
|
||
- ${PWD}/owned_cards:/app/owned_cards
|
||
working_dir: /app
|
||
restart: "no"
|