demo seed change
This commit is contained in:
@@ -7,6 +7,7 @@ the enrichment pipeline.
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from aio_pika import connect_robust, IncomingMessage, Connection, Channel
|
||||
import structlog
|
||||
|
||||
@@ -112,9 +113,64 @@ class EventConsumer:
|
||||
# Enrich the event
|
||||
enriched_event = await self.enricher.enrich_event(event)
|
||||
|
||||
# Store in database
|
||||
# Check for duplicate alerts before storing
|
||||
async with AsyncSessionLocal() as session:
|
||||
repo = EventRepository(session)
|
||||
|
||||
# Check for duplicate if it's an alert
|
||||
if event.event_class == "alert":
|
||||
from uuid import UUID
|
||||
duplicate_event = await repo.check_duplicate_alert(
|
||||
tenant_id=UUID(event.tenant_id),
|
||||
event_type=event.event_type,
|
||||
entity_links=enriched_event.entity_links,
|
||||
event_metadata=enriched_event.event_metadata,
|
||||
time_window_hours=24 # Check for duplicates in last 24 hours
|
||||
)
|
||||
|
||||
if duplicate_event:
|
||||
logger.info(
|
||||
"Duplicate alert detected, skipping",
|
||||
event_type=event.event_type,
|
||||
tenant_id=event.tenant_id,
|
||||
duplicate_event_id=str(duplicate_event.id)
|
||||
)
|
||||
# Update the existing event's metadata instead of creating a new one
|
||||
# This could include updating delay times, affected orders, etc.
|
||||
duplicate_event.event_metadata = enriched_event.event_metadata
|
||||
duplicate_event.updated_at = datetime.now(timezone.utc)
|
||||
duplicate_event.priority_score = enriched_event.priority_score
|
||||
duplicate_event.priority_level = enriched_event.priority_level
|
||||
|
||||
# Update other relevant fields that might have changed
|
||||
duplicate_event.urgency = enriched_event.urgency.dict() if enriched_event.urgency else None
|
||||
duplicate_event.business_impact = enriched_event.business_impact.dict() if enriched_event.business_impact else None
|
||||
|
||||
await session.commit()
|
||||
await session.refresh(duplicate_event)
|
||||
|
||||
# Send notification for updated event
|
||||
await self._send_notification(duplicate_event)
|
||||
|
||||
# Publish to SSE
|
||||
await self.sse_svc.publish_event(duplicate_event)
|
||||
|
||||
logger.info(
|
||||
"Duplicate alert updated",
|
||||
event_id=str(duplicate_event.id),
|
||||
event_type=event.event_type,
|
||||
priority_level=duplicate_event.priority_level,
|
||||
priority_score=duplicate_event.priority_score
|
||||
)
|
||||
return # Exit early since we handled the duplicate
|
||||
else:
|
||||
logger.info(
|
||||
"New unique alert, proceeding with creation",
|
||||
event_type=event.event_type,
|
||||
tenant_id=event.tenant_id
|
||||
)
|
||||
|
||||
# Store in database (if not a duplicate)
|
||||
stored_event = await repo.create_event(enriched_event)
|
||||
|
||||
# Send to notification service (if alert)
|
||||
|
||||
Reference in New Issue
Block a user