# Stage 1: Vite SPA build
FROM node:22-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2: nginx (frontend) + node (canlı veri backend) + Playwright/Chromium
# NOT: Chromium yalnızca doğrudan temin (EKAP anti-bot) ve ihale dokümanı
# indirme için gerekli. Sunucu darlığında DT_ENABLED=0 ile kapatılabilir;
# uygulama ve diğer tüm veri kaynakları Chromium olmadan da çalışır.
FROM node:22-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
 && apt-get install -y --no-install-recommends nginx ca-certificates \
 && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Playwright + Chromium (yalnızca chromium; sistem bağımlılıklarıyla)
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
ARG ENABLE_SEMANTIC_MATCH=0
ENV UYUM_GOMME=0
RUN npm init -y >/dev/null \
 && npm i --omit=dev playwright@1.62.1 \
 && if [ "$ENABLE_SEMANTIC_MATCH" = "1" ]; then npm i --omit=dev @huggingface/transformers@3; fi \
 && npx playwright install --with-deps chromium \
 && npm cache clean --force

# Frontend
COPY --from=build /app/dist /usr/share/nginx/html
COPY --from=build /app/nginx.conf /etc/nginx/sites-available/default

# Backend (Node builtin'leri + playwright)
COPY --from=build /app/server ./server
# Backend, ortak doğrulama ve iş kurallarını src/services altından import eder.
COPY --from=build /app/src ./src

# Kalıcı veri (Coolify'da /app/server/data volume olarak bağlı)
RUN mkdir -p /app/server/data
VOLUME ["/app/server/data"]

# Başlangıç: Node backend (3001) arka planda + nginx (80) ön planda.
RUN printf '#!/bin/sh\nset -e\nPORT=3001 node /app/server/index.js &\nexec nginx -g "daemon off;"\n' > /start.sh \
    && chmod +x /start.sh

EXPOSE 80
CMD ["/start.sh"]
