# Solo MONITOR (dashboard paper) del portafoglio attivo. Niente runner/esecuzione reale
# (archiviati in Old/). v2.0.0+.
services:
  dashboard:
    build: .
    container_name: pythagoras-dashboard
    restart: unless-stopped
    command: ["uv", "run", "python", "-m", "src.live.dashboard", "--port", "8787"]
    ports:
      - "8787:8787"
    volumes:
      - ./data:/app/data:ro
      # token mainnet (sola lettura) per lo "Shadow live": conto/posizioni reali sulla dashboard.
      # Montato a runtime (NON nell'immagine: .env.mainnet e' dockerignored). Solo letture, nessun ordine.
      - ./.env.mainnet:/app/.env.mainnet:ro

  # IB Gateway (PAPER) per la RICERCA DATI Interactive Brokers — replica il setup provato di BuzWay
  # (scout). IBC fa login automatico headless; nessuna GUI desktop. API READ-ONLY (solo dati storici,
  # MAI ordini). Bind SOLO su 127.0.0.1 -> non esposto in rete. Credenziali in .env.ibgw (gitignored).
  # host 4002 -> container 4004 (socat paper), esattamente come nel connect("127.0.0.1", 4002).
  ib-gateway:
    image: ghcr.io/gnzsnz/ib-gateway:stable
    container_name: pythagoras-ibgw
    restart: unless-stopped
    env_file: .env.ibgw
    environment:
      TRADING_MODE: paper
      READ_ONLY_API: "yes"          # SOLO dati: nessun ordine possibile via API
      TWOFA_TIMEOUT_ACTION: restart
      TIME_ZONE: Europe/Rome
    ports:
      - "127.0.0.1:4002:4004"       # gateway paper (socat) raggiungibile solo da localhost dell'host
