mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 09:34:46 +08:00
@react-pdf/hyphenate@0.1.0 é ESM puro e só definia a condição `import` no exports map. O worker roda via tsx (CommonJS por padrão neste repo), então qualquer import estático de @react-pdf/renderer (usado pela exportação de dados LGPD) derrubava carregarDeps() do drain loop com ERR_PACKAGE_PATH_NOT_EXPORTED — e como register-handlers.ts registra os 12 handlers do event_log num só import chain, um pacote quebrado tirava o laço rápido de TODOS eles, não só do LGPD, caindo pro cron de 1x/min como única rede de segurança. - patches/@react-pdf__hyphenate.patch (via pnpm.patchedDependencies) acrescenta a condição `require` ao exports map: Node 22.12+/24 já sabe carregar ESM via require() quando o mapa permite. - Dockerfile e Dockerfile.worker: copia patches/ antes do `pnpm install --frozen-lockfile` (a otimização de cache de camada copiava só package.json+lockfile primeiro, e o install falhava sem encontrar o patch referenciado). - tests/unit/react-pdf-resolve-sob-tsx.test.ts: regressão via processo filho tsx real (mesma técnica de import-puro-sem-env.test.ts) usando require() — import() dinâmico não serve de aparato aqui porque sempre passa pelo loader ESM nativo do Node, que já honrava a condição `import` e nunca detectaria a quebra. Confirmado nos dois sentidos (aparato falha sem o patch, passa com ele) e provado no worker real: o warning "event-log drain OFF" some do log de boot depois do rebuild. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
28 lines
976 B
Docker
28 lines
976 B
Docker
# Worker 24/7 do agent-engine (fusão Vendaval) — processo long-running fora do Next.
|
|
# Roda TS direto via tsx (sem build): o worker é I/O-bound e o cold start não importa.
|
|
# ponytail: imagem single-stage com devDeps (tsx precisa); multi-stage + prune é Fase 4.
|
|
FROM node:22-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Procedência (doutrina de packaging, invariante 2).
|
|
LABEL org.opencontainers.image.source="https://github.com/melgarafael/DeskcommCRM" \
|
|
org.opencontainers.image.licenses="MIT" \
|
|
org.opencontainers.image.title="DeskcommCRM worker"
|
|
|
|
ARG APP_VERSION=dev
|
|
ENV APP_VERSION=$APP_VERSION
|
|
# pnpm fixado na versão do lockfile do repo (pnpm 10 bloquearia build scripts).
|
|
RUN corepack enable && corepack prepare pnpm@9.15.9 --activate
|
|
|
|
COPY package.json pnpm-lock.yaml ./
|
|
COPY patches ./patches
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
COPY . .
|
|
|
|
# Healthz do worker (bind 0.0.0.0 dentro do container).
|
|
EXPOSE 8787
|
|
|
|
CMD ["pnpm", "exec", "tsx", "workers/agent-worker/main.ts"]
|