FROM python:3.11-slim-bookworm AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY pyproject.toml ./
RUN pip install --no-cache-dir uv && \
    uv pip install --system --no-cache --index-strategy unsafe-best-match -r pyproject.toml

FROM python:3.11-slim-bookworm

RUN apt-get update && apt-get install -y --no-install-recommends \
    libreoffice \
    chromium \
    fontconfig \
    curl \
    libgl1 \
    libglib2.0-0 \
    && rm -rf /var/lib/apt/lists/*

ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
ENV APP_DATA_DIRECTORY=/app_data
ENV TEMP_DIRECTORY=/tmp/deckforge
ENV ORT_DISABLE_GPU=1
ENV ONNXRUNTIME_DEVICE=CPU

WORKDIR /app

COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
COPY . .

# Pre-download ONNX embedding model so it's baked into the image
RUN mkdir -p chroma/models && \
    curl -fsSL -o chroma/models/onnx.tar.gz \
      https://chroma-onnx-models.s3.amazonaws.com/all-MiniLM-L6-v2/onnx.tar.gz && \
    tar -xzf chroma/models/onnx.tar.gz -C chroma/models/

# Pre-build ChromaDB icons index so API starts instantly (not rebuilt each run)
RUN python -c "from services.icon_finder_service import ICON_FINDER_SERVICE; print('Icons index ready')"

EXPOSE 8000
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]
