Model/backend/app/plan/router.py
2025-04-16 17:10:13 +01:00

46 lines
1.4 KiB
Python

import boto3
from fastapi import APIRouter, Depends, BackgroundTasks
from backend.app.dependencies import validate_token
from backend.app.plan.schemas import PlanTriggerRequest
from backend.app.config import get_settings
from utils.logger import setup_logger
logger = setup_logger()
router = APIRouter(
prefix="/plan",
tags=["plan"],
dependencies=[Depends(validate_token)],
responses={404: {"description": "Not found"}}
)
sqs_client = boto3.client("sqs")
@router.post("/trigger", status_code=202)
async def trigger_plan_entrypoint(body: PlanTriggerRequest, background_tasks: BackgroundTasks):
"""
Entry point for triggering the plan engine via SQS.
"""
logger.info("API triggered with body: %s", body)
settings = get_settings()
# Serialize the PlanTriggerRequest into JSON
try:
message_body = body.model_dump_json()
except Exception as e:
logger.error("Failed to serialize request body: %s", e)
return {"message": "Invalid request"}, 400
try:
response = sqs_client.send_message(
QueueUrl=settings.ENGINE_SQS_URL,
MessageBody=message_body
)
logger.info(f"SQS message sent. Message ID: {response.get('MessageId')}")
except Exception as e:
logger.error("Failed to send SQS message: %s", e)
return {"message": "Failed to trigger engine"}, 500
return {"message": "Plan job accepted"}