fix: break circular dependency between queue-definitions and queue-service
All checks were successful
Deploy API Server / build-and-deploy (push) Successful in 45s

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 <noreply@anthropic.com>
This commit is contained in:
wangdl 2026-06-19 21:24:33 +08:00
parent 4fb652d273
commit cdc228ccf0
5 changed files with 27 additions and 11 deletions

View File

@ -16,7 +16,7 @@ TimeoutStopSec=30
# Environment # Environment
Environment=NODE_ENV=production Environment=NODE_ENV=production
Environment=PORT=3000 Environment=PORT=3000
EnvironmentFile=/opt/zhixi/api-server/.env EnvironmentFile=/opt/zhixi/env/.env.production
# Security # Security
NoNewPrivileges=yes NoNewPrivileges=yes

View File

@ -9,7 +9,7 @@ After=zhixi-nest-api.service
Type=simple Type=simple
User=www-data User=www-data
Group=www-data Group=www-data
WorkingDirectory=/opt/zhixi/api-server WorkingDirectory=/opt/zhixi/backend
ExecStart=/usr/bin/node dist/src/worker.main.js ExecStart=/usr/bin/node dist/src/worker.main.js
Restart=always Restart=always
RestartSec=10 RestartSec=10
@ -19,7 +19,7 @@ TimeoutStopSec=60
# Environment # Environment
Environment=NODE_ENV=production Environment=NODE_ENV=production
EnvironmentFile=/opt/zhixi/api-server/.env EnvironmentFile=/opt/zhixi/env/.env.production
# Memory limit (Worker jobs may consume memory) # Memory limit (Worker jobs may consume memory)
MemoryMax=512M MemoryMax=512M
@ -28,7 +28,7 @@ MemoryMax=512M
NoNewPrivileges=yes NoNewPrivileges=yes
ProtectSystem=strict ProtectSystem=strict
ProtectHome=yes ProtectHome=yes
ReadWritePaths=/opt/zhixi/api-server/uploads ReadWritePaths=/opt/zhixi/backend/uploads
# Logging # Logging
StandardOutput=journal StandardOutput=journal

View File

@ -5,7 +5,7 @@ import {
QUEUE_DOMAIN_EVENTS, QUEUE_DOMAIN_EVENTS,
QUEUE_AUDIT_LOG, QUEUE_AUDIT_LOG,
QUEUE_FILE_CLEANUP, QUEUE_FILE_CLEANUP,
} from './queue.service'; } from './queue.constants';
// ═══════════════════════════════════════════════════════════════════════ // ═══════════════════════════════════════════════════════════════════════
// Queue Definition Registry // Queue Definition Registry

View File

@ -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';

View File

@ -6,12 +6,22 @@ import { PrismaService } from '../database/prisma.service';
import { Queue } from 'bullmq'; import { Queue } from 'bullmq';
import { defaultJobOptionsFor } from './queue-definitions'; import { defaultJobOptionsFor } from './queue-definitions';
export const QUEUE_AI_ANALYSIS = 'ai-analysis'; export {
export const QUEUE_DOCUMENT_IMPORT = 'document-import'; QUEUE_AI_ANALYSIS,
export const QUEUE_NOTIFICATION = 'notification'; QUEUE_DOCUMENT_IMPORT,
export const QUEUE_DOMAIN_EVENTS = 'domain-events'; QUEUE_NOTIFICATION,
export const QUEUE_AUDIT_LOG = 'audit-logs'; QUEUE_DOMAIN_EVENTS,
export const QUEUE_FILE_CLEANUP = 'file-cleanup'; 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() @Injectable()
export class QueueService { export class QueueService {