FROM python:3.13-slim

# ffmpeg for audio processing + build deps for psycopg2
RUN apt-get update && apt-get install -y ffmpeg libpq-dev gcc && \
    rm -rf /var/lib/apt/lists/*

# uv package manager
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

WORKDIR /app

# Dependencies (cached separately from code)
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev

# Source code
COPY src/ ./src/

# Data directories
RUN mkdir -p conversations failed_uploads

EXPOSE 9000

CMD ["uv", "run", "uvicorn", "src.api.main:app", \
     "--host", "0.0.0.0", "--port", "9000", \
     "--proxy-headers", "--forwarded-allow-ips", "*", \
     "--timeout-keep-alive", "65", \
     "--ws-ping-interval", "20", "--ws-ping-timeout", "20"]
