feat: event bus with Redpanda + AI insight consumer

- EventBusService: Kafka/Redpanda pub/sub with kafkajs, graceful fallback when broker unavailable
- Topics: call.completed, call.missed, agent.state
- AiInsightConsumer: on call.completed, fetches lead activity → OpenAI generates summary + suggested action → updates Lead entity on platform
- Disposition endpoint emits call.completed event after Ozonetel dispose
- EventsModule registered as @Global for cross-module injection
- Redpanda container added to VPS docker-compose
- Docker image rebuilt for linux/amd64 with kafkajs dependency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 09:38:02 +05:30
parent 3c06a01e7b
commit 3e2e7372cc
8 changed files with 311 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
import { Module, Global } from '@nestjs/common';
import { PlatformModule } from '../platform/platform.module';
import { EventBusService } from './event-bus.service';
import { AiInsightConsumer } from './consumers/ai-insight.consumer';
@Global()
@Module({
imports: [PlatformModule],
providers: [EventBusService, AiInsightConsumer],
exports: [EventBusService],
})
export class EventsModule {}