diff --git a/backend/schemas/calendar.py b/backend/schemas/calendar.py index 1ed48f2..540e902 100644 --- a/backend/schemas/calendar.py +++ b/backend/schemas/calendar.py @@ -88,6 +88,11 @@ class CalendarRequest(BaseModel): description="Data di inizio del calendario in formato YYYY-MM-DD. " "Se None, usa la data corrente.", ) + topic_overrides: Optional[dict[int, str]] = Field( + default=None, + description="Override topic per slot specifici. Chiave: indice slot (0-12), valore: topic. " + "Gli slot con override skipperanno la generazione topic LLM.", + ) class CalendarResponse(BaseModel): diff --git a/backend/services/generation_pipeline.py b/backend/services/generation_pipeline.py index 0e8f7de..f2840c7 100644 --- a/backend/services/generation_pipeline.py +++ b/backend/services/generation_pipeline.py @@ -307,8 +307,17 @@ class GenerationPipeline: slot.target_nicchia, ) - # Genera topic se non presente nello slot + # Genera topic se non presente nello slot. + # Controlla prima gli override passati dall'utente dallo Swipe File. topic = slot.topic + if not topic and request.topic_overrides and slot.indice in request.topic_overrides: + topic = request.topic_overrides[slot.indice] + logger.info( + "Topic override applicato | job_id=%s | slot=%d | topic=%s", + job_id, + slot.indice, + topic[:60], + ) if not topic: # Usa asyncio.to_thread per non bloccare l'event loop # (generate_topic usa time.sleep per inter_request_delay)