feat(03-02): topic_overrides in CalendarRequest + pipeline wiring
- Aggiunto campo topic_overrides: Optional[dict[int, str]] a CalendarRequest - GenerationPipeline._run_generation ora controlla request.topic_overrides prima di chiamare LLM per generare il topic - Slot con override saltano la chiamata LLM per il topic - Log informativo quando un override viene applicato - Slot senza override continuano a funzionare come prima
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user