From f771dc8f6e06100c116b609801dc107b8e612163 Mon Sep 17 00:00:00 2001 From: Developer Date: Thu, 4 Dec 2025 01:35:59 -0800 Subject: [PATCH] =?UTF-8?q?fix(presence-service):=20=E4=BF=AE=E5=A4=8D=20M?= =?UTF-8?q?etricsModule=20=E4=BE=9D=E8=B5=96=E6=B3=A8=E5=85=A5=EF=BC=8C?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=8F=90=E4=BE=9B=E4=BB=93=E5=BA=93=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MetricsCollectorService 需要 DAU 和 EventLog 仓库, 但这些在 InfrastructureModule 中通过符号注入, 导致循环依赖问题。改为在 MetricsModule 中直接提供这些依赖。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../infrastructure/metrics/metrics.module.ts | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/backend/services/presence-service/src/infrastructure/metrics/metrics.module.ts b/backend/services/presence-service/src/infrastructure/metrics/metrics.module.ts index 5fcea06e..582bc0b0 100644 --- a/backend/services/presence-service/src/infrastructure/metrics/metrics.module.ts +++ b/backend/services/presence-service/src/infrastructure/metrics/metrics.module.ts @@ -1,15 +1,35 @@ -import { Module, Global } from '@nestjs/common'; +import { Module, Global, forwardRef } from '@nestjs/common'; import { MetricsService } from './metrics.service'; import { MetricsController } from './metrics.controller'; import { MetricsCollectorService } from './metrics-collector.service'; import { RedisModule } from '../redis/redis.module'; -import { PersistenceModule } from '../persistence/persistence.module'; +import { PrismaService } from '../persistence/prisma/prisma.service'; +import { DailyActiveStatsMapper } from '../persistence/mappers/daily-active-stats.mapper'; +import { EventLogMapper } from '../persistence/mappers/event-log.mapper'; +import { DailyActiveStatsRepositoryImpl } from '../persistence/repositories/daily-active-stats.repository.impl'; +import { EventLogRepositoryImpl } from '../persistence/repositories/event-log.repository.impl'; +import { DAILY_ACTIVE_STATS_REPOSITORY } from '../../domain/repositories/daily-active-stats.repository.interface'; +import { EVENT_LOG_REPOSITORY } from '../../domain/repositories/event-log.repository.interface'; @Global() @Module({ - imports: [RedisModule, PersistenceModule], + imports: [RedisModule], controllers: [MetricsController], - providers: [MetricsService, MetricsCollectorService], + providers: [ + MetricsService, + MetricsCollectorService, + PrismaService, + DailyActiveStatsMapper, + EventLogMapper, + { + provide: DAILY_ACTIVE_STATS_REPOSITORY, + useClass: DailyActiveStatsRepositoryImpl, + }, + { + provide: EVENT_LOG_REPOSITORY, + useClass: EventLogRepositoryImpl, + }, + ], exports: [MetricsService], }) export class MetricsModule {}