Fix orchestration saga failure due to schema mismatch and missing pandas
Root Causes Fixed:
1. BatchForecastResponse schema mismatch in forecasting service
- Changed 'batch_id' to 'id' (required field name)
- Changed 'products_processed' to 'total_products'
- Changed 'success' to 'status' with "completed" value
- Changed 'message' to 'error_message'
- Added all required fields: batch_name, completed_products, failed_products,
requested_at, completed_at, processing_time_ms, forecasts
- This was causing "11 validation errors for BatchForecastResponse"
which made the forecast service return None, triggering saga failure
2. Missing pandas dependency in orchestrator service
- Added pandas==2.2.2 and numpy==1.26.4 to requirements.txt
- Fixes "No module named 'pandas'" warning when loading AI enhancement
These issues prevented the orchestrator from completing Step 3 (generate_forecasts)
in the daily workflow, causing the entire saga to fail and compensate.
This commit is contained in:
@@ -242,13 +242,20 @@ async def generate_batch_forecast(
|
||||
if not inventory_product_ids:
|
||||
logger.info("No products found for forecasting", tenant_id=tenant_id)
|
||||
from app.schemas.forecasts import BatchForecastResponse
|
||||
now = datetime.now(timezone.utc)
|
||||
return BatchForecastResponse(
|
||||
batch_id=str(uuid.uuid4()),
|
||||
id=str(uuid.uuid4()),
|
||||
tenant_id=tenant_id,
|
||||
products_processed=0,
|
||||
forecasts_generated=0,
|
||||
success=True,
|
||||
message="No products found for forecasting"
|
||||
batch_name=getattr(request, 'batch_name', f"orchestrator-batch-{datetime.now().strftime('%Y%m%d')}"),
|
||||
status="completed",
|
||||
total_products=0,
|
||||
completed_products=0,
|
||||
failed_products=0,
|
||||
requested_at=now,
|
||||
completed_at=now,
|
||||
processing_time_ms=0,
|
||||
forecasts=None,
|
||||
error_message=None
|
||||
)
|
||||
|
||||
# Skip rate limiting for service-to-service calls (orchestrator)
|
||||
|
||||
Reference in New Issue
Block a user