# syntax=docker/dockerfile:1.7
ARG NODE_VERSION=22.23.2-alpine3.24
FROM node:${NODE_VERSION} AS base
RUN apk add --no-cache libc6-compat openssl
RUN corepack enable && corepack prepare pnpm@10.13.1 --activate
WORKDIR /app
ENV TZ=UTC

FROM base AS deps
COPY pnpm-workspace.yaml pnpm-lock.yaml package.json .npmrc* ./
COPY turbo.json tsconfig.base.json ./
COPY apps/ai-service/package.json apps/ai-service/
COPY packages/types/package.json packages/types/
COPY packages/utils/package.json packages/utils/
COPY packages/host-connector/package.json packages/host-connector/
COPY packages/ecom-client/package.json packages/ecom-client/
COPY packages/pac-client/package.json packages/pac-client/
RUN pnpm install --frozen-lockfile

FROM deps AS build
COPY . .
RUN pnpm --workspace-concurrency=1 --filter '@pac/ai-service^...' build
WORKDIR /app/apps/ai-service
RUN AI_DATABASE_URL=postgresql://build:unused@localhost/unused pnpm exec prisma generate
RUN pnpm build && test -f dist/main.js

FROM base AS prod
ENV NODE_ENV=production
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/packages ./packages
COPY --from=build /app/apps/ai-service/node_modules ./apps/ai-service/node_modules
COPY --from=build /app/apps/ai-service/dist ./apps/ai-service/dist
COPY --from=build /app/apps/ai-service/generated ./apps/ai-service/generated
COPY --from=build /app/apps/ai-service/prisma ./apps/ai-service/prisma
COPY --from=build /app/apps/ai-service/package.json ./apps/ai-service/package.json
COPY deploy/ai-preflight.mjs ./deploy/ai-preflight.mjs
WORKDIR /app/apps/ai-service
EXPOSE 3104
CMD ["node", "--enable-source-maps", "dist/main.js"]
