From cdc228ccf0a4b494514cb422b9f2e69c633f79a5 Mon Sep 17 00:00:00 2001 From: wangdl Date: Fri, 19 Jun 2026 21:24:33 +0800 Subject: [PATCH] fix: break circular dependency between queue-definitions and queue-service Extract queue name constants to queue.constants.ts to resolve the require cycle that caused 'Cannot read properties of undefined' at startup. Both queue-definitions.ts and queue.service.ts now import from the shared constants file. Co-Authored-By: Claude Opus 4.7 --- deploy/zhixi-nest-api.service | 2 +- deploy/zhixi-nest-worker.service | 6 ++--- src/infrastructure/queue/queue-definitions.ts | 2 +- src/infrastructure/queue/queue.constants.ts | 6 +++++ src/infrastructure/queue/queue.service.ts | 22 ++++++++++++++----- 5 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 src/infrastructure/queue/queue.constants.ts diff --git a/deploy/zhixi-nest-api.service b/deploy/zhixi-nest-api.service index 933c8d8..48065ea 100644 --- a/deploy/zhixi-nest-api.service +++ b/deploy/zhixi-nest-api.service @@ -16,7 +16,7 @@ TimeoutStopSec=30 # Environment Environment=NODE_ENV=production Environment=PORT=3000 -EnvironmentFile=/opt/zhixi/api-server/.env +EnvironmentFile=/opt/zhixi/env/.env.production # Security NoNewPrivileges=yes diff --git a/deploy/zhixi-nest-worker.service b/deploy/zhixi-nest-worker.service index a1ee121..e634cae 100644 --- a/deploy/zhixi-nest-worker.service +++ b/deploy/zhixi-nest-worker.service @@ -9,7 +9,7 @@ After=zhixi-nest-api.service Type=simple User=www-data Group=www-data -WorkingDirectory=/opt/zhixi/api-server +WorkingDirectory=/opt/zhixi/backend ExecStart=/usr/bin/node dist/src/worker.main.js Restart=always RestartSec=10 @@ -19,7 +19,7 @@ TimeoutStopSec=60 # Environment Environment=NODE_ENV=production -EnvironmentFile=/opt/zhixi/api-server/.env +EnvironmentFile=/opt/zhixi/env/.env.production # Memory limit (Worker jobs may consume memory) MemoryMax=512M @@ -28,7 +28,7 @@ MemoryMax=512M NoNewPrivileges=yes ProtectSystem=strict ProtectHome=yes -ReadWritePaths=/opt/zhixi/api-server/uploads +ReadWritePaths=/opt/zhixi/backend/uploads # Logging StandardOutput=journal diff --git a/src/infrastructure/queue/queue-definitions.ts b/src/infrastructure/queue/queue-definitions.ts index d977993..dbfb7a2 100644 --- a/src/infrastructure/queue/queue-definitions.ts +++ b/src/infrastructure/queue/queue-definitions.ts @@ -5,7 +5,7 @@ import { QUEUE_DOMAIN_EVENTS, QUEUE_AUDIT_LOG, QUEUE_FILE_CLEANUP, -} from './queue.service'; +} from './queue.constants'; // ═══════════════════════════════════════════════════════════════════════ // Queue Definition Registry diff --git a/src/infrastructure/queue/queue.constants.ts b/src/infrastructure/queue/queue.constants.ts new file mode 100644 index 0000000..87307cd --- /dev/null +++ b/src/infrastructure/queue/queue.constants.ts @@ -0,0 +1,6 @@ +export const QUEUE_AI_ANALYSIS = 'ai-analysis'; +export const QUEUE_DOCUMENT_IMPORT = 'document-import'; +export const QUEUE_NOTIFICATION = 'notification'; +export const QUEUE_DOMAIN_EVENTS = 'domain-events'; +export const QUEUE_AUDIT_LOG = 'audit-logs'; +export const QUEUE_FILE_CLEANUP = 'file-cleanup'; diff --git a/src/infrastructure/queue/queue.service.ts b/src/infrastructure/queue/queue.service.ts index c1e9eb0..52fd42c 100644 --- a/src/infrastructure/queue/queue.service.ts +++ b/src/infrastructure/queue/queue.service.ts @@ -6,12 +6,22 @@ import { PrismaService } from '../database/prisma.service'; import { Queue } from 'bullmq'; import { defaultJobOptionsFor } from './queue-definitions'; -export const QUEUE_AI_ANALYSIS = 'ai-analysis'; -export const QUEUE_DOCUMENT_IMPORT = 'document-import'; -export const QUEUE_NOTIFICATION = 'notification'; -export const QUEUE_DOMAIN_EVENTS = 'domain-events'; -export const QUEUE_AUDIT_LOG = 'audit-logs'; -export const QUEUE_FILE_CLEANUP = 'file-cleanup'; +export { + QUEUE_AI_ANALYSIS, + QUEUE_DOCUMENT_IMPORT, + QUEUE_NOTIFICATION, + QUEUE_DOMAIN_EVENTS, + QUEUE_AUDIT_LOG, + QUEUE_FILE_CLEANUP, +} from './queue.constants'; +import { + QUEUE_AI_ANALYSIS, + QUEUE_DOCUMENT_IMPORT, + QUEUE_NOTIFICATION, + QUEUE_DOMAIN_EVENTS, + QUEUE_AUDIT_LOG, + QUEUE_FILE_CLEANUP, +} from './queue.constants'; @Injectable() export class QueueService {