diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 71f6cfcb..472cce36 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -260,7 +260,8 @@ "Bash(git commit -m \"$(cat <<''EOF''\nfeat(admin-web): 实现 Dashboard 页面真实 API 接入\n\n## 概述\n将 admin-web Dashboard 页面从模拟数据改为真实 API 调用,\n使用 React Query 实现数据获取、缓存和自动刷新。\n\n## 新增文件\n- dashboardService.ts: Dashboard API 服务封装\n- useDashboard.ts: React Query hooks\n- dashboard.types.ts: Dashboard 类型定义\n\n## API 接入\n- /dashboard/stats: 统计卡片(总认种量、总用户数、省/市公司数)\n- /dashboard/charts: 趋势图表(支持 7d/30d/90d 周期切换)\n- /dashboard/region: 区域分布\n- /dashboard/activities: 最近活动\n\n## UI 优化\n- 添加加载骨架屏\n- 添加错误重试机制\n- 添加空数据提示\n- 优化图表周期切换交互\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n)\")", "Bash(npx next:*)", "Bash(npx prisma validate:*)", - "Bash(dir /s /b \"c:\\Users\\dong\\Desktop\\rwadurian\\backend\\services\\admin-service\\Dockerfile*\")" + "Bash(dir /s /b \"c:\\Users\\dong\\Desktop\\rwadurian\\backend\\services\\admin-service\\Dockerfile*\")", + "Bash(dir /b \"c:\\Users\\dong\\Desktop\\rwadurian\\frontend\")" ], "deny": [], "ask": [] diff --git a/backend/services/reporting-service/src/main.ts b/backend/services/reporting-service/src/main.ts index adfe6f24..d972c789 100644 --- a/backend/services/reporting-service/src/main.ts +++ b/backend/services/reporting-service/src/main.ts @@ -1,6 +1,7 @@ import { NestFactory } from '@nestjs/core'; import { ValidationPipe, Logger } from '@nestjs/common'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; +import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { AppModule } from './app.module'; async function bootstrap() { @@ -8,6 +9,26 @@ async function bootstrap() { const app = await NestFactory.create(AppModule); + // 连接 Kafka 微服务消费者 + const kafkaBrokers = (process.env.KAFKA_BROKERS || 'localhost:9092').split(','); + app.connectMicroservice({ + transport: Transport.KAFKA, + options: { + client: { + clientId: process.env.KAFKA_CLIENT_ID || 'reporting-service', + brokers: kafkaBrokers, + }, + consumer: { + groupId: process.env.KAFKA_GROUP_ID || 'reporting-service-group', + }, + subscribe: { + fromBeginning: false, + }, + }, + }); + + logger.log(`📡 Kafka consumer connecting to: ${kafkaBrokers.join(', ')}`); + // Global prefix app.setGlobalPrefix('api/v1'); @@ -44,6 +65,11 @@ async function bootstrap() { SwaggerModule.setup('api/docs', app, document); const port = process.env.PORT || 3008; + + // 启动所有微服务(包括 Kafka 消费者) + await app.startAllMicroservices(); + logger.log('📡 Kafka microservice started - listening for events'); + await app.listen(port); logger.log(`🚀 Reporting Service is running on: http://localhost:${port}`);