feat(04-01): integrazione Unsplash in pipeline + CSVBuilder + export
- CSVBuilder.build_csv() e build_csv_content() accettano image_url_map opzionale - _resolve_image() risolve keyword->URL Unsplash con fallback keyword originale - _build_rows() chiama _resolve_image per cover, slides e cta image keywords - JobStatus ha campo image_url_map con persistenza su disco JSON - GenerationPipeline._resolve_unsplash_keywords() chiamato dopo batch LLM - Carica unsplash_api_key da settings.json, crea UnsplashService, chiama resolve_keywords - image_url_map salvato nel job JSON per riuso in export con edits - Export router recupera image_url_map dal job JSON e passa a build_csv_content - generate_single NON risolve Unsplash (velocità e riuso map job originale)
This commit is contained in:
@@ -106,23 +106,34 @@ async def download_csv_with_edits(
|
||||
|
||||
# Carica il calendario dal JSON del job
|
||||
import json
|
||||
from typing import Optional
|
||||
from backend.schemas.calendar import CalendarResponse
|
||||
|
||||
try:
|
||||
with open(job_path, "r", encoding="utf-8") as f:
|
||||
job_data = json.load(f)
|
||||
calendar = CalendarResponse.model_validate(job_data["calendar"])
|
||||
# Recupera image_url_map se presente (risoluzione Unsplash originale)
|
||||
image_url_map: Optional[dict[str, str]] = job_data.get("image_url_map")
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail=f"Errore nel caricamento del job: {str(e)}",
|
||||
)
|
||||
|
||||
# Genera il CSV con i dati modificati
|
||||
if image_url_map:
|
||||
logger.info(
|
||||
"Uso image_url_map dal job originale | job_id=%s | url_count=%d",
|
||||
job_id,
|
||||
len(image_url_map),
|
||||
)
|
||||
|
||||
# Genera il CSV con i dati modificati (+ URL Unsplash se disponibili)
|
||||
csv_content = _csv_builder.build_csv_content(
|
||||
posts=request.results,
|
||||
calendar=calendar,
|
||||
job_id=job_id,
|
||||
image_url_map=image_url_map,
|
||||
)
|
||||
|
||||
# Salva anche su disco come versione edited
|
||||
|
||||
Reference in New Issue
Block a user