New alert service
This commit is contained in:
@@ -50,9 +50,11 @@ class ProcurementService(StandardFastAPIService):
|
||||
'supplier_selection_history'
|
||||
]
|
||||
|
||||
# Initialize scheduler and rabbitmq client
|
||||
# Initialize scheduler, delivery tracking, and rabbitmq client
|
||||
self.overdue_po_scheduler = None
|
||||
self.delivery_tracking_service = None
|
||||
self.rabbitmq_client = None
|
||||
self.event_publisher = None
|
||||
|
||||
super().__init__(
|
||||
service_name="procurement-service",
|
||||
@@ -67,10 +69,12 @@ class ProcurementService(StandardFastAPIService):
|
||||
|
||||
async def _setup_messaging(self):
|
||||
"""Setup messaging for procurement service"""
|
||||
from shared.messaging.rabbitmq import RabbitMQClient
|
||||
from shared.messaging import RabbitMQClient, UnifiedEventPublisher
|
||||
try:
|
||||
self.rabbitmq_client = RabbitMQClient(settings.RABBITMQ_URL, service_name="procurement-service")
|
||||
await self.rabbitmq_client.connect()
|
||||
# Create unified event publisher
|
||||
self.event_publisher = UnifiedEventPublisher(self.rabbitmq_client, "procurement-service")
|
||||
self.logger.info("Procurement service messaging setup completed")
|
||||
except Exception as e:
|
||||
self.logger.error("Failed to setup procurement messaging", error=str(e))
|
||||
@@ -91,6 +95,15 @@ class ProcurementService(StandardFastAPIService):
|
||||
|
||||
self.logger.info("Procurement Service starting up...")
|
||||
|
||||
# Start delivery tracking service (APScheduler with leader election)
|
||||
from app.services.delivery_tracking_service import DeliveryTrackingService
|
||||
self.delivery_tracking_service = DeliveryTrackingService(self.event_publisher, settings)
|
||||
await self.delivery_tracking_service.start()
|
||||
self.logger.info("Delivery tracking service started")
|
||||
|
||||
# Store in app state for internal API access
|
||||
app.state.delivery_tracking_service = self.delivery_tracking_service
|
||||
|
||||
# Start overdue PO scheduler
|
||||
if self.rabbitmq_client and self.rabbitmq_client.connected:
|
||||
self.overdue_po_scheduler = OverduePOScheduler(
|
||||
@@ -106,6 +119,11 @@ class ProcurementService(StandardFastAPIService):
|
||||
"""Custom shutdown logic for procurement service"""
|
||||
self.logger.info("Procurement Service shutting down...")
|
||||
|
||||
# Stop delivery tracking service
|
||||
if self.delivery_tracking_service:
|
||||
await self.delivery_tracking_service.stop()
|
||||
self.logger.info("Delivery tracking service stopped")
|
||||
|
||||
# Stop overdue PO scheduler
|
||||
if self.overdue_po_scheduler:
|
||||
await self.overdue_po_scheduler.stop()
|
||||
@@ -142,7 +160,10 @@ from app.api import internal_transfer # Internal Transfer Routes
|
||||
from app.api import replenishment # Enhanced Replenishment Planning Routes
|
||||
from app.api import analytics # Procurement Analytics Routes
|
||||
from app.api import internal_demo
|
||||
from app.api import internal_delivery # Internal Delivery Tracking Routes
|
||||
from app.api import ml_insights # ML insights endpoint
|
||||
from app.api.expected_deliveries import router as expected_deliveries_router # Expected Deliveries Routes
|
||||
from app.api.internal_delivery_tracking import router as internal_delivery_tracking_router # NEW: Internal trigger endpoint
|
||||
|
||||
service.add_router(procurement_plans_router)
|
||||
service.add_router(purchase_orders_router)
|
||||
@@ -150,7 +171,10 @@ service.add_router(internal_transfer.router, tags=["internal-transfer"]) # Inte
|
||||
service.add_router(replenishment.router, tags=["replenishment"]) # RouteBuilder already includes full path
|
||||
service.add_router(analytics.router, tags=["analytics"]) # RouteBuilder already includes full path
|
||||
service.add_router(internal_demo.router)
|
||||
service.add_router(internal_delivery.router, tags=["internal-delivery"]) # Internal delivery tracking
|
||||
service.add_router(internal_delivery_tracking_router, tags=["internal-delivery-tracking"]) # NEW: Delivery alert trigger
|
||||
service.add_router(ml_insights.router) # ML insights endpoint
|
||||
service.add_router(expected_deliveries_router, tags=["expected-deliveries"]) # Expected deliveries endpoint
|
||||
|
||||
|
||||
@app.middleware("http")
|
||||
|
||||
Reference in New Issue
Block a user