FROM node:20-alpine AS build
RUN npm install -g typescript@5
WORKDIR /app

COPY tsconfig.base.json ./
COPY prisma/ prisma/

# shared: 安装依赖 + prisma generate
COPY packages/shared/package.json packages/shared/tsconfig.json packages/shared/
RUN cd packages/shared && npm install && npx prisma generate --schema=../../prisma/schema.prisma

# mcp: 安装依赖（workspace:* → file: 引用）
COPY packages/mcp/package.json packages/mcp/tsconfig.json packages/mcp/
RUN cd packages/mcp && sed -i 's|"workspace:\*"|"file:../shared"|g' package.json && npm install

# 拷贝源码 + 编译
COPY packages/shared/src/ packages/shared/src/
COPY packages/mcp/src/ packages/mcp/src/

RUN tsc -p packages/shared/tsconfig.json
RUN tsc -p packages/mcp/tsconfig.json

# --- 精简运行时镜像 ---
FROM node:20-alpine AS runtime
WORKDIR /app

COPY --from=build /app/packages/shared/dist ./packages/shared/dist
COPY --from=build /app/packages/shared/package.json ./packages/shared/
COPY --from=build /app/packages/shared/node_modules ./packages/shared/node_modules
COPY --from=build /app/packages/mcp/dist ./packages/mcp/dist
COPY --from=build /app/packages/mcp/package.json ./packages/mcp/
COPY --from=build /app/packages/mcp/node_modules ./packages/mcp/node_modules

WORKDIR /app/packages/mcp
EXPOSE 3001
CMD ["node", "dist/index.js"]
